题目链接

http://codeforces.com/contest/1254/problem/C

题解

sb题。
第一次,通过\((n-2)\)次询问2确定\(p[2]\),也就是从\(1\)来看“最逆时针”的点。
第二次,通过\((n-2)\)次询问1确定每个点与\(a_1a_{p_2}\)这条直线的距离,并将所有点按该值排序。设排序后的数组是\(s_3,s_4,...\).
第三次,通过\((n-3)\)次询问2将所有点定序。我们实际上就是要将\((n-2)\)个点分成两组,一组从前往后,一组从后往前。每次询问2 1 s[i] s[i+1], 若答案为\(1\), 说明\(s_i\)是在第一组,否则在第二组。
时间复杂度\(O(n\log n)\), 总询问次数\((3n-7)\).

代码

#include<bits/stdc++.h>
#define pli pair<llong,int>
#define llong long long
using namespace std;const int N = 1000;
int p[N+3]; pli s[N+3];
int n;int main()
{scanf("%d",&n);p[1] = 1; p[2] = 2;for(int i=3; i<=n; i++){printf("2 %d %d %d\n",1,i,p[2]); fflush(stdout);int x; scanf("%d",&x); if(x==1) {p[2] = i;}}for(int i=2; i<=n; i++){if(i==p[2]) continue;printf("1 %d %d %d\n",1,p[2],i); fflush(stdout);scanf("%I64d",&s[i].first); s[i].second = i;}sort(s+2,s+n+1);int tp1 = 2,tp2 = n+1;for(int i=3; i<n; i++){int u = s[i].second;printf("2 %d %d %d\n",1,s[i].second,s[i+1].second); fflush(stdout);int x; scanf("%d",&x);if(x==-1) {p[--tp2] = s[i].second;}else {p[++tp1] = s[i].second;}}p[++tp1] = s[n].second;for(int i=0; i<=n; i++) printf("%d ",p[i]); fflush(stdout);return 0;
}

Codeforces 1254C/1255F Point Ordering (交互题)相关推荐

  1. codeforces gym-101755 I-Guess the Tree 交互题、分治、树的直径

    题目 题目链接 题意 n=2h−1,且1≤n≤1023n=2h−1,且1≤n≤1023n = 2^h-1,且1≤n≤1023 你可以最多询问2.5∗logn+12∗n2.5∗log2n+1∗n2.5* ...

  2. 【交互题+二分】Codeforces Round #516 E. Dwarves, Hats and Extrasensory Abilities

    Codeforces Round #516 E. Dwarves, Hats and Extrasensory Abilities 题意: 输出一个点,输入是黑色或者白色,n次询问后,输出一条直线,是 ...

  3. Codeforces Round #503 (by SIS, Div. 2) D. The hat(交互题)

    题目链接:http://codeforces.com/contest/1020/problem/D 题意描述: 这是一个交互题,互交题就是你要输出一些问题,评测机就会回答你一些问题 你要在规定的提问次 ...

  4. Codeforces#1157 F. Ehab and the Big Finale (思维+交互题)

    链接: http://codeforces.com/contest/1174/problem/F 题意: 给你一颗树,需要你求出某个已知点,你有两种询问操作 问你能否在36次询问之内得知所求点 思路: ...

  5. Codeforces Round #504 E - Down or Right 交互题

    1023E 题意: 交互题.在一个有障碍地图中,问如何走才能从(1,1)走到(n,n),只能向右或者向左走.每次询问两个点,回复你这两个点能不能走通. 思路: 只用最多2*n-2次询问.从(1,1), ...

  6. Strange Shuffle CodeForces - 1471E(交互题)

    交互题 这类型不同于普通的题. 可以理解为有个问题需要你解决,你通过输入某些东西表示你要问系统的问题,这时系统会回答你的问题.在代码中的回答方式就是会输入某个东西就是系统给你的答案,通过这些信息你可以 ...

  7. Codeforces ~ 1063C ~ Dwarves, Hats and Extrasensory Abilities (交互题,二分)

    题意 交互题.N次,让你每次输出一个点的坐标,然后他告诉你当前点的颜色(黑或白).使得可以找到一条直线把黑点和白点分隔开.最终输出这条直线过的两个点.输入输出均为正数,分为为0~1e9 思路 我们把所 ...

  8. 【算法竞赛学习笔记】交互题入门

    title : 交互题 tags : ACM,交互 date : 2022-2-11 author : Linno 交互题 通俗来讲,交互题与平时题目的输入输出反过来,是让你设计程序去向用户提出询问, ...

  9. Codeforces 1077B Disturbed People(思维题)

    Codeforces 1077B Disturbed People(思维题) There is a house with nn flats situated on the main street of ...

最新文章

  1. ts 项目执行js_TypeScript项目的文档和测试
  2. 配置MYSQL基于GTID 主从复制详细解析及步骤
  3. Swift之深入解析类和结构体的本质
  4. oracle read by other session,AWR报告中,read by other session ,如何解决?
  5. CVPR 2019 CLIC 图像压缩挑战赛冠军方案解读
  6. CentOS下yum操作gnome和kde桌面
  7. Android 系统性能优化(41)---Android代码内存优化建议-OnTrimMemory优化
  8. linux gvim 列编辑,Linux——vim编辑器
  9. c语言 结构作用是什么,C语言选择结构知识点
  10. 三大无线技术 —— WiFi、蓝牙、HomeRF(无线网卡、WPAN)
  11. PowerPoint优点全体验
  12. jmeter安装配置教程
  13. lnmp一键安装包 mysql_CentOS7下安装lnmp一键安装包
  14. xrd连续扫描和步进扫描_XRD基础性问题
  15. nagios一些安装注意
  16. 学田岛电脑绣花制版新人上手教程之一
  17. XSS线上靶场---haozi
  18. 傻妞旧版合集新版订阅
  19. 如何降低图片kb大小?教你两个快速压缩图片大小的方法!
  20. 采取HEXO+NexT主题+github.io的方式建立自己的个人主页

热门文章

  1. 线性判别分析LDA的数学原理(二)
  2. VS2010中使用正则表达式替换时无法使用回车符的解决方法
  3. 利用注入写Webshell(sql-lab第七关)
  4. BugkuCTF-Misc:宽带信息泄露
  5. 【快乐水题】747. 至少是其他数字两倍的最大数
  6. 《2020总结-2021展望》
  7. PS菜鸟入门 -- 添加滤镜
  8. 日常生活 -- 数据结构与算法告一段落
  9. zcmu-1182(大数相减)
  10. 去中心化多链钱包CoinU 30问(你想要的答案都在这里)