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

2025-11-20

CF

Problem - 982C - Codeforces(搜索)(dfs)

找最大删除边数,使得每一棵树的顶点数都为偶数

#include <bits/stdc++.h>
using namespace std;
#define LL long long
const LL mod = 998244353;
const int N=1e5+10;
vector<int>e[N];
int ans[N];int dfs(int u,int fa){for (int i = 0; i < e[u].size();i++){int v = e[u][i];if(v==fa)continue;ans[u] += dfs(v, u);}ans[u]++;return ans[u];
}int main()
{ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int n;cin >> n;for (int i = 0; i < n - 1;i++){int u, v;cin >> u >> v;e[u].push_back(v);e[v].push_back(u);}if(n%2){cout << -1 << endl;return 0;}dfs(1,0);int cnt = 0;for (int i = 1; i <= n;i++){if(ans[i]%2==0){cnt++;}}cout << cnt - 1 << endl;
}

Problem - 545C - Codeforces(贪心)(1500)

要让砍的树最多,则

  • 第1棵往左,最后一棵往右
  • 如果能往左,就往左
  • 如果不能往左,能往右,就往右倒
    为什么呢,因为如果第i棵树不能往左,不砍的话,就少砍一棵树,但是,如果往右的话,即使影响到下一棵树,也只是少砍一棵树,所以贪心最优
#include <bits/stdc++.h>
using namespace std;
#define LL long long
const LL mod = 998244353;
const int N=1e5+10;
int x[N], h[N];int main()
{ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int n;cin >> n;for (int i = 0; i < n;i++){cin >> x[i] >> h[i];}int t = 0;for (int i = 1; i < n-1;i++){if(x[i]-h[i]>x[i-1])t++;else if(x[i]+h[i]<x[i+1]){t++;x[i] += h[i];}}if(n==1){cout << 1 << endl;}else{cout << t + 2 << endl;}
}

Problem - 1081C - Codeforces(数学)(1500)(逆元)

要使k个砖块与左边颜色不同,用隔板法,把砖块分成k+1份,每份涂上与旁边不同的颜色即可,所以公式为:

\[C_{n-1}^k \cdot m(m-1)^k \]

[!warning]
qmi如果用LL,就全改LL
取模尽量多取

#include <bits/stdc++.h>
using namespace std;
#define LL long long
const LL mod = 998244353;
const int N=2010;
LL f[N], inv[N];
LL C(int n,int m){return f[n] * inv[m] % mod * inv[n - m] % mod;
}
LL qmi(LL a,LL b,LL p)
{LL res=1;while(b){if(b&1)res = res * a % p;a=a*a%p;b >>= 1;}return res;
}
int main()
{ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int n, m, k;cin >> n >> m >> k;f[0] = f[1] = inv[0] = inv[1] = 1;for (int i = 2; i <= n; i++){ // 求阶乘和单个数逆元f[i] = f[i - 1] * i % mod;inv[i] = mod - (mod / i) * inv[mod % i] % mod;}for (int i = 1; i <= n; i++){ // 求阶乘逆元inv[i] = inv[i - 1] * inv[i] % mod;}cout << C(n - 1, k) %mod *m%mod * qmi(m - 1, k, mod)%mod << endl;
}

dp解法
dp[i][j]表示前i个砖由j块满足题意
dp[i][j]dp[i-1][j]dp[i-1][j-1]*(m-1)(即第i块可以放m-1种颜色)

#include <bits/stdc++.h>
using namespace std;
#define LL long long
const LL mod = 998244353;
const int N=2010;
LL dp[N][N];
int n, m, k;int main()
{ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);cin >> n >> m >> k;for (int i = 1; i <= n;i++){dp[i][0] = m;for (int j = 1; j < min(k + 1, i);j++){dp[i][j] = dp[i - 1][j] + dp[i - 1][j - 1] * (m - 1) % mod;dp[i][j] %= mod;}}cout << dp[n][k] << endl;
}
http://www.zskr.cn/news/56656.html

相关文章:

  • 2025 年热门海运集装箱行业知名厂家排行榜!
  • 完整教程:AtCoder真题及详细题解 ABC427C: Bipartize
  • 面向对象程序设计-前3次作业总结
  • 南屏晚钟
  • 详细介绍:压缩与缓存调优实战指南:从0到1根治性能瓶颈(四)
  • 完整教程:【人工智能】神经网络的优化器optimizer(四):Adam自适应动量优化器
  • 2025 中国法兰阀门十大品牌推荐:密封升级 + 场景适配,优质厂家护航流体系统安全
  • OPCUA探讨(五)——客户端代码解读:监控变量值与报警
  • 2025 年度中国截止阀十大品牌推荐:绿色智造 + 特种工况突破,引领行业高质量发展
  • 2025年11月安徽聚乙烯瓶、高阻隔瓶、聚酯瓶、农药瓶供应商排行榜:安徽金汇龙包装领跑行业
  • 2025年11月中国/安徽/聚乙烯瓶、高阻隔瓶、聚酯瓶、农药瓶厂家TOP10推荐:安徽金汇龙包装强势登顶
  • 【springboot】 WebMvcConfigurer的使用
  • 2025年11月江苏/徐州vr设备、vr体验馆、5d影院、9d影院、拓普互动厂家推荐榜:拓普互动强势登顶
  • 2025年11月中国/江苏/徐州vr设备、vr体验馆、5d影院、9d影院、拓普互动厂家TOP10:拓普互动领跑榜单
  • 高考数学如何有效提分?一位家长关于分阶段选择数学老师的心得体会
  • 让 Maven 能找到本地 JAR 而无需把它上传到公共仓库:
  • TSMaster + SkyEye:更早、更快、更全面的数字化验证正在成为行业共识
  • python-oop-1
  • 2025 年国内水质采样器厂家市场排名与品牌影响力分析报告
  • Windows Server 2016 中文版、英文版下载 (2025 年 11 月更新)
  • 每日反思(2025年11月21日)
  • ARC 杂题乱做 #1
  • 工作小结——Qwen2-7B-Instruct调用
  • 最终留学中介文书口碑对决!哪家用户评价最炸裂?
  • 2025年11月新疆学历提升/成人学历/专升本/自考本科/高起专服务机构TOP10:新疆中研教育领跑
  • 2025留学中介排行榜TOP10大揭秘:高效文书服务
  • 留学中介文书用户好评榜!一半是行家!哪家口碑可靠?
  • 把JAVA的数字信封翻译成C#.NET的
  • debug - eclipseCPP + openocd + 引入arm-gcc makefile工程来单步调试 - 教程
  • 数字时代的质量新篇:当工厂开始“思考”