【CS Round 34】Max Or Subarray】的更多相关文章

[题目链接]:https://csacademy.com/contest/round-34/summary/ [题意] 让你找一个最短的连续子串; 使得这个子串里面所有数字or起来最大; [题解] 对于每一个起点i; 最大值肯定是i..n这一段全部or起来; 只是长度可能还能再短一点; 而且,是有单调性的; 定义一个右端点; 显然,你可以二分右端点; 右端点越靠右,i..右端点这一段or起来就会越大; 因为1的数量只会不下降. 处理出前i个数所有数二进制位在某一位的1的个数的前缀和就好;(30位…
[题目链接]:https://csacademy.com/contest/round-34/task/minimize-max-diff/ [题意] 给你n个数字; 数组按顺序不下降; 让你删掉k个数字; 使得相邻的数字之间的差的最大值最小; [题解] 二分相邻的数字的差的最大值mid是多少; 然后对于遇到的a[i+1]-a[i]>mid 则考虑把i+1..n都删掉或者是先把1..i删掉; 优先删掉i+1..n,因为这样之后就不会再有约束的情况了; 如果有足够的剩余空间删掉i+1..n,删掉就结…
[链接]h在这里写链接 [题意] 在这里写题意 [题解] 枚举0在哪个位置就好. [错的次数] 0 [反思] 在这了写反思 [代码] #include <bits/stdc++.h> using namespace std; const int N = 1e3; int t[N + 10], a[N + 10], n; int f(int pos) { int ma = 0; int x = 0; for (int i = pos; i >= 1; i--) { if (t[i] ==…
[链接]点击打开链接 [题意] 给你一个n*m的矩形,让你在其中圈出若干个子正方形,使得这些子正方形里面的所有数字都是一样的. 且一样的数字,都是在同一个正方形里面.问你有没有方案. [题解] 相同的必须在同一个子正方形里面.且正方形里面的数字都得是一样的. 那么只要每次找一个相同数字的连通块,然后看看这个连通块是不是一个正方形即可. 然后如果某个连通块出现了2次以上直接输出无解.(这两个数字不是连在一起的.中间肯定有其他数字) 如果某个连通块不是正方形,也直接输出无解. (表示肯定会覆盖到其他…
[题目链接]:https://csacademy.com/contest/round-36/task/bicycle-rental/ [题意] 让你从n辆车中选一辆车; 每一辆车有3个属性 1.到达车的身边的时刻 2.车什么时候开始能够被使用 3.车到达它家所需时间; 问你到家的最早时刻. [题解] 车如果晚于可用时间,a+c 否则b+c 取最小值就好 [Number Of WA] 0 [反思] 手速题 [完整代码] #include <bits/stdc++.h> using namespa…
[链接]点击打开链接 [题意] 让你选择n个数字,组成一个数组,使得这n个数字中恰好有k对,它们是互质的. [题解] 我们可以先找出前n个质数,那么接下来的问题就转化为,凑出rest = n*(n-1)/2-k对不互质的数来. 我们先找出最大的t,且满足t*(t-1)/2 <= rest. 这里的t是两两之间都不互质的数的数目. 我们可以把我们取的n个质数中的前t个质数都乘上2.(这里我们取的n个质数要从5开始取) 这样就凑了t*(t-1)/2对不互质的数了.(它们的gcd为2) 接下来处理re…
[链接]点击打开链接 [题意] 给你n个点m条边的无权无向联通图; 让你找3个点A,B,C 使得A->B=B->C=A->C 这里X->Y表示点X到点Y的最短路长度. [题解] 考虑一个出度大于等于3的点x. 任取其3个出度a,b,c 如果a和b有边相连,则输出x,a,b->一个长度为3的环 如果a和c有边相连,则输出x,a,c 如果b和c有边相连,则输出x,b,c 上面三种情况都排除了,则直接输出a,b,c 显然,它们互相之间的最短路都为2,因为上面的判断已经把最短路为1的…
[链接]点击打开链接 [题意] 有一辆火车,它的长度为L,然后假设这辆车现在随机可能地出现在0..D之间,然后假设它已经耗光了油. 问你它需要走的期望距离是多少. 这里要走的距离指的是车里最近的加油站的距离 如果车覆盖了加油站那么它不用动. 一开始给你n个加油站的位置,同时0和D也有一个加油站 [题解] 把这些加油站按照x顺序排(0和D也有加油站); 然后看看x[i+1]和x[i]的间隔temp = x[i+1]-x[i]: 然后如果间隔temp小于等于L,则直接跳过. 否则大于L的话; 则分成…
[链接]https://csacademy.com/contest/round-43/task/rectangle-partition/ [题意] 水题 [题解] 横着过去,把相邻的边的宽记录下来. 竖着再扫描一遍,看看有没有出现和之前相同的宽度的.有的话,贡献的正方形个数++ [错的次数] 0 [反思] 在这了写反思 [代码] #include<bits/stdc++.h> using namespace std; int h,w,n,m; int x[100000+10],y[100000…
[链接]https://csacademy.com/contest/round-43/task/expected-dice/ [题意] 大水题 [题解] 把36种可能的结果都存下来. 然后把重复出现的次数最多的输出就好了. [错的次数] 0 [反思] 在这了写反思 [代码] #include<bits/stdc++.h> using namespace std; int a[10],b[10],c[40],num=0; int main() { for(int i=1;i<=6;i++)…