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

相关文章:

  • 【课程设计/毕业设计】基于web的中医诊所预约挂号系统设计与实现约挂号、病历管理、药品库存、医生信息展示【附源码、数据库、万字文档】
  • PyTorch-CUDA镜像更新日志:v2.8带来哪些性能升级
  • 如何在NVIDIA显卡上运行PyTorch?使用CUDA-v2.8镜像轻松实现
  • 零基础入门深度学习:使用PyTorch-CUDA-v2.8镜像快速上手
  • Jupyter Notebook单元格执行时间测量:PyTorch性能分析
  • 请求头中的请求头字段和实体头字段分别有什么作用?
  • 如何选择合适的CUDA版本?PyTorch-v2.8适配性全面评测
  • Java String类
  • 使用PyTorch镜像跑通第一个神经网络:MNIST分类实战
  • SSH隧道转发可视化界面:远程调试PyTorch模型的新方法
  • PyTorch-CUDA-v2.8镜像支持ARM架构GPU服务器
  • Diskinfo历史数据分析:预测GPU服务器磁盘故障
  • http定义了几种不同的请求方法
  • Matlab Simulink下的柔性直流输电系统四端网络无功补偿与电压稳定控制策略
  • Markdown绘制流程图:清晰表达PyTorch模型结构
  • ubuntu24.04.3关机唤醒
  • YOLOv5模型剪枝压缩:基于PyTorch的轻量化方案
  • (加交叉验证)基于XGBoost的数据多变量回归预测 (多输入单输出)
  • 告别复杂依赖冲突:PyTorch-v2.8镜像内置完整CUDA工具链
  • WebRTC 连接建立流程
  • HuggingFace Transformers集成PyTorch-CUDA:轻松加载大模型
  • Conda环境导出为yml文件:共享PyTorch配置给团队成员
  • 08. 图像的边缘检测
  • HuggingFace Dataset流式加载:处理超大规模token数据集
  • Git下载超大模型文件失败?使用huggingface-cli缓存机制解决
  • 1953-2025年《全国农产品成本收益资料汇编》
  • JiyuTrainer可视化界面:一键启动PyTorch训练任务
  • 查找文献(信息学奥赛一本通- P2125)
  • Conda环境删除恢复:误删后如何找回PyTorch配置
  • Markdown表格对比不同PyTorch版本特性