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

2025-12-29

CF

Problem - E - Codeforces(二分好题)

二分找最大距离
check里直接放输出
注意要对a数组排序!!!

#include <bits/stdc++.h>
using namespace std;
#define LL long long
const LL mod = 998244353;
const int N=2e5+10;
LL a[N];bool check(LL n,LL k,LL x,LL d,bool tag){LL lst = 0,cnt=0;for (int i = 0; i < n;i++){if(a[i]-d>=lst){if(tag){for (int j = 0; cnt + j < k && lst + j <= a[i] - d;j++)cout << lst + j << " ";}cnt += a[i] - d - lst + 1;}lst = a[i] + d;}if(lst<=x){if(tag){for (int j = 0; cnt+j < k && lst + j <= x;j++){cout << lst + j << " ";}}cnt += x - lst + 1;}if(tag)cout << endl;return cnt >= k;
}void solve()
{LL n, k, x;cin >> n >> k >> x;for (int i = 0; i < n;i++){cin >> a[i];}sort(a, a + n);LL l = 0, r = x + 1;while(l+1<r){LL mid = l + r >> 1;if(check(n,k,x,mid,0))l = mid;elser = mid;}if(l==0){//特判,如果是0,直接按顺序输出即可for (int i = 0; i<k;i++){cout << i << " ";}cout << endl;return;}check(n, k, x, l, 1);
}int main()
{ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int T;cin >> T;while (T--){solve();}
}

Problem - F - Codeforces

Roots change, but the tree stands strong — so should your logic.
发现自己连LCA都不知道,寒假要花时间学图论
要训练自己好好读题,并且能简洁总结题意的能力
题意:
对于1~n的每个根,计算其 k 个的点的不同的 LCA(最近公共祖先)的个数,并求和
:$$ \sum_{r=1}^{n} |S_r| = |S_1| + |S_2| + \cdots + |S_n| $$

题解都看了好久……(太菜了我)
理解:对于几个根使得 \(u\) 其为LCA ,先把1当根结点,然后换根。

  • 根在 \(u\) 子树外(如果 \(u\) 子树的子结点能满足sz[u]>=k,即u可以作为当前根的LCA,所以计算可能的根的数量,即 \(u\) 之外点的数量n-sz[u]
  • 根在 \(u\) 子树内(假设是 \(v\) ,想像把那个根提上来,如果 \(u\) 子树的子结点数变成n-sz[v],所以同上,当n-sz[v]>=k,则有sz[v]个根使得 \(u\) 为LCA)。
  • 还有一种就是 \(u\) 为根,那就绝对满足,因为k<=n

tip:求每个根对k个点的不同的LCA,可以换成求每个点作为LCA时,可满足的根的数量

#include <bits/stdc++.h>
using namespace std;
#define LL long long
const LL mod = 998244353;
const int N=2e5+10;
vector<int> e[N];
LL ans;
int sz[N],n, k;void dfs(int u,int fa){sz[u] = 1;for(auto v:e[u]){if(v==fa)continue;dfs(v, u);sz[u] += sz[v];}for(auto v:e[u]){if(v==fa)continue;if(n-sz[v]>=k)//根在子树内ans += sz[v];}if(sz[u]>=k)//根在子树外ans += n - sz[u];
}void solve()
{cin >> n >> k;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);}ans = 0;dfs(1, 0);cout << ans + n << endl;
}int main()
{ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int T;cin >> T;while (T--){solve();}
}
http://www.jsqmd.com/news/161987/

相关文章:

  • 【课程设计/毕业设计】基于协同过滤算法的个性化音乐推荐系统基于协同过滤算法的音乐推荐系统【附源码、数据库、万字文档】
  • Git克隆超时?解决PyTorch开源项目下载失败问题
  • 大数据领域Doris与传统数据库的性能对比分析
  • PyTorch-CUDA-v2.8镜像支持哪些显卡?NVIDIA全系列兼容列表
  • 【课程设计/毕业设计】基于web的中医诊所预约挂号系统设计与实现约挂号、病历管理、药品库存、医生信息展示【附源码、数据库、万字文档】
  • PyTorch-CUDA镜像更新日志:v2.8带来哪些性能升级
  • 如何在NVIDIA显卡上运行PyTorch?使用CUDA-v2.8镜像轻松实现
  • python基于Android的个人理财家庭财务收支系统422vl 小程序
  • 零基础入门深度学习:使用PyTorch-CUDA-v2.8镜像快速上手
  • 产品说很简单,我写了1天:时间段组件的踩坑之路
  • 在HTTP协议中Keep Alive是什么意思
  • Jupyter Notebook单元格执行时间测量:PyTorch性能分析
  • PyTorch DataLoader打乱顺序shuffle原理剖析
  • 高效复现论文结果:借助PyTorch-CUDA-v2.8标准化实验环境
  • PyTorch安装过程中出现libcudnn错误?镜像内已修复
  • python基于Android的在线招聘求职平台的小程序3_015s5
  • Git标签管理PyTorch项目版本:release流程规范化
  • YOLOv5添加注意力机制:基于PyTorch的改进实现
  • Thread的睡眠与谦让:为什么它们是静态方法?
  • 嵌入式组件及其一些思考
  • 请求头中的请求头字段和实体头字段分别有什么作用?
  • 如何选择合适的CUDA版本?PyTorch-v2.8适配性全面评测
  • YOLOv11论文解读:创新点与PyTorch代码复现可能性
  • ARC062F Painting Graphs with AtCoDeer
  • 鸿蒙 3200 万设备背后:2026 生态 “深耕年” 的 3 大机遇与挑战
  • 大模型基础模型--手搓代码(Transformer和FA)
  • Diskinfo检测SSD寿命:确保GPU服务器长期稳定运行
  • 大模型Token消耗监控面板:实时查看用量与余额
  • PyTorch-CUDA-v2.8镜像安装全攻略:GPU加速深度学习训练一步到位
  • Java String类