不难发现,每次询问结果一定是 (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_构造_思维题相关推荐

  1. Codeforces Round #493 (Div. 2) C. Convert to Ones 乱搞_构造_好题

    题意: 给你一个长度为 nnn 的 010101串 ,你有两种操作: 1.将一个子串翻转,花费 XXX 2.将一个子串中的0变成1,1变成0,花费 YYY 求你将这个01串变成全是1的串的最少花费. ...

  2. [APIO2017]考拉的游戏,构造与思维题

    正题 这题还挺好玩的,花了6h左右吧.ztO emofunc Orz 只有第三个subtask比其他人的更严格,其他的大致相同,最后一个subtask可以做到 O ( n 2 l o g 2 w ) ...

  3. 洛谷T44252 线索_分治线段树_思维题

    分治线段树,其实就是将标记永久化,到最后再统一下传所有标记. 至于先后顺序,可以给每个节点开一个时间戳. 一般地,分治线段树用于离线,只查询一次答案的题目. 本题中,标记要被下传 222 次. Cod ...

  4. CF1041F Ray in the tube构造_思维

    不难发现起点必定是一个点. 每次间隔的距离一定是 2k2^k2k,关键就是要判断两点是否在同一跳跃距离上可被同时覆盖. 我们可以对上边进行 x1≡x_{1}\equivx1​≡ x2mod(2∗dx) ...

  5. ☆【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 ...

  6. 字符串——BZOJ 3097: Hash Killer I【构造题,思维题】

    BZOJ 3097: Hash Killer I[构造题,思维题] 题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3097 题意:让你出一组 ...

  7. 【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+ ...

  8. codeforce 1311E. Construct the Binary Tree (构造,就是个模拟)

    ACM思维题训练集合 You are given two integers n and d. You need to construct a rooted binary tree consisting ...

  9. ACM思维题训练 Section A

    题目地址: 选题为入门的Codeforce div2/div1的C题和D题. 题解: A:CF思维联系–CodeForces -214C (拓扑排序+思维+贪心) B:CF–思维练习-- CodeFo ...

最新文章

  1. Java项目:精美网上音乐平台(前后端分离+java+vue+Springboot+ssm+mysql+maven+redis)
  2. 量化交易实战——互联网金融之四
  3. java学习(121):treeset排序集合
  4. Docker 方式安装 Nexus 私服
  5. media player 控件播放音乐与视频 0130 winform
  6. python input 与raw_input函数的区别
  7. 一个简单的iBatis入门例子
  8. java 32 64 性能,Java 64位的性能是否优于32位版本?
  9. c# 不同窗体之间传值和调用
  10. 【Access2007】将Excel表导入至Access2007的当中一张已存在的表之中
  11. CSI-RS资源配置
  12. 微软苏州集体抵制来自阿里、华为的跳槽者:请停止你的“奋斗逼”行为!
  13. 【机器视觉运动控制一体机小课堂】三分钟对图像进行ROI创建
  14. 大O表示法初学者指南
  15. 华为笔记本linux usb启动,华为MateBook D(2018) BIOS设置u盘启动教程
  16. Qt实现Qchart的打印和打印预览的几种方法
  17. 基于逻辑回归(Logistic Regression)的糖尿病视网膜病变(Diabetic Retinopathy)检测
  18. 坑 -- h5获取用户当前定位
  19. C#【保留小数点后位数】与【字符串数字格式化】
  20. java pinyin4j_java实现中文汉字转拼音 Pinyin4j的基本用法

热门文章

  1. JavaScript文件存储信息对象cookie编码生存期
  2. bootstrap 步骤条_无骨香酥炸鸡柳,做法原来如此简单,3个关键步骤,学会可以开店...
  3. build shop
  4. 11. 王道考研-二叉树的实现
  5. [蓝桥杯]基础练习 十六进制转八进制
  6. bzoj 1786 bzoj 1831: [Ahoi2008]Pair 配对(DP)
  7. jenkins+postman+newman环境搭建自动化测试
  8. 安卓图片处理全解:获取视频的缩略图
  9. 用自己数据集训练Mask_RCNN代码
  10. 用自己的数据集训练Mask-RCNN实现过程中的坑