zoukankan      html  css  js  c++  java
  • Good Bye 2019 A~G题解

    http://codeforces.com/contest/1270

    辣鸡比赛毁我青春

    A

    比较最大的牌即可

    B

    找相邻两个差的绝对值>=2的数

    如果不存在,则每次只能±1或不变,必然不存在合法区间

    C

    设和为s1,异或和为s2

    一种方法是把s2*2,那么加2^x等于异或2^(x+1)

    从后往前构即可,因为不会影响到异或和的当前位

    一种更sb的方法:

    加上两个数,第一个为s2,第二个为(s1+s2)

    那么和变成s1+s2+(s1+s2)=2(s1+s2),异或和变成s2^s2^(s1+s2)=s1+s2,满足要求

    D

    交♂互题

    先用两次操作求出两个不同位置的数,即第一次为1~k,第二次为1~k+1挖掉第一次找到的,设第一次的为x1,第二次的为x2

    只需要直到第二次询问的数中有多少个比x2小即可知道m

    注意最多只能询问n次,所以必须保证每次都能判掉一个新的数

    根据x1和x2的大小来讨论,每次把第二次询问的数中一个未知的数换成x1,根据得到的数的大小情况来判断

    如x1<x2,则若要判断的数比x2小,那么就会使询问结果不变,否则会变大(删掉了小于x2的x1)

    E

    迫真计算几何

    设当前坐标xy为奇奇、奇偶、偶奇、偶偶的个数为abcd

    ①若abcd中只有一个不为0,则把所有的点的坐标/2,显然这样不会使答案改变

    ②若a+d和b+c不为0,则可以把a+d分到A,把b+c分到B

    把距离平方,则在同一组之间的距离为偶数,在不同组的距离为奇数

    ③若a+d和b+c中有一个不为0(假设是a+d),那么把a分到A,把d分到B

    那么在同一组之间的距离为4的倍数,在不同组的距离模4余2

    因为模2余1的数在模4意义下为1或3,两个模2余1的数相加模4必然为2

    F

    设前缀为sum,则题目所求为(sum_{k=1}^{n}{sum_{l,r}{[frac{r-(l-1)}{sum[r]-sum[l-1]}=k]}})

    (t[i]=i-k*sum[i]),则可以变成(sum_{k=1}^{n}{sum_{l,r}{[t[l]=t[r]]}})

    平衡规划,设T为阈值

    对于n<=T的,暴力枚举k,用map统计t相同的个数计算

    对于n>T的,可以发现1的个数很小,所以枚举l,再枚举1的个数,求出有多少个合法的r,可以找r所在的0区间直接算

    G

    限制可以转为(1<=i-a_i<=n),对i向i-ai连一条有向边

    那么必然存在一个环,找到这个环,设上面的点分别为(i_1,i_2,i_3...i_k)

    则存在(i_1-a_{i1}=i_2,i_2-a_{i3}=i_3...i_k-a_{ik}=i_1),即(a_{i1}+a_{i2}+...+a_{ik}=0)

  • 相关阅读:
    字王20年
    [转]Birdfont 2.10 发布,字体编辑器
    vs2013编译boost库
    c++ 完成端口资料
    获取输入法输入内容及后选项的钩子
    unicode string和ansi string的转换函数及获取程序运行路径的代码
    c++实现输入法窗口自定义的代码
    在固定长方形里产生渐变
    监听某个div或其它标签的大小改变来执行相应的处理
    64位SqlServer通过链接服务器与32位oracle通讯
  • 原文地址:https://www.cnblogs.com/gmh77/p/12148669.html
Copyright © 2011-2022 走看看