1584D - Guess the Permutation & 交互题入门
一、 交互题简介
第一次做交互题,用了大概半天时间学习了交互题的概念和大致做法
交互题跟一般题相反, 一般题目是系统给你输入数据, 让你输出答案, 系统判断答案是否正确
而交互题则类似于电视节目中的猜数字, 你可以理解为后台有一些数据, 但是需要你去询问, 系统会根据你的询问给你答案, 需要你在规定的询问次数内得到答案并输出
主要的思想是二分、三分、随机数,难点在于几乎无法本地自测
交互题是special judge
中的一种, 交互题的大概写法是:
// 问系统params, 返回系统给你的答案
T ask(T params ...) {
cout << params << endl; // 输出你要问的问题 给系统
cout.flush(); // 清空缓存
// System.out.flush() java
// fflush(stdout) C
// stdout.flush() py
cin >> ans;
return ans;
}
以1584D为例, 介绍下这道题怎么做
二、 题目
有一个长度为n的数组, n<1e9, 初始时是自然排列. 后台有3个参数 i , j , k i, j, k i,j,k, 对这个数组的 [ i , j − 1 ]