摘要:
题目描述 一段长度为n的序列,可以将其中连续不超过d个元素修改成0。 请找到一段最长的,且和不超过p的区间。 题意分析 n范围为2e6,考虑O(nlogn)的做法。 二分答案枚举可能最长的长度L,通过前缀和,以及对每个位置后d个元素的后缀和维护一个单调队列, O(n)枚举每个位置是否可能满足sum[ 阅读全文
摘要:
题目描述 有n个蛋糕和n个人,每个蛋糕的热量是Ci。 第i个人可以选择吃第i或第i+1个蛋糕,第n个人可以选择吃第n或第1个蛋糕。 若一个蛋糕被两个人吃,那么每个人得到的热量是Ci/2. 若一个人改变自己的选择,得到的热量增加,那么他会不满意。 试输出让所有人满意的解,输出每个人吃蛋糕的序号。 题意 阅读全文
摘要:
题目描述 在长宽为L,W的二维平面上有n个障碍点,试找到一个不覆盖任何障碍点(但点可以在边缘线上的)面积最大的矩形(长宽均与坐标轴平行)。 输出面积。 题意分析 n的范围在5e3,考虑O(n2)的做法。 易得面积最大的矩形四条边要么有障碍点,要么覆盖的边界。否则四条边可以继续扩展,面积会变得更大。 阅读全文
摘要:
题目描述 有三个整数A,B,C,构造三个整数X,Y,Z满足: 1.A,B,C在二进制下1的数量分别与X,Y,Z相等; 2.X,Y,Z在二进制下的长度不超过A,B,C的最大长度; 3.X+Y=Z。 输出Z的最小值,若不存在Z,输出-1。 题意分析 首先考虑X,Y在什么情况下会使1的数量发生改变。 设x 阅读全文
摘要:
题目描述 有n盏灯,每个灯有开和关两种状态。每按一次灯会变成相反的状态。 给定灯初始的开关状态和结束的开关状态,若操作k轮,每轮要按m个不同的灯,问有多少种方法使灯由初始状态变到结束状态。 题解 需注意每轮要按不同的灯,若无这个条件,暴力计算组合数即可。 要操作多轮,且每轮按灯的操作顺序不予考虑。 阅读全文
摘要:
题目描述 输入一张无向图,对于无向图的每条边u,v,w,将u和v转换成二进制后,u是v的前缀。 给出q次询问,每次输入s,t,求s到t的最短距离。 题解 从题目数据而言,n为1e5,m为2e5,显然一般的多源最短路算法无法完成。 考虑此题的特殊性质:由于边仅可能从u连向以u为前缀的v,那么若建立一颗 阅读全文
摘要:
题目描述 给定两个数n,m,每次操作可以让n-1或者m+1,求使m%n==0的最少操作数量。 题解 设进行n-t次操作,使n变成t。 若m%t不为0,此时的操作数量为:n-t+t-m%t。 若m%t==0,操作数量为n-t。 那么只需要枚举t就可以解决此题。 但会发现t的范围从1-n过大,考虑将t的 阅读全文
摘要:
题目描述 有一份错误的字符串匹配算法,计算S串里有几个T串(只要有一个元素不同,则视为不同的串)。 现在输入T串,判断能否构造S串让该算法不通过。 int Find_Answer () { int j = 1 , ans = 0; for ( int i = 1; i <= n ; i ++) { 阅读全文
摘要:
题目描述 给定n,k,c,w,然后输入n组数据,数据分为两种: 1 ai:可以选择获得aiw的价值,但w会变成w(1-0.01*k) 2 bi:可以选择损失biw的价值,但w会变成w(1+0.01*c) 求可获得的最大价值是多少。 题解 看到这个题,我的第一思路是求后缀和,然后让新得到的系数乘后缀和 阅读全文
摘要:
题目分析 n行m列的砖块,起始有k发子弹。每次可以用一发子弹,打碎某一列当前处于这一列最下面的那块砖,并且得到相应的得分。 某些砖块打碎以后会获得一个砖块。 求最大得分。 题解 可以看出是一道动态规划题。 关键在于如何设计状态。 先考虑砖块打碎不会得到子弹的情况:这个时候可以将同一列的连续多个砖块看 阅读全文