CF1041E Tree Reconstruction_构造_思维题
不难发现,每次询问结果一定是 (i,n)(i,n)(i,n), 而 iii 出现的次数恰好是 iii 到 i′i'i′ 的距离(i′i'i′ 是第一个不与 iii 相等的数)。我们可以将这颗树构造成一条链,然后就 AC 了。
Code:
#include<cstdio>
#include<cstdlib>
#include<algorithm>
using namespace std;
const int maxn = 1000 + 5;
int idx1[maxn], idx2[maxn], arr[maxn],A[maxn], n, pos;
bool cmp(int i,int j){ return idx1[i] < idx1[j]; }
inline bool insert(int x, int h){for(int i = h;i <= n; ++i) if(!arr[i]) { arr[i] = x; return true; }return false;
}
inline void fail(){ printf("NO"); exit(0); }
int main()
{scanf("%d",&n);for(int i = 1;i < n; ++i) { scanf("%d%d",&idx1[i],&idx2[i]); A[i] = i; if(idx1[i] > idx2[i]) swap(idx1[i], idx2[i]); }sort(A + 1, A + n , cmp);arr[n] = n;for(int i = n - 1;i >= 1; --i){int cur = A[i], pre = A[i - 1]; if(idx1[cur] == n || idx2[cur] != n) fail();if(idx1[cur] != idx1[pre]) {arr[i] = idx1[cur];int a = idx1[pre] + 1, pos = i + 1;while(a < idx1[cur]) { if(!insert(a, pos)) fail(); ++a; }}}for(int i = 1;i <= n; ++i) if(!arr[i]) fail();printf("YES\n");for(int i = 1;i < n; ++i) printf("%d %d\n",arr[i], arr[i + 1]);return 0;
}
转载于:https://www.cnblogs.com/guangheli/p/9845112.html
CF1041E Tree Reconstruction_构造_思维题相关推荐
- Codeforces Round #493 (Div. 2) C. Convert to Ones 乱搞_构造_好题
题意: 给你一个长度为 nnn 的 010101串 ,你有两种操作: 1.将一个子串翻转,花费 XXX 2.将一个子串中的0变成1,1变成0,花费 YYY 求你将这个01串变成全是1的串的最少花费. ...
- [APIO2017]考拉的游戏,构造与思维题
正题 这题还挺好玩的,花了6h左右吧.ztO emofunc Orz 只有第三个subtask比其他人的更严格,其他的大致相同,最后一个subtask可以做到 O ( n 2 l o g 2 w ) ...
- 洛谷T44252 线索_分治线段树_思维题
分治线段树,其实就是将标记永久化,到最后再统一下传所有标记. 至于先后顺序,可以给每个节点开一个时间戳. 一般地,分治线段树用于离线,只查询一次答案的题目. 本题中,标记要被下传 222 次. Cod ...
- CF1041F Ray in the tube构造_思维
不难发现起点必定是一个点. 每次间隔的距离一定是 2k2^k2k,关键就是要判断两点是否在同一跳跃距离上可被同时覆盖. 我们可以对上边进行 x1≡x_{1}\equivx1≡ x2mod(2∗dx) ...
- ☆【CodeForces - 764C】Timofey and a tree (思维题,树的性质)
题干: Each New Year Timofey and his friends cut down a tree of n vertices and bring it home. After tha ...
- 字符串——BZOJ 3097: Hash Killer I【构造题,思维题】
BZOJ 3097: Hash Killer I[构造题,思维题] 题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3097 题意:让你出一组 ...
- 【HDU - 5916】Harmonic Value Description (构造,思维,SJ题)
题干: The harmonic value of the permutation p1,p2,⋯pnp1,p2,⋯pn is ∑i=1n−1gcd(pi.pi+1)∑i=1n−1gcd(pi.pi+ ...
- codeforce 1311E. Construct the Binary Tree (构造,就是个模拟)
ACM思维题训练集合 You are given two integers n and d. You need to construct a rooted binary tree consisting ...
- ACM思维题训练 Section A
题目地址: 选题为入门的Codeforce div2/div1的C题和D题. 题解: A:CF思维联系–CodeForces -214C (拓扑排序+思维+贪心) B:CF–思维练习-- CodeFo ...
最新文章
- Java项目:精美网上音乐平台(前后端分离+java+vue+Springboot+ssm+mysql+maven+redis)
- 量化交易实战——互联网金融之四
- java学习(121):treeset排序集合
- Docker 方式安装 Nexus 私服
- media player 控件播放音乐与视频 0130 winform
- python input 与raw_input函数的区别
- 一个简单的iBatis入门例子
- java 32 64 性能,Java 64位的性能是否优于32位版本?
- c# 不同窗体之间传值和调用
- 【Access2007】将Excel表导入至Access2007的当中一张已存在的表之中
- CSI-RS资源配置
- 微软苏州集体抵制来自阿里、华为的跳槽者:请停止你的“奋斗逼”行为!
- 【机器视觉运动控制一体机小课堂】三分钟对图像进行ROI创建
- 大O表示法初学者指南
- 华为笔记本linux usb启动,华为MateBook D(2018) BIOS设置u盘启动教程
- Qt实现Qchart的打印和打印预览的几种方法
- 基于逻辑回归(Logistic Regression)的糖尿病视网膜病变(Diabetic Retinopathy)检测
- 坑 -- h5获取用户当前定位
- C#【保留小数点后位数】与【字符串数字格式化】
- java pinyin4j_java实现中文汉字转拼音 Pinyin4j的基本用法
热门文章
- JavaScript文件存储信息对象cookie编码生存期
- bootstrap 步骤条_无骨香酥炸鸡柳,做法原来如此简单,3个关键步骤,学会可以开店...
- build shop
- 11. 王道考研-二叉树的实现
- [蓝桥杯]基础练习 十六进制转八进制
- bzoj 1786 bzoj 1831: [Ahoi2008]Pair 配对(DP)
- jenkins+postman+newman环境搭建自动化测试
- 安卓图片处理全解:获取视频的缩略图
- 用自己数据集训练Mask_RCNN代码
- 用自己的数据集训练Mask-RCNN实现过程中的坑