正题

luogu
CF1061F


题目大意

给出n和k,现在有一颗n个点的满k叉树,每次查询可以问一个点是否在另外两个点的路径上,让你在 60×n60\times n60×n 次询问内得到根节点


解题思路

因为是满k叉数,可以先得到深度dep

每次随机找两个点,用 n 次查询判断这两个点路径之间的点数,如果为 dep×2−1dep\times 2-1dep×2−1 就是根节点两个不同子树中的叶子结点,那么根节点一定在该路径上,然后暴力判断那个点是根节点即可(到叶子结点路径长度为dep)

因为叶子结点的数量大于 n2\frac{n}{2}2n​,所以随机到两个叶子结点的概率是 14\frac{1}{4}41​,随机到不同子树的概率为 k−1k\frac{k-1}{k}kk−1​,所以找到符合条件的两个叶子结点的概率为 k−14k\frac{k-1}{4k}4kk−1​,当k=2时,概率最小,为18\frac{1}{8}81​

期望可以在规定次数内找到答案


code

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define ll long long
#define N 1510
using namespace std;
int n,k,x,y,dep,p[N][2],d[N][N];
char s[10];
int get(int x,int y,int g)//判断路径长度
{int sum=2;p[x][g]=p[y][g]=0;for(int i=1;i<=n;++i){if(i==x||i==y)continue;printf("? %d %d %d\n",x,i,y);fflush(stdout);scanf("%s",s);if(s[0]=='Y')sum++,p[i][g]=1;else p[i][g]=0;}return sum;
}
int main()
{srand(2018729);scanf("%d%d",&n,&k);x=n;y=1;while(x){x-=y;y*=k;dep++;}while(1){x=rand()%n+1;y=rand()%n+1;while(x==y||d[x][y]){x=rand()%n+1;y=rand()%n+1;}d[x][y]=1;d[y][x]=1;if(get(x,y,1)==dep*2-1){//找到了for(int i=1;i<=n;++i)//暴力判断那个点是根节点if(p[i][1]&&get(x,i,0)==dep){printf("! %d\n",i);return 0;}}}return 0;
}

【交互】【随机】Lost Root(CF1061F)相关推荐

  1. SSL/TLS协议交互流程分析

    本文参考 SSL/TLS协议运行机制的概述 tls运行机制,这里不细说,建议细看 HTTPS与TLS The Transport Layer Security (TLS) Protocol v1.2 ...

  2. mongodb 百万_1亿条记录的MongoDB数据库随机查询性能测试

    mongdb性能压力测试,随机查询,数据量1亿条记录 操作系统centos6.4x64位 从测试结果看,当mongodb将数据全部载入到内存后,查询速度根据文档的大小,性能瓶颈通常会是在网络流量和CP ...

  3. 生成随机字符串的几种常用方式

    写在前面 今天在学习数据库的时候想随机生成一些数据来插入到数据表中,但是一时想不起来如何生成随机内容,就整理了之前学过的一些生成随机字符串的命令,以备不时之需,希望对各位有所帮助. 生成随机字符串的几 ...

  4. 通过读取学生txt,进而实现随机选人(包含对应人物照片)并用GUI实现

    首先附上源代码 import tkinter as tk import random import threading import time from PIL import Image,ImageT ...

  5. python tkinter 随机抽奖程序

    1. 界面 import tkinter as tk import randoma = ["荀彧","荀攸","贾诩","郭嘉&q ...

  6. 为了更有效率地偷钱,Android root木马开始试水短信扣费诈骗

    本文讲的是 为了更有效率地偷钱,Android root木马开始试水短信扣费诈骗, 自2006年9月以来,我们就一直在监控Google Play商店有关Ztorg木马的各种新变异版本 ,到目前为止,我 ...

  7. Linux-打包压缩-date-rpm-yum-磁盘管理(分区fdisk/gdisk)-systemd-修改root密码

    打包压缩 压缩包工具.zip #zip压缩工具 .bz2 #bzip2压缩工具,只能压缩文件,会删除源文件.gz #gzip压缩工具,只能压缩文件,会删除源文件tar.gz #gzip压缩,使用tar ...

  8. [k8s] 第六章 Pod控制器详解(Controller-manager)

    本章节主要介绍各种Pod控制器的详细使用. Pod控制器介绍 Pod是kubernetes的最小管理单元,在kubernetes中,按照pod的创建方式可以将其分为两类: 自主式pod:kuberne ...

  9. kubernetes学习笔记之七: Ingress-nginx 部署使用

    一.Ingress 简介 在Kubernetes中,服务和Pod的IP地址仅可以在集群网络内部使用,对于集群外的应用是不可见的.为了使外部的应用能够访问集群内的服务,在Kubernetes 目前 提供 ...

  10. Docker容器学习梳理--日常操作总结

    使用Docker已有一段时间了,今天正好有空梳理下自己平时操作Docker时的一些命令和注意细节: Docker 命令帮助 $ sudo docker Commands:attach Attach t ...

最新文章

  1. XamarinEssentials教程清空键值
  2. AdonisUI - 用于 WPF 应用程序的轻量级 UI 工具包,提供经典但增强的 Windows 视觉效果...
  3. VS2017创建ASP.NET Core Web程序
  4. 【Servlet】过滤器技术
  5. UI实用|素材APP启动图标设计模板
  6. .NET Core中Quartz.NET的依赖注入
  7. 美国重金投资3D芯片项目!MIT+美独资公司攻关,旨在继续领先中国
  8. Android Lint 检查规则的定制(基本篇)
  9. CTR 预估模型简介--深度学习篇
  10. linux 添加udp端口映射,iptables下udp端口转发
  11. zuc算法代码详解_ZUC算法原理及实现过程.doc
  12. 通过子网掩码和ip地址计算网络地址和广播地址
  13. python 设置输入法为英文_python 怎么转化输入法
  14. 注塑缺陷浮纤的原因及解决对策
  15. mysql 将年月日转换成年_SQL数据库中怎么将时间格式转换到年和月?
  16. PS如何用制作BMP 256位色非压缩图片,供Easyboot作为背景
  17. 數據驅動的到底是什麼
  18. 【小游戏】2D游戏黄金矿工GoldMiner(关卡模式)
  19. nvidia 3d vision kit + opengl + 立体视觉程序开发
  20. 委托实现信用卡用户定时还款功能

热门文章

  1. re管理器Java_自定义布局管理器-FormLayout
  2. 汉字为什么能流传至今_汉字能流传至今,比毛不易还不易,它的同龄字统统都死掉了...
  3. 苏泊尔搭载华为鸿蒙系统,华为鸿蒙打算在一年内跨过生死线,拿下16%的市场份额...
  4. 高度平衡的二叉搜索树基础概念与经典题目(Leetcode题解-Python语言)
  5. [JavaWeb-MySQL]DQL_查询表中记录,语句
  6. 写出TREE-PREDECESSOR的伪代码(算法导论第三版12.2-3)
  7. linux常用命令 java,Java工程在Linux常用命令
  8. java8 stream案例分析
  9. python爬虫百度贴吧代码大全_零基础写python爬虫之抓取百度贴吧代码分享
  10. word List29