zoukankan      html  css  js  c++  java
  • Dwarves, Hats and Extrasensory Abilities Codeforces

    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不掉。。。发现有时会刚好少1次机会

    然后我就不会了...期间还尝试了一些乱搞,然而发现那么写除了让自己pretestpassed并且FST以外什么用也没有(提交后WA59)

    看了题解,发现很简单:只要开始时询问一个角上的点,比如询问右上角,如果是黑色,那么仍然按上面方法,如果是白色,那么设直线上方应该放的点为白点,然后仍然按上面方法

    哎,我还是太菜了

    错误记录:

    1.写成fflush(input)

    2.CF不能只输出 ,必须手动fflush(output)

     1 #include<cstdio>
     2 #include<algorithm>
     3 #include<cstring>
     4 #include<vector>
     5 using namespace std;
     6 #define fi first
     7 #define se second
     8 #define mp make_pair
     9 #define pb push_back
    10 typedef long long ll;
    11 typedef unsigned long long ull;
    12 typedef pair<int,int> pii;
    13 char tmp[233],c;
    14 int n;
    15 int main()
    16 {
    17     int l,r,mid,t,i;
    18     scanf("%d",&n);
    19     printf("%d %d
    ",1000000000,1000000000);
    20     fflush(stdout);
    21     scanf("%s",tmp);
    22     c=tmp[0];
    23     if(n==1)
    24     {
    25         printf("%d %d %d %d
    ",0,1,1,0);
    26         return 0;
    27     }
    28     l=1;r=2000000000-1;
    29     for(i=2;i<=n;++i)
    30     {
    31         mid=l+((r-l)>>1);
    32         t=mid/2;
    33         printf("%d %d
    ",t,mid-t);
    34         fflush(stdout);
    35         scanf("%s",tmp);
    36         if(tmp[0]==c)    r=mid-1;
    37         else    l=mid+1;
    38     }
    39     mid=l+((r-l)>>1);
    40     t=mid/2;
    41     printf("%d %d %d %d
    ",t,mid-t,t+1,mid-t-1);
    42     return 0;
    43 }
    View Code
  • 相关阅读:
    bzoj2876 [Noi2012]骑行川藏
    关于线性基的一些理解
    bzoj2115 [Wc2011] Xor
    bzoj2884 albus就是要第一个出场
    bzoj2460 [BeiJing2011]元素
    bzoj2005 [Noi2010]能量采集
    关于积性函数的一些理解
    bzoj4300 绝世好题
    Servlet—文件上传
    JNDI—目录接口名
  • 原文地址:https://www.cnblogs.com/hehe54321/p/9851874.html
Copyright © 2011-2022 走看看