当前位置: 首页 > 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.zskr.cn/news/177414.html

相关文章:

  • 大数据领域Doris与传统数据库的性能对比分析
  • 【课程设计/毕业设计】基于协同过滤算法的个性化音乐推荐系统基于协同过滤算法的音乐推荐系统【附源码、数据库、万字文档】
  • PyTorch-CUDA镜像更新日志:v2.8带来哪些性能升级
  • Jupyter Notebook单元格执行时间测量:PyTorch性能分析
  • 在HTTP协议中Keep Alive是什么意思
  • PyTorch DataLoader打乱顺序shuffle原理剖析
  • Thread的睡眠与谦让:为什么它们是静态方法?
  • 嵌入式组件及其一些思考
  • ARC062F Painting Graphs with AtCoDeer
  • GitHub热门项目推荐:PyTorch-CUDA-v2.8开箱即用深度学习容器
  • SSH隧道转发可视化界面:远程调试PyTorch模型的新方法
  • 从本地到云端:迁移PyTorch项目使用CUDA加速推理
  • conda环境冲突怎么办?直接使用PyTorch-CUDA-v2.8纯净镜像
  • Java的包装类
  • CUDA安装头疼?PyTorch-CUDA镜像已自动完成所有配置
  • CUDA版本与PyTorch对应关系表:避免安装踩坑
  • PyTorch-CUDA-v2.8镜像支持ARM架构GPU服务器
  • 万维易源API与jmeter查询快递物流
  • http定义了几种不同的请求方法
  • 清华镜像源列表更新:PyTorch相关包下载地址大全
  • Docker Compose环境变量注入:动态配置PyTorch参数
  • 3个OpenTK最具价值的功能和应用场景
  • Matlab Simulink下的柔性直流输电系统四端网络无功补偿与电压稳定控制策略
  • AI初创团队必看:用PyTorch镜像快速构建MLOps流水线
  • 【计算机毕业设计案例】基于SpringBoot的办公管理系统设计与实现员工考勤工作任务安排(程序+文档+讲解+定制)
  • amesim一维仿真:汽车热管理、空调系统及整车热管理建模指南
  • 轻松运行CNN模型:PyTorch+CUDA镜像实测性能提升5倍
  • diskinfo SMART信息解读:判断SSD是否需要更换
  • springboot房屋租赁信息线上管理系统的设计与实现_7o5t2mu1
  • 【计算机毕业设计案例】基于java的动漫网站设计与实现基于springBoot的动漫分享系统的设计与实现(程序+文档+讲解+定制)