博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CodeForces 738E Subordinates
阅读量:6678 次
发布时间:2019-06-25

本文共 1179 字,大约阅读时间需要 3 分钟。

排序,构造。

相当于告诉我们一棵树$n$个节点,每个节点在哪一层,至少需要移动多少个节点,才能让这些节点变成一棵树。

按照层次排个序移动一下就可以了,优先选择那些不是$s$但是层次是$0$的节点,如果没有,那么再选择层次最高的。

#pragma comment(linker, "/STACK:1024000000,1024000000")#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;typedef long long LL;const double pi=acos(-1.0);void File(){ freopen("D:\\in.txt","r",stdin); freopen("D:\\out.txt","w",stdout);}template
inline void read(T &x){ char c = getchar(); x = 0; while(!isdigit(c)) c = getchar(); while(isdigit(c)) { x = x * 10 + c - '0'; c = getchar(); }}struct X{ int id,c;}t[200010];int n,s,ans;bool cmp(X a, X b){ return a.c
Q;int main(){ cin>>n>>s; for(int i=1;i<=n;i++) { t[i].id=i; cin>>t[i].c; if(t[i].c==0&&i!=s) { flag[i]=1; ans++; Q.push(i); } } if(t[s].c!=0) ans++,t[s].c=0; sort(t+1,t+1+n,cmp); int wei=n; for(int i=1;i<=n;i++) { if(flag[t[i].id]==1) continue; if(t[i].c==t[i-1].c) continue; if(t[i].c==t[i-1].c+1) continue; int need=t[i].c-t[i-1].c-1; int f=0; while(1) { f++; if(!Q.empty()) Q.pop(); else { if(wei

 

转载于:https://www.cnblogs.com/zufezzt/p/6393411.html

你可能感兴趣的文章
JavaScrip——练习(做悬浮框)
查看>>
从游戏开发到应用开发的转变
查看>>
UIApearance
查看>>
android: LayoutInflater使用
查看>>
phalcon的url大小写的问题
查看>>
Tair ldb(leveldb存储引擎)实现介绍
查看>>
【Swift 2.1】为 UIView 添加点击事件和点击效果
查看>>
[ROS]3 Linux编程练习
查看>>
Codeforces 67C Sequence of Balls 编辑距离 dp
查看>>
Git 创建仓库【转】
查看>>
8VC Venture Cup 2016 - Elimination Round C. Block Towers 二分
查看>>
epoll的LT和ET模式
查看>>
Android IOS WebRTC 音视频开发总结(六四)-- webrtc能走多远我不知道,但这个市场真实存在...
查看>>
文件的相对路径和绝对路径以及根相对路径
查看>>
Java-final
查看>>
选择排序(内测第0届第2题)
查看>>
IOS底层数据结构--class
查看>>
经典SQL语句大全_主外键_约束
查看>>
K贪心
查看>>
Cron表达式
查看>>