https://codeforces.com/contest/1063/problem/C 首先可以想到一个简单做法:先钦定这个直线的斜率k=-1,然后设直线y=-x+b 设黑点放直线上方:如果已知(x,y)是黑点,那么y>-x+b,b<x+y 如果已知(x,y)是白点,那么b>x+y 可以二分b,对于每个b输出任意合法(x,y)满足x+y=b,然后根据结果更新b的范围 这样子初始时b可以为[1,2e9-1],可以发现log2(2e9)超过30了 然而试一下可以发现这样子会A不掉...发…
题目链接:1063C - Dwarves, Hats and Extrasensory Abilities/1064E - Dwarves, Hats and Extrasensory Abilities 题目大意:交互题,每次询问一个点,返回该点的颜色(黑或白),在询问\(n\)次后求出一条直线,使得该直线可以将相同颜色的点分到一边,如果不存在这样的直线则判定为Wrong Answer. 也就是说,询问的点要能保证,无论对方怎么回答,都能找到一条合法的直线满足条件. 题解:先引入两个概念:基准…
第一次做交互真有趣……:挺好的细节思维题 This is an interactive problem. In good old times dwarves tried to develop extrasensory abilities: Exactly n dwarves entered completely dark cave. Each dwarf received a hat — white or black. While in cave, none of the dwarves was…
题目大意: 依次给定$n$个点的颜色,要求给定这$n$个点的坐标以及一条可以把他们分成两部分的直线 强制在线(交互) $n \leqslant 30$ 感觉自己真像一个乱搞... 我们只考虑把点放在最长的斜线$y = x$上 考虑$[0, 2^2]$,如果我们把第一个点放在$(0, 0)$上,那么后面根据返回的颜色是否与第一个点相同去二分,能放$3$个点 所以我们只需要$[0, 2^{29}]$就能放下30个点了 但是最后的白点和黑点的坐标差距只有$1$ 这个时候,我们选取$y = -x + b…
题目大意 交互题. 输出平面上的一个点的坐标,交互程序给这个点染色(白或黑). 如此重复 $n$ 次($ 1\le n \le 30$). 要求输出的 $n$ 个点各不相同,并且不论交互程序怎样给它们染色,都能找到一条直线将白点和黑点隔开(分隔线不能通过染色的点). 输出分隔线上的两个点的坐标. 要求:输出的所有坐标都必须是 $0$ 到 $10^9$ 之间的整数. 解法 不难想到可以将 $n$ 个点都选在一条平行于 $x$ 轴的直线上. 每次都取中间两个相邻的黑白点的连线的中点. (Put a…
题意 交互题, 本来应该是在平面上进行的. 实际上换成一条直线就可以, 其实换成在平面上更复杂一些. Solution 假设\(l\)点是黑点, \(r\)处是白点, 那么就把下一个点的位置放置在\(l + r / 2\)处, 然后递归处理. Code #include <ctype.h> #include <stdio.h> #include <string> #include <iostream> #include <algorithm> u…
题意 题目链接 \(n\)次操作,每次你给出一个点的坐标,系统会返回该点的颜色(黑 / 白),程序最后输出一条直线把所有黑点和白点分隔开 Sol 一个很直观的想法:首先询问\((dx, 0)\),然后每次询问二分中点,根据与第一次询问得到的字符串的关系不断调整二分范围 但是这样会被卡,我修改了两个地方才过. 二分调整边界的时候直接设\(l = mid\)或\(r = mid\),因为我们最后得到的不是一个精确解,所以这样写是可以的 最后输出直线的时候加一个偏移量,也就是输出一条斜线 具体看代码…
目录 Codeforces 1064 A.Make a triangle! B.Equations of Mathematical Magic C.Oh Those Palindromes D.Labyrinth(BFS) E.Dwarves,Hats and Extrasensory Abilities(交互 二分) F.Candies for Children D.Labyrinth E.Dwarves,Hats and Extrasensory Abilities Codeforces 1…
题目链接 A. Make a triangle! 题意 让某段最少增加多少使得构成三角形 思路 让较小两段往最长段去凑 代码 #include <bits/stdc++.h> #define DBG(x) cerr << #x << " = " << x << endl; using namespace std; int a[5]; int main(){ scanf("%d%d%d",&a[1],…
比赛链接:传送门 A. Make a triangle!(简单思维) 题目大意: 给你三条边,问你最多加多少长度能使这三条边能构成三角形. 思路: 最大边小于答案加另外两条边的和. #include <bits/stdc++.h> using namespace std; int main() { int a, b, c; cin >> a >> b >> c; int _max = max(a, b); _max = max(_max, c); int s…