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

2025-11-21

CF

Problem - 1234C - Codeforces(贪心)

#include <bits/stdc++.h>
using namespace std;
#define LL long long
const LL mod = 998244353;
const int N=2e5+10;
string s[2];void solve()
{int n;cin >> n;cin >> s[0] >> s[1];int x = 0;for (int i = 0; i < n;i++){if(s[x][i]>'2'){x ^= 1;if(s[x][i]<='2'){cout << "NO\n";return;}}}if(x==0){cout << "NO\n";}else{cout << "YES\n";}
}int main()
{ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int T;cin >> T;while (T--){solve();}
}

Problem - 1689C - Codeforces(树形dp)(1500)

一道很板的树形dp还看了好久

#include <bits/stdc++.h>
using namespace std;
#define LL long long
const LL mod = 998244353;
const int N=3e5+10;
vector<int> e[N];
int cnt[N],dp[N];
//dp[i]:表示 i 被感染,最多能保留多少结点void dfs(int u,int fa){dp[u] = 0, cnt[u] = 1;int sum = 0;for (int i = 0; i < e[u].size();i++){int v = e[u][i];if(v==fa)continue;dfs(v, u);sum += dp[v];//sum存u的两个子结点都被感染,最多保存的结点数cnt[u] += cnt[v];}for (int i = 0; i < e[u].size();i++){int v = e[u][i];if(v==fa)continue;dp[u] = max(dp[u], sum - dp[v] + cnt[v] - 1);//dp[v1]+cnt[v2]-1,相当于保留 v2结点,加上v1被感染后最多能保留的结点数}
}void solve()
{int n;cin >> n;for (int i = 0; i <= n;i++){e[i].clear();}for (int i = 1; i < n; i++){int u, v;cin >> u >> v;e[u].push_back(v);e[v].push_back(u);}dfs(1, 0);cout << dp[1] << endl;
}int main()
{ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int T;cin >> T;while (T--){solve();}
}

Problem - 44H - Codeforces(dp)(1700虚高)

要注意看数组有没有越界

#include <bits/stdc++.h>
using namespace std;
#define LL long long
const LL mod = 998244353;
const int N=2e5+10;
LL dp[55][10];//记得开LL!!!
int a[55];int main()
{ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);string s;cin >> s;for (int i = 0; i < s.size();i++)a[i] = s[i] - '0';for (int i = 0; i <= 9;i++){dp[0][i] = 1;}for (int i = 0; i < s.size()-1;i++){for (int j = 0; j <= 9;j++){if((j+a[i+1])%2==0){dp[i + 1][(j + a[i + 1]) / 2] += dp[i][j];}else{dp[i + 1][(j + a[i + 1]) / 2] += dp[i][j];dp[i + 1][(j + a[i + 1]) / 2 + 1] += dp[i][j];}}}LL ans = 0;for (int i = 0; i<= 9;i++){ans += dp[s.size() - 1][i];}int flag = 1;for (int i = 0; i < s.size()-1;i++){if(abs(a[i]-a[i+1])>1)flag = 0;}ans -= flag;cout << ans << endl;
}

dfs解法!

要分清局部变量和全局变量
如果是递归的话,要用局部变量!!!

#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N=2e5+10;
int a[N];
int cnt,res;
int f[N][15];
int n;int dfs(int x,int lst){if(x==n)return 1;if(~f[x][lst])return f[x][lst];int cnt = a[x + 1] + lst;//注意这里f[x][lst] = dfs(x + 1, cnt / 2);if(cnt&1)f[x][lst] += dfs(x + 1, cnt / 2 + 1);return f[x][lst];
}signed main()
{ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);string s;cin >> s;n = s.size();s = " " + s;for (int i = 1; i <= n;i++){a[i] = s[i] - '0';}memset(f, -1, sizeof f);for (int i = 0; i <= 9;i++){res += dfs(1, i);}int flag = 1;for (int i = 1; i < n;i++){if(abs(a[i]-a[i+1])>1){flag = 0;break;}}res -= flag;cout << res << endl;
}
http://www.rkmt.cn/news/56759.html

相关文章:

  • Gephi如何支持MySQL数据的复杂查询
  • Fisrt Blog
  • c语言和python如何解决文本文件中“不同平台换行符不兼容”问题
  • 完整教程:政务系统信创改造中,金仓日志如何满足等保2.0三级审计要求
  • 如何使用IDM嗅探视频并下载?
  • java数据结构--LinkedList与链表 - 教程
  • Record-X
  • macos: 景观类动态的壁纸和屏保保存在哪里
  • nju实验二 译码器和编码器
  • 第四十六篇
  • 2025年送礼水果排行榜权威推荐,拉吾尤摩赣南脐橙荣登榜首
  • AI救星!8个写毕业论文的实用AI工具大揭秘
  • 数据血缘图在数据错误追溯中的应用指南
  • CSS基础语法 - 指南
  • 「Temp」目录
  • 高中学习机五大品牌终极横评:优缺点一览,找到最适合你的那一款!
  • 开发智联笔记项目时所遇问题(4)
  • 20251121周五日记
  • CrewAI 上手攻略:多 Agent 自动化处理复杂任务,让 AI 像员工一样分工协作
  • 开发智联笔记项目所遇问题
  • 实用指南:【记录】MAC本地微调大模型(MLX + Qwen2.5)并利用Ollama接入项目实战
  • 搜维尔科技:利用MANUS数据手套实现灵巧远程操作:对20自由度灵巧手进行控制
  • nju实验一选择器
  • AI浪潮下的新动向:协作、法律与未来工作
  • Day36:2025年10月26日,星期天,休息。
  • 成都合成树脂瓦使用寿命影响因素?成都佳英耀旺告诉你
  • Talent AI ——专家级大模型数据标注平台
  • 团队作业 3
  • for循环的详细解析for...of循环同时获取下标和data
  • [豪の算法奇妙冒险] 代码随想录算法训练营第三天 | 203-移除链表元素、707-设计链表、206-反转链表