当前位置: 首页 > 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.jsqmd.com/news/46962/

相关文章:

  • 2025 年热门海运集装箱行业知名厂家排行榜!
  • 完整教程:AtCoder真题及详细题解 ABC427C: Bipartize
  • 面向对象程序设计-前3次作业总结
  • [豪の算法奇妙冒险] 代码随想录算法训练营第三天 | 203-移除链表元素、707-设计链表、206-反转链表
  • 2025年11月北京/东城区/西城区/朝阳区/海淀区/丰台区/石景山区遗产继承律师,遗产咨询律所Top10专业推荐排行权威榜单
  • 2025年11月北京/东城区/西城区/朝阳区/海淀区/丰台区/石景山区遗产继承、遗产纠纷,遗产咨询律师事务所权威排行榜单:专业律所推荐与选择指南
  • hspice 写了一个振幅可变的电压源,并且可以进行直流偏执
  • 南屏晚钟
  • Linux初级命令练习:通过awk、sed如何批量创建用户
  • 详细介绍:压缩与缓存调优实战指南:从0到1根治性能瓶颈(四)
  • sqli-labs 1(Less-1-Less-10)新手解题思路 - 指南
  • PyMAF 2023 单张照片估计参数化人体
  • 实用指南:【设计模式】适配器模式(Adapter)
  • 完整教程:【人工智能】神经网络的优化器optimizer(四):Adam自适应动量优化器
  • 轻松速通:TTS播放、文件播放与录音的核心功能解析!
  • 2025 中国法兰阀门十大品牌推荐:密封升级 + 场景适配,优质厂家护航流体系统安全
  • FPGA专用CLKUSR时钟引脚严重警告——Cyclone 10 GX
  • OPCUA探讨(五)——客户端代码解读:监控变量值与报警
  • 2025 年度中国截止阀十大品牌推荐:绿色智造 + 特种工况突破,引领行业高质量发展
  • 修改DTS适配遥控用户码
  • nginx性能优化之tcp调优
  • 2025年11月安徽聚乙烯瓶、高阻隔瓶、聚酯瓶、农药瓶供应商排行榜:安徽金汇龙包装领跑行业
  • 2025年11月中国/安徽/聚乙烯瓶、高阻隔瓶、聚酯瓶、农药瓶厂家TOP10推荐:安徽金汇龙包装强势登顶
  • rich dataset 3D人体场景数据集
  • ICPC2025沈阳打铁日志
  • UModel 数据治理:运维世界模型构建实践
  • 【springboot】 WebMvcConfigurer的使用
  • 2025年11月21日
  • 实用指南:一文搞懂 DeepSeek API:兼容 OpenAI 接口的智能对话模型调用指南
  • 形容词Test