当前位置: 首页 > news >正文

2026-05-21

CF

Problem - 137D - Codeforces

区间dp+分段dp
暴力修改字符串形成回文串,求得到不超过 \(k\) 个字符串的最小花费
训练码力的好题

#include <bits/stdc++.h>
using namespace std;
#define LL long long
//#define double long double
#define endl '\n'
#define ULL unsigned long long
#define PII pair<int, int>
const LL mod = 998244353;
const int N = 510;
int cost[N][N], dp[N][N];
string s;
int n;void Print(int now,int num){if(now==0||num==0)return;for (int i = 0; i < now;i++){if(dp[i][num-1]+cost[i+1][now]==dp[now][num]){Print(i, num - 1);int len = now - (i + 1) + 1;for (int j = i + 1; j <= i + 1 + len / 2 - 1;j++){s[j] = s[now - (j - i - 1)];}for (int j = i + 1; j <= now;j++){cout << s[j];}if(now!=n){cout << "+";}break;}}
}int main()
{ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int K;cin >> s >> K;n = s.size();s = " " + s;for (int len = 2; len <= n;len++){for (int l = 1; l + len - 1 <= n;l++){int r = l + len - 1;if(len==2){cost[l][r] = !(s[l] == s[r]);continue;}cost[l][r] = cost[l + 1][r - 1] + !(s[l] == s[r]);}}memset(dp, 0x3f, sizeof dp);dp[0][0] = 0;for (int i = 1; i <= n;i++){for (int j = 1; j <= K;j++){for (int k = 0; k < i;k++){dp[i][j] = min(dp[i][j], dp[k][j - 1] + cost[k + 1][i]);}}}int ans = 1e9;int num = n;for (int i = 1; i <= K;i++){if(dp[n][i]<ans){ans = dp[n][i];num = i;}}cout << ans << endl;Print(n, num);
}

Problem - 577B - Codeforces

注意:这里不是连续的子序列
要用鸽巢原理优化 \(n\) 的大小!!!
因为 \(n>m\) 时,一定会得到两个前缀和余数相等(余数是0 ~ m-1
然后01背包解决即可

#include <bits/stdc++.h>
using namespace std;
#define LL long long
//#define double long double
#define endl '\n'
#define ULL unsigned long long
#define PII pair<int, int>
const LL mod = 998244353;
const int N = 1e6+10;
int a[N];
int dp[1010][1010];int main()
{ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int n, m;cin >> n >> m;for (int i = 1; i <= n;i++){cin >> a[i];a[i] %= m;}if(n>m){cout << "YES\n";return 0;}for (int i = 1; i <= n;i++){dp[i][a[i]] = 1;for (int j = 0; j < m;j++){dp[i][j] |= dp[i - 1][j];dp[i][(j + a[i]) % m] |= dp[i - 1][j];}if(dp[i][0]){cout << "YES\n";return 0;}}cout << "NO\n";
}

bitset优化解法:

[!tip]
1️⃣ bitset 左移行为
对于 bitset<N>

bitset<N> b;  
b << k; // 左移 k 位
  • 要求0 ≤ k ≤ N
  • 结果
  • 左移 k 位,高位被丢弃
  • 低位补 0
  • 未定义行为k > N(超过 bitset 大小才有问题)。

[!info] 时间复杂度
bitset 大概把它分成:

1000 / 64 ≈ 16

块来处理。

//对于每个操作时间复杂度为 O(m/64)(较原先 O(m)优化一点点,会快一点)
dp << x  
dp >> (m - x)  
dp | something  
dp & mask

代码:

#include <bits/stdc++.h>
using namespace std;
#define LL long long
//#define double long double
#define endl '\n'
#define ULL unsigned long long
#define PII pair<int, int>
const LL mod = 998244353;
const int N = 1010;int main()
{ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int n, m;cin >> n >> m;if(n>m){cout << "YES\n";return 0;}bitset<N> dp, mask;for (int i = 0; i < m;i++){//限制范围mask[i] = 1;}for (int i = 1; i <= n; i++){int x;cin >> x;x %= m;dp |= ((dp << x) | (dp >> (m - x))) & mask;dp[x] = 1;//注意if(dp[0]){cout << "YES\n";return 0;}}cout << "NO\n";
}

Problem - 1153D - Codeforces

很妙的一道树形dp+贪心,代码不长,挺锻炼思维
思考根节点受几个叶子节点影响,然后找最大可能
另外这里叶子节点要自己判断一下,还有如果是求max的话,dp[u]先初始化为 inf

#include <bits/stdc++.h>
using namespace std;
#define LL long long
//#define double long double
#define endl '\n'
#define ULL unsigned long long
#define PII pair<int, int>
const LL mod = 998244353;
const int N = 3e5+10;
int op[N], dp[N];
vector<int> e[N];
int cnt;void dfs(int u,int fa){bool flag = 0;if(op[u]==1)dp[u] = 1e9;elsedp[u] = 0;for(auto v:e[u]){if(v==fa)continue;dfs(v, u);flag = 1;if(op[u]==1){dp[u] = min(dp[u], dp[v]);}else{dp[u] += dp[v];}}if(flag==0){//是叶子节点cnt++;dp[u] = 1;}
}int main()
{ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int n;cin >> n;for (int i = 1; i <= n;i++){cin >> op[i];}for (int i = 2; i <= n;i++){int fa;cin >> fa;e[fa].push_back(i);e[i].push_back(fa);}dfs(1, 0);cout << cnt - dp[1] + 1 << endl;
}
http://www.jsqmd.com/news/860724/

相关文章:

  • 172号卡:一个数字,看懂一个平台的诚意.首码10000 - 172号卡
  • 2026东莞正规搬家公司避坑指南 隐性消费套路大揭秘 - 从来都是英雄出少年
  • 5.21 最新!南京黄金回收榜单:3 家门店权威对比,附避坑攻略 - 资讯纵览
  • APK Installer:重新定义Windows运行Android应用的突破性方案
  • 2026芜湖黄金回收商家推荐:正规门店,监控录像保安全 - 品牌企业推荐师(官方)
  • Python爬虫实战:requests + BeautifulSoup4采集经典标靶网站哲理名言,并导出结构化文件!
  • 2026 杭州防水漏水维修公司靠谱品牌排名 - 资讯纵览
  • 2026年想在赣州买高性价比沙发 这些靠谱品牌放心选不踩坑 - 品牌企业推荐师(官方)
  • EASY-HWID-SPOOFER:Windows硬件指纹保护终极方案
  • Android OkHttp 连接 HTTPS 抛出 SSL 握手异常信任链如何解决
  • 2026年沛纳海售后测评:全国50大网点收费标准与服务全盘点 - 资讯纵览
  • 2026年UPS不间断电源厂家哪家强?从需求分析到验收维保的标准化操作手册 - 资讯纵览
  • 灯塔口碑好的养发馆品牌推荐?黑奥秘AI智能检测设备,改善效果可视化 - 美业信息观察
  • 猫抓Cat-Catch:浏览器视频下载与资源嗅探的终极解决方案
  • AMD Ryzen SMU Debug Tool完整指南:轻松掌握硬件级调试的5个关键步骤
  • Python初学者项目练习26--计算列表数字的和(内附列表操作总结)
  • Java智能地址解析终极指南:企业级架构设计与高性能实现方案
  • 扎带哪家好?工业扎带源头工厂认准浙江英得特,17 年深耕配线器材行业实力领跑 - 星城方舟
  • 深度探索C++对象模型 学习笔记 第五章 构造、解构、拷贝语意学(1)
  • 2026金属加工液流量开关、流量传感器排行榜:苏州贝特凭军工标准稳居榜首 - 资讯纵览
  • 【卷卷观察】Google I/O 炸场背后:AI 行业正在经历一场“越南战争“
  • 2026年一键生成论文工具实测排行,哪款真正适合顺利通关?
  • 臻品汇-甘孜州仁启方矩创新科技客服咨询AI流量赋能,重塑智能体验新标杆腾飞 - 资讯纵览
  • QueryExcel:Excel批量查询终极指南,5分钟搞定100个文件搜索难题
  • 基于STM32的温室大棚智能监控与无线调控系统设计
  • Harness怎样帮助大模型实现稳定落地?AI Agent开发过程的系统性工程化运行时环境与约束体系(附代码)
  • 2026 最新广西空压机源头厂家 TOP10 权威测评 - 资讯纵览
  • 南宁装修公司怎么选 金空间装饰谈透明化整装趋势 - 资讯纵览
  • 2026年外墙彩涂卷厂家深度测评:如何为建筑外墙匹配最佳方案? - 资讯纵览
  • LLamaEmbedder 为什么不准?(核心原因)