zoukankan      html  css  js  c++  java
  • Codeforces Round 717(Div.2)


    A、Tit for Tat

    题意:

    给你一个序列$a$和$k$次操作,每次操作选择$i$和$j$$(i eq j)$两个元素,然后$a_i+=1$,$a_j-=1$,并要求操作完成后序列的数均为非负。求至多$k$次操作之后字典序最小的序列。

    题解:

    每次选最左边的不为$0$的元素加一就行,直到$k$次用完或者前$n-1$个元素都是$0$。

    B、AGAGA XOOORRR

    题意:

    给你一个序列,每次选择两个相邻的数,删除它们并插入它们的异或,问你能不能构造出长度大于$1$,且所有序列中剩下的值一样的序列。

    题解:

    直接求序列异或和,如果是$0$,直接输出$YES$,否则看看有几个区间的异或和是序列的异或和,如果大于$1$则输出$YES$,否则输出$NO$。

    C、Baby Ehab Partitions Again

    题意:

    给你一个序列,问你最少删几个数,使得剩下的序列中不能划分成两个和一样的子序列

    题解:

    先求序列和,如果是奇数,不用删就行,否则跑可行性背包$dp$,然后如果$frac{sum}{2}$不能构造出来,也不用删,否则先求一趟区间$gcd$,然后使得序列中的数都除这个区间$gcd$,删掉任意一个奇数即可。

    D、*Cut

    题意:

    给你一个长度$1e5$的序列和$1e5$次询问,每次询问输出$[l, r]$中最少有多少个子区间,每个子区间的$LCM(a_{l_1}, a_{l_1+1}.....a_{r_1})=prod(a_{l_1}, a_{l_1+1}.....a_{r_1})$。

    题解:

    首先预处理出每一个数到它右边并且和它互质的最右位置,然后对于这个数,它到它的最右位置就是以它为左端点的区间,如果倒着做,每次先继承后一个数的状态,然后取它的因数的最左的那个,作为它的最右位置,就可以保证某个数所在的区间一定互质。然后倍增,求某个数后面第$2^i$个区间的右端点的位置,查询时倍增即可,结果要加上$1$,因为上面的区间都是左闭右开定义的。

  • 相关阅读:
    64位内核开发第十二讲,进程监视,ring3跟ring0事件同步.
    64位内核开发第十讲,IRQL中断级别了解
    64位内核开发第九讲,注册表编程.
    64位内核开发第8讲,文件操作.以及删除文件.
    64位内核第七讲.内核中字符串编程注意事项
    【Unity】7.5 移动设备输入
    【Unity】7.4 游戏外设输入
    【Unity】7.3 键盘输入
    【Unity】7.2 鼠标输入
    【Unity】7.1 Input类的方法和变量
  • 原文地址:https://www.cnblogs.com/Aya-Uchida/p/14689693.html
Copyright © 2011-2022 走看看