Codeforces 1254C/1255F Point Ordering (交互题)
题目链接
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 (交互题)相关推荐
- 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* ...
- 【交互题+二分】Codeforces Round #516 E. Dwarves, Hats and Extrasensory Abilities
Codeforces Round #516 E. Dwarves, Hats and Extrasensory Abilities 题意: 输出一个点,输入是黑色或者白色,n次询问后,输出一条直线,是 ...
- Codeforces Round #503 (by SIS, Div. 2) D. The hat(交互题)
题目链接:http://codeforces.com/contest/1020/problem/D 题意描述: 这是一个交互题,互交题就是你要输出一些问题,评测机就会回答你一些问题 你要在规定的提问次 ...
- Codeforces#1157 F. Ehab and the Big Finale (思维+交互题)
链接: http://codeforces.com/contest/1174/problem/F 题意: 给你一颗树,需要你求出某个已知点,你有两种询问操作 问你能否在36次询问之内得知所求点 思路: ...
- Codeforces Round #504 E - Down or Right 交互题
1023E 题意: 交互题.在一个有障碍地图中,问如何走才能从(1,1)走到(n,n),只能向右或者向左走.每次询问两个点,回复你这两个点能不能走通. 思路: 只用最多2*n-2次询问.从(1,1), ...
- Strange Shuffle CodeForces - 1471E(交互题)
交互题 这类型不同于普通的题. 可以理解为有个问题需要你解决,你通过输入某些东西表示你要问系统的问题,这时系统会回答你的问题.在代码中的回答方式就是会输入某个东西就是系统给你的答案,通过这些信息你可以 ...
- Codeforces ~ 1063C ~ Dwarves, Hats and Extrasensory Abilities (交互题,二分)
题意 交互题.N次,让你每次输出一个点的坐标,然后他告诉你当前点的颜色(黑或白).使得可以找到一条直线把黑点和白点分隔开.最终输出这条直线过的两个点.输入输出均为正数,分为为0~1e9 思路 我们把所 ...
- 【算法竞赛学习笔记】交互题入门
title : 交互题 tags : ACM,交互 date : 2022-2-11 author : Linno 交互题 通俗来讲,交互题与平时题目的输入输出反过来,是让你设计程序去向用户提出询问, ...
- Codeforces 1077B Disturbed People(思维题)
Codeforces 1077B Disturbed People(思维题) There is a house with nn flats situated on the main street of ...
最新文章
- ts 项目执行js_TypeScript项目的文档和测试
- 配置MYSQL基于GTID 主从复制详细解析及步骤
- Swift之深入解析类和结构体的本质
- oracle read by other session,AWR报告中,read by other session ,如何解决?
- CVPR 2019 CLIC 图像压缩挑战赛冠军方案解读
- CentOS下yum操作gnome和kde桌面
- Android 系统性能优化(41)---Android代码内存优化建议-OnTrimMemory优化
- linux gvim 列编辑,Linux——vim编辑器
- c语言 结构作用是什么,C语言选择结构知识点
- 三大无线技术 —— WiFi、蓝牙、HomeRF(无线网卡、WPAN)
- PowerPoint优点全体验
- jmeter安装配置教程
- lnmp一键安装包 mysql_CentOS7下安装lnmp一键安装包
- xrd连续扫描和步进扫描_XRD基础性问题
- nagios一些安装注意
- 学田岛电脑绣花制版新人上手教程之一
- XSS线上靶场---haozi
- 傻妞旧版合集新版订阅
- 如何降低图片kb大小?教你两个快速压缩图片大小的方法!
- 采取HEXO+NexT主题+github.io的方式建立自己的个人主页