传送门

文章目录

  • 题意:
  • 思路:

题意:

给你一颗树,每次可以询问两个点的lcalcalca,询问次数不能超过⌊n2⌋\left \lfloor \frac{n}{2} \right \rfloor⌊2n​⌋,求它的根。
n≤1e3n\le1e3n≤1e3。

思路:

看到询问次数≤⌊n2⌋\le \left \lfloor \frac{n}{2} \right \rfloor≤⌊2n​⌋,比较容易想到每次询问两个点,那么询问哪两个点呢?比较容易想到询问叶子节点,所以我们只需要每次询问两个叶子的lcalcalca,如果他们的lcalcalca等于其中任意一个叶子,那说明根节点就是这个点了,否则就删掉这两个点,将新的叶子节点加入。一直到最后只剩一个点的时候,这个点就是lcalcalca了。

// Problem: D. Kuroni and the Celebration
// Contest: Codeforces - Ozon Tech Challenge 2020 (Div.1 + Div.2, Rated, T-shirts + prizes!)
// URL: https://codeforces.com/contest/1305/problem/D
// Memory Limit: 256 MB
// Time Limit: 1000 ms
//
// Powered by CP Editor (https://cpeditor.org)//#pragma GCC optimize("Ofast,no-stack-protector,unroll-loops,fast-math")
//#pragma GCC target("sse,sse2,sse3,ssse3,sse4.1,sse4.2,avx,avx2,popcnt,tune=native")
//#pragma GCC optimize(2)
#include<cstdio>
#include<iostream>
#include<string>
#include<cstring>
#include<map>
#include<cmath>
#include<cctype>
#include<vector>
#include<set>
#include<queue>
#include<algorithm>
#include<sstream>
#include<ctime>
#include<cstdlib>
#include<assert.h>
#define X first
#define Y second
#define L (u<<1)
#define R (u<<1|1)
#define pb push_back
#define mk make_pair
#define Mid (tr[u].l+tr[u].r>>1)
#define Len(u) (tr[u].r-tr[u].l+1)
#define random(a,b) ((a)+rand()%((b)-(a)+1))
#define db puts("---")
using namespace std;//void rd_cre() { freopen("d://dp//data.txt","w",stdout); srand(time(NULL)); }
//void rd_ac() { freopen("d://dp//data.txt","r",stdin); freopen("d://dp//AC.txt","w",stdout); }
//void rd_wa() { freopen("d://dp//data.txt","r",stdin); freopen("d://dp//WA.txt","w",stdout); }typedef long long LL;
typedef unsigned long long ULL;
typedef pair<int,int> PII;const int N=1000010,mod=1e9+7,INF=0x3f3f3f3f;
const double eps=1e-6;int n;
int d[N],cnt;
vector<int>v[N],temp;
int st[N];int query(int a,int b) {printf("? %d %d\n",a,b); fflush(stdout);int x; scanf("%d",&x);return x;
}int solve() {queue<int>q;for(int i=1;i<=n;i++) if(d[i]==1) q.push(i),st[i]=1;while(q.size()>1) {int a=q.front(); q.pop();int b=q.front(); q.pop();int root=query(a,b);if(root==a||root==b) return root;for(auto x:v[a]) if(!st[x]&&(--d[x]==1)) q.push(x);for(auto x:v[b]) if(!st[x]&&(--d[x]==1)) q.push(x);st[a]=st[b]=1; }for(int i=1;i<=n;i++) if(!st[i]) return i;return -1;
}int main()
{//  ios::sync_with_stdio(false);
//  cin.tie(0);scanf("%d",&n);for(int i=1;i<=n-1;i++) {int a,b; scanf("%d%d",&a,&b);d[a]++; d[b]++;v[a].pb(b); v[b].pb(a);}printf("! %d\n",solve()); fflush(stdout);return 0;
}
/**/

Ozon Tech Challenge 2020 (Div.1 + Div.2, Rated) D. Kuroni and the Celebration 交互 + 思维相关推荐

  1. Ozon Tech Challenge 2020 (Div.1 + Div.2) F. Kuroni and the Punishment 随机化

    传送门 文章目录 题意: 思路: 题意: 给你nnn个数,每次操作可以选择将某个数+1,−1+1,-1+1,−1,求最少进行多少次操作使得所有数都为正数且gcd>1gcd>1gcd> ...

  2. Ozon Tech Challenge 2020 (Div.1 + Div.2) E.Kuroni and the Score Distribution 构造

    传送门 文章目录 题意: 思路: 题意: 思路: 不难想到,长度为nnn的数组最多的满足条件的三元组序列是1,2,3....,n1,2,3....,n1,2,3....,n,对于每一个位置贡献为i−1 ...

  3. Ozon Tech Challenge 2020 (Div.1 + Div.2) C. Kuroni and Impossible Calcul 抽屉原理

    传送门 文章目录 题意: 思路: 题意: 给你一个数组ana_nan​,求∏1≤i<j≤n∣aj−ai∣modm\begin{matrix} \prod_{1\le i<j\le n} | ...

  4. Ozon Tech Challenge 2020 (Div.1 + Div.2, Rated, T-shirts + prizes!)

    Ozon Tech Challenge 2020 (Div.1 + Div.2, Rated, T-shirts + prizes!) 题号 题目 知识点 A Kuroni and the Gifts ...

  5. html css样式div属性,div css

    DIV+CSS是WEB设计标准,它是一种网页的布局方法.与传统中通过表格(table)布局定位的方式不同,它可以实现网页页面内容与表现相分离.提起DIV+CSS组合,还要从XHTML说起.XHTML是 ...

  6. xHTML+div布局:三个div,两边div宽度固定,中间div宽度自适应

    xHTML+div经常考题:三个div,两边div宽度固定,中间div宽度自适应. 和大家分享一个实现方式: 1.html代码 1 <div class="dyleft"&g ...

  7. html div套div,Web前端开发技术之Div+Css基础

    今天我们的课程内容有: CSS在页面风格设计中的作用 多个HTML页面调用一个CSS文件 DIV的创建与应用 用DIV+CSS的方式来写HTML页面 传统HTML的缺点和现在Css的优势Html的不足 ...

  8. div嵌套div的居中问题

    2019独角兽企业重金招聘Python工程师标准>>> div嵌套div,我们经常都用.布局是基础,扎实的基础会让你在解决问题的时候更柔韵有余.这是我出来工作之后深深的领悟.下面是我 ...

  9. DIV或者DIV里面的图片水平与垂直居中的方法 - 站住,别跑 - 博客园

    DIV或者DIV里面的图片水平与垂直居中的方法 <div class="box"><img /> </div> 水平居中的常用方式: text- ...

最新文章

  1. python【力扣LeetCode算法题库】300 最长上升子序列(动态规划)
  2. ++i和i++效率谁高
  3. SpringBoot应用日志通过logstash远程上传到ES
  4. mysql linux 关闭防火墙_linux常用命令和关闭防火墙
  5. L2TP协议笔记1---L2TP概念及协议流程分析
  6. Centos7完全卸载MySQL 安装 启动
  7. 关于Access2003的安装和下载
  8. 各个浏览器url带参限制
  9. Java获取照片EXIF信息
  10. 2007年日历带农历表_2007年农历阳历表 2007年农历表 2007年日历表
  11. 《中国云计算数据中心运营指南》
  12. 【C语言】操作符详解
  13. dah计算机原理,卢伟计算机原理themicrocomputerprinciplech3.pptx
  14. NullPointerException丢失异常堆栈信息
  15. 基于java家庭理财记账系统计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署
  16. 淘宝天猫商家运营,运营能力提升,淘宝竞争对手的分析,如何学习对手的优势运营方法
  17. dw php用文本框更新记录,用dreamweaver htm的网页 一个输入框 一个按钮 点按钮将输入框中的内容保存到本地 肿么写...
  18. python学习笔记 Network XHR json
  19. 书籍是人类进步的阶梯
  20. MYSQLg高级-----SQL注入的理解(初级篇)以及如何防止注入

热门文章

  1. hutol json null值没了_JSON数据处理框架Jackson精解第一篇-序列化与反序列化核心用法...
  2. eks volumn s3_威客电竞 深渊联赛S3欧洲区总决赛,Secret成就八连冠
  3. 当女朋友问你会不会出轨的时候,该怎么回答?
  4. 了解IT行业前沿应用,关注数据与算法之美
  5. 大数据告诉你,中国女人有多勤奋
  6. 一文读懂 HMM 模型和 Viterbi 算法
  7. 网易10万+课程迅速刷屏又迅速被封:“违规”背后的思考
  8. 电脑睡眠快捷键_电脑快速进入睡眠的快捷键是什么?
  9. python能不能自动写代码_微软最强 Python 自动化工具开源了!不用写一行代码
  10. 使用remi安装php70,Linux下使用yum安装LNMP环境