CodeForces 1K-1600R-1407C Chocolate Bunny
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相关推荐
- 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 其实就 ...
- C. Chocolate Bunny(思维)
题目传送门 Chocolate Bunny 题目大意 求一个长度为n的数组 每次可以输入两个值i和j询问,将会得到一个为pimodpjp_i\ mod\ p_jpi mod pj返回值,最多可以进 ...
- C. Chocolate Bunny
https://codeforces.com/contest/1407/problem/C 交互题 对于i,j,如果ai%aj<aj%ai,则aj<ai.每次登都进行两个数的前后的相互询问 ...
- codeforces1407C Chocolate Bunny
https://codeforces.com/contest/1407/problem/C 因为是1-n的排列,那么如果pi%pj<pj%pi,那么一定是pj=pj % pi,每次随便找两个没确 ...
- C. Chocolate Bunny(思维+规律)
https://codeforces.com/contest/1407/problem/C 题意:交互题,每次最多询问i,j的pimodpj的值,问最后这个长度为n的排列是什么. 首先考虑到题目给的最 ...
- Codeforces Round #669 (Div. 2)
那天晚上和同学打球打的有点晚,结果就鸽了,现在来补一下 A - Ahahahahahahahaha 直接看原数组中0的个数cnt0和1的个数cnt1,谁多留谁即可,注意留1的时候要留偶数个. #def ...
- 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 ...
- CodeForces - 31D Chocolate【几何】【连通块】
题目链接:https://codeforces.com/contest/31/problem/D #include <iostream> #include <cstdio> # ...
- 解题报告(十八)数论题目泛做(Codeforces 难度:2000 ~ 3000 + )
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量的题解和代码,题目难度不一 ...
最新文章
- c# 经验谈:巧用Expression表达式 解决类似于sql中 select in 的查询(适合于中小型项目)...
- 神话人物的现代版简历
- java检查两个字符串是否包含,java判断一个字符串是否包含另外一个字符串,java另外一个,要检查一个字符串是否包含...
- 马化腾:如果今天我才创业 会做什么切入中国互联网
- ROS 教程——从入门到入土
- 中子射线照相检测技术
- LAME 使用/参数说明, 很好的程序
- 从文本生成场景图(1)——SPICE:Semantic Propositional Image Caption Evaluation
- 暗黑破坏神3 夺魂之镰曝光“威斯特玛”城背景
- oracle ip on_logon_trigger,透过Trigger监控Logon和Logoff
- 万字详解大数据平台异地多机房架构实践
- 上级对下级用通知合适吗_通知一般用于上级对下级
- FPGA——输入原理图实现按键控制发光二极管的亮灭
- 湖北武汉劳务员报考劳务员的工程劳务管理建筑七大员报考
- 产品宣传数据投放广告指标
- SpringCloud Alibaba 微服务 — 微服务网关 Gateway
- Element Table 反选
- 2020年茶艺师(中级)多少分及格及茶艺师(中级)考试APP
- 【网站SEO优化】选择什么样的关键词最重要!
- 使用Zxing实现拍照,选取图片识别二维码
热门文章
- RT-Thread学习笔记——邮箱
- html 磨砂 原理,使用HTML和CSS设计磨砂玻璃效果
- python中stringvar的用法_Python tkinter.StringVar方法代码示例
- 深入理解C#中var关键字的用法
- Win10删除IE图标
- Cocos2D教程:使用SpriteBuilder和Cocos2D 3.x开发横版动作游戏——Part 2
- 外企就很舒服?聊聊我在外企的工作体验
- zepto - 实现滑动翻页
- luogu P2698 [USACO12MAR]花盆Flowerpot
- 完美体验 微软WP7智能手机七大功能亮点