1407C-Chocolate Bunny

Description

Link

Analysis

题目概述

交互题

给出一个 1→n1\to n1→n 的排列(1≤n≤1041\le n\le10^41≤n≤104),最多可以询问 2n2n2n 次,对于每个询问 x,yx,yx,y,给出 axmodaya_x\space mod\space a_yax​ mod ay​ 的值,求原排列

分析

对于任何一组询问 x,yx,yx,y,ax,aya_x,a_yax​,ay​ 必然存在大小关系,设 ax<aya_x<a_yax​<ay​

则对于询问 x,yx,yx,y,axmoday=axa_x\space mod\space a_y=a_xax​ mod ay​=ax​

对于询问 y,xy,xy,x,(aymodax)<ax<ay(a_y\space mod\space a_x)<a_x<a_y(ay​ mod ax​)<ax​<ay​

通过两次询问,一定能确定 ax,aya_x,a_yax​,ay​ 中的最小者

与此同时,排列中的最大数 nnn 是无法通过模运算直接得出的

-

由上述结论,通过构造 2(n−1)2(n-1)2(n−1) 次询问,即可直接确定整个序列中 n−1n-1n−1 个较小的数

则剩余的最后一个数一定为 nnn

-

考虑如何构造 2(n−1)2(n-1)2(n−1) 次询问:

对于每一组询问 x,yx,yx,y 和 y,xy,xy,x,较小者一定确定,较大者一定不确定

因此,可以考虑维护一组询问中较大者的位置,不断将其与后续的数进行询问,并维护该最大值(该过程可顺次遍历实现,思想类似于递归?),则经过 2(n−1)2(n-1)2(n−1) 次询问后,所记录的位置即 nnn 的位置

Code

#include <iostream>
#include <cstring>
#include <algorithm>
#include <vector>
using namespace std;constexpr const int N = 1e4 + 10;int a[N], n, a1, a2, tmax, cnt;inline void ask(int l, int r)
{cout << "? " << l << " " << r << endl;
}int main()
{cin.tie(0);cout.tie(0);ios::sync_with_stdio(0);cin >> n;int cur = 1;for(int i = 2; i <= n; i++){ask(cur, i);cin >> a1;ask(i, cur);cin >> a2;if(a1 > a2){a[cur] = a1;cur = i;}elsea[i] = a2;}a[cur] = n;cout <<"! ";for(int i = 1; i <= n; i++)cout << a[i] << " ";return 0;
}

Tag

交互、全局维护、模运算

CodeForces 1K-1600R-1407C Chocolate Bunny相关推荐

  1. 1407C. Chocolate Bunny(交互,推导)

    交互题还是很难搞呀~ C. Chocolate Bunny(交互,推导) 假设ai%aj=x假设a_i\%a_j=x假设ai​%aj​=x aj%ai=ya_j\%a_i=yaj​%ai​=y 其实就 ...

  2. C. Chocolate Bunny(思维)

    题目传送门 Chocolate Bunny 题目大意 求一个长度为n的数组 每次可以输入两个值i和j询问,将会得到一个为pimodpjp_i\ mod\ p_jpi​ mod pj​返回值,最多可以进 ...

  3. C. Chocolate Bunny

    https://codeforces.com/contest/1407/problem/C 交互题 对于i,j,如果ai%aj<aj%ai,则aj<ai.每次登都进行两个数的前后的相互询问 ...

  4. codeforces1407C Chocolate Bunny

    https://codeforces.com/contest/1407/problem/C 因为是1-n的排列,那么如果pi%pj<pj%pi,那么一定是pj=pj % pi,每次随便找两个没确 ...

  5. C. Chocolate Bunny(思维+规律)

    https://codeforces.com/contest/1407/problem/C 题意:交互题,每次最多询问i,j的pimodpj的值,问最后这个长度为n的排列是什么. 首先考虑到题目给的最 ...

  6. Codeforces Round #669 (Div. 2)

    那天晚上和同学打球打的有点晚,结果就鸽了,现在来补一下 A - Ahahahahahahahaha 直接看原数组中0的个数cnt0和1的个数cnt1,谁多留谁即可,注意留1的时候要留偶数个. #def ...

  7. Codeforces Round #257 (Div. 2) C. Jzzhu and Chocolate

    C. Jzzhu and Chocolate time limit per test 1 second memory limit per test 256 megabytes input standa ...

  8. CodeForces - 31D Chocolate【几何】【连通块】

    题目链接:https://codeforces.com/contest/31/problem/D #include <iostream> #include <cstdio> # ...

  9. 解题报告(十八)数论题目泛做(Codeforces 难度:2000 ~ 3000 + )

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量的题解和代码,题目难度不一 ...

最新文章

  1. c# 经验谈:巧用Expression表达式 解决类似于sql中 select in 的查询(适合于中小型项目)...
  2. 神话人物的现代版简历
  3. java检查两个字符串是否包含,java判断一个字符串是否包含另外一个字符串,java另外一个,要检查一个字符串是否包含...
  4. 马化腾:如果今天我才创业 会做什么切入中国互联网
  5. ROS 教程——从入门到入土
  6. 中子射线照相检测技术
  7. LAME 使用/参数说明, 很好的程序
  8. 从文本生成场景图(1)——SPICE:Semantic Propositional Image Caption Evaluation
  9. 暗黑破坏神3 夺魂之镰曝光“威斯特玛”城背景
  10. oracle ip on_logon_trigger,透过Trigger监控Logon和Logoff
  11. 万字详解大数据平台异地多机房架构实践
  12. 上级对下级用通知合适吗_通知一般用于上级对下级
  13. FPGA——输入原理图实现按键控制发光二极管的亮灭
  14. 湖北武汉劳务员报考劳务员的工程劳务管理建筑七大员报考
  15. 产品宣传数据投放广告指标
  16. SpringCloud Alibaba 微服务 — 微服务网关 Gateway
  17. Element Table 反选
  18. 2020年茶艺师(中级)多少分及格及茶艺师(中级)考试APP
  19. 【网站SEO优化】选择什么样的关键词最重要!
  20. 使用Zxing实现拍照,选取图片识别二维码

热门文章

  1. RT-Thread学习笔记——邮箱
  2. html 磨砂 原理,使用HTML和CSS设计磨砂玻璃效果
  3. python中stringvar的用法_Python tkinter.StringVar方法代码示例
  4. 深入理解C#中var关键字的用法
  5. Win10删除IE图标
  6. Cocos2D教程:使用SpriteBuilder和Cocos2D 3.x开发横版动作游戏——Part 2
  7. 外企就很舒服?聊聊我在外企的工作体验
  8. zepto - 实现滑动翻页
  9. luogu P2698 [USACO12MAR]花盆Flowerpot
  10. 完美体验 微软WP7智能手机七大功能亮点