CS Round#49 C Max Substring】的更多相关文章

Max Substring Time limit: 1000 msMemory limit: 256 MB   You are given a string S. Find a string T that has the most number of occurrences as a substring in S. If the solution is not unique, you should find the one with maximum length. If the solution…
[题目链接]:https://csacademy.com/contest/round-34/summary/ [题意] 让你找一个最短的连续子串; 使得这个子串里面所有数字or起来最大; [题解] 对于每一个起点i; 最大值肯定是i..n这一段全部or起来; 只是长度可能还能再短一点; 而且,是有单调性的; 定义一个右端点; 显然,你可以二分右端点; 右端点越靠右,i..右端点这一段or起来就会越大; 因为1的数量只会不下降. 处理出前i个数所有数二进制位在某一位的1的个数的前缀和就好;(30位…
Untitled Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 947    Accepted Submission(s): 538 Problem Description There is an integer a and n integers b1,…,bn. After selecting some numbers from b1…
Codeforces Beta Round #49 (Div. 2) http://codeforces.com/contest/53 A #include<bits/stdc++.h> using namespace std; #define lson l,mid,rt<<1 #define rson mid+1,r,rt<<1|1 #define sqr(x) ((x)*(x)) #define pb push_back #define eb emplace_bac…
题目传送门 /* Manacher:该算法能求最长回文串,思路时依据回文半径p数组找到第一个和第三个会文串,然后暴力枚举判断是否存在中间的回文串 另外,在原字符串没啥用时可以直接覆盖,省去一个数组空间,位运算 >>1 比 /2 速度快,用了程序跑快200ms左右,位运算大法好 */ /************************************************ Author :Running_Time Created Time :2015-8-1 20:10:22 File…
[题目链接]: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,删掉就结…
题意:有一棵如下的完全二叉树,求所有给定结点到根节点的路径的并有多少条边. 一开始联想到线段树,发现结点的排布很像线段树的标号.于是模仿线段树敲了一下,交上去发现3个点MLE了... 无心优化,跑去看题解.题解的思路是自底向上,先将询问的结点排序,最后从最深的节点开始往上递推,记录每层开始分叉的结点,统计答案即可 正解: #include<bits/stdc++.h> using namespace std; typedef long long LL; vector<LL>a; q…
题意:给定一个无向图,你从结点1开始走,每经过一条边需要1的时间,每条边都有一个开放时间,只有当目前所用的时间大于等于开放时间时,这条边才可以被经过.每一单位时间你都必须经过一条边,问最快什么时候可以到达N 一开始觉得当一条边未开放时,最优的策略便是在当前结点和上次经过的结点间徘徊,知道结点开放,于是最少的徘徊次数便是那条边的边权.后面发现奇偶性其实会影响答案.于是将dis分为奇偶跑pb_ds优化的dijkstra即可. PS:比赛时竟然有人三分钟把这道题切了,再一次证明了我好菜233333 #…
题意:给你N个数,你可以从中选出两个数将它们or起来得到M,求M的最大值及得到最大值的方案数. 刚了半个小时得到了一个貌似时O(N log max(Ai)^2)的方法,想了想发现貌似只能做出第一问,但好像改一下就能搞掉第二问,等等,复杂度炸了...无奈之下跑去看题解,然而题解的解法看起来十分玄妙,而且是英文我并不能读懂...于是我就跑去翻别人的代码,看到了Blue Mary的代码,发现很短,就去研究了一下. 我的眼睛,这特么不是暴力么... #include<bits/stdc++.h> us…
题意:给定一个数组A,以及一个初始值全为0的空数组B,每次可以对数组B的任意一个区间内的所有数+x,问至少几次操作能把B数组变成A数组 NOIP原题(积木大赛)升级版,话说CS怎么那么多跟NOIP原题差不多的题目,我上次还看见一道拦截导弹来着... 言归正传,一开始想贪心,后来发现可以构造出反例,想了一会没什么好办法就去看题解了.题解的解释非常巧妙,他将序列当作一堆矩形竖直排列在一起,最终答案就是矩形的分割数,如下: 看到这里我似乎也知道该怎么做了.我们考虑序列一开始只有一个矩形的状况,加入一个…
[Link]:https://csacademy.com/contest/round-37/task/reconstruct-graph/statement/ [Description] 给你一张图; 包含n个点;m条边; 你可以在这张图的基础上添加边(不能有重边和自环); 使得节点1到节点i的最短距离为d[i] 问你可能的图的个数; [Solution] 对于某一个节点x; 它只能和d的值为d[x]-1或者d[x]的节点直接相连 因为,d的值相同的x和y,如果它们俩之间连一条边的话,它们到节点…
[链接]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] ==…
题目链接 还缺F和G,至少上橙之后把F补了吧. A - Palindromic Twist 题意:每个字母恰好操作一次,变成其之前或者其之后的一个字母,注意'a'和'z'不互通,求是否可以变成回文串. 题解:居然是不互通?! char a[2005]; void test_case() { int n; scanf("%d%s", &n, a + 1); for(int i = 1; i <= n / 2; ++i) { if(a[i] > a[n - i + 1]…
[链接]点击打开链接 [题意] 给你一个n*m的矩形,让你在其中圈出若干个子正方形,使得这些子正方形里面的所有数字都是一样的. 且一样的数字,都是在同一个正方形里面.问你有没有方案. [题解] 相同的必须在同一个子正方形里面.且正方形里面的数字都得是一样的. 那么只要每次找一个相同数字的连通块,然后看看这个连通块是不是一个正方形即可. 然后如果某个连通块出现了2次以上直接输出无解.(这两个数字不是连在一起的.中间肯定有其他数字) 如果某个连通块不是正方形,也直接输出无解. (表示肯定会覆盖到其他…
A. Palindromic Twist 由于必须改变.所以要使\(a[i] = a[n - i + 1]\). 要么同向走,但必须满足之前的\(a[i] = a[n - i + 1]\). 要么相遇,必须满足两字符相差\(2\)的距离. #include <cstdio> #include <iostream> #include <cmath> using namespace std; const int N = 110; int n; char str[N]; bo…
A.二叉树的的根 题目:http://www.contesthunter.org/contest/CH%20Round%20%2349%20-%20Streaming%20%234%20(NOIP 模拟赛Day2)/二叉树的根 题解:自己yy一下就出来了... 如果有度数超过3的节点,则不可能成为2叉树,直接输出0即可 否则,树中度数为1和2的点都可以作为根 代码: var i,n,x,y,tot:longint; a,d:..] of longint; procedure init; begi…
呵呵哒,1001的dfs返回值写错,wa了两发就没分了,1002显然是PAM可是我没学过啊!!!压位暴力可不可以...看看范围貌似不行,弃疗...1003根本不会做,1004想了想lcc发现不可做,那就是仙人掌分治,没写完囧... 最后Rating+69滚粗了... 官方题解: 1001 Untitled 对于一组可能的答案cc,如果先对一个觉小的c_ic​i​​取模,再对一个较大的c_jc​j​​取模,那么这个较大的c_jc​j​​肯定是没有用的.因此最终的答案序列中的cc肯定是不增的.那么就…
题意:构造一张N个结点无重边.无自环的无向图.使得其最小生成树和最大生成树共享K条边. 样例一很具有启发性: 当K!=0时,我们可以先构造出一条链,链的长度为n-k的链,作为最小生成树的一部分,之后由点N向其他N-1个点连边,其中这N-1条边的边权严格大于之前N-K-1条边的.这样可以保证最大生成树与最小生成树共享了那N-1条边中的K条. 当K=0时,依照以上方法构造会出现重边.其实也很简单,先以小权值将N个点串成一条链.再将1向3~n连边,最后将2.4连边即可. #include<bits/s…
Min Races Time limit: 1000 msMemory limit: 256 MB   In a racing championship there are N racing drivers. The drivers are divided in K classes. After a race, a driver is declared a winner if all the drivers that finish in front of him are from better…
A题意 给你t表示有t组测试数据,每组数据给你一个含小写字母的字符串,每个字符必须变为它相邻的字符,问最后是否能变成回文串.a不能变成z,反过来也不行 分析 只需对对称位置判断差是否小于2且不等于1,因为等于1无论怎么变都不行 代码 #include<bits/stdc++.h> using namespace std; #define ll long long int main(){ ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);…
A:https://www.cnblogs.com/myx12345/p/9843826.html B:https://www.cnblogs.com/myx12345/p/9843869.html C:https://www.cnblogs.com/myx12345/p/9843918.html D: E: F: G:…
题目传送门 /* DFS:从大到小取模,因为对比自己大的数取模没意义,可以剪枝.但是我从小到大也过了,可能没啥大数据 */ /************************************************ Author :Running_Time Created Time :2015-8-1 18:57:52 File Name :A.cpp *************************************************/ #include <cstdio>…
[题目链接]: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…
[Link]:https://csacademy.com/contest/round-37/task/group-split/ [Description] 让你把一个数分成两个数a.b的和; (a,b>0) 使得b是a的倍数 问分法个数 [Solution] 设b=x∗a; 则 a+x∗a=n a∗(x+1)=n 这里可以看出来,a必须是n的因子; 再把x分离出来 x=na−1 而x>=1 则 a<=n2 这里n/2实际上就是第二大的因子 所以,这里等价于a< n 于是乎,问题转化…
[Link]:https://csacademy.com/contest/round-37/task/boring-number/ [Description] 让你找离平均数最近的一个数的下标; [Solution] 判断的时候,平均数和枚举的数都乘上n; 这样精度比较高;避免小数比较; [NumberOf WA] 0 [Reviw] empty [Code] #include <bits/stdc++.h> using namespace std; #define lson l,m,rt&l…
[Link]:https://csacademy.com/contest/round-39/task/seven-segment-display/ [Description] 0..9各自有一个数字,代表组成它需要几根棍子; 给你k根棍子,然后问你这k根棍子能够组成的最小数字是多少; [Solution] 数位DP; 设b[0..9]表示对应下标的数码要多少根棍子组成; 设f[i]表示i根棍子能否组成一个数字,如果能的话,组成的数字最小是由几个数码组成的; (为INF表示不能组成); f[0]…
[Link]:https://csacademy.com/contest/round-39/task/reconstruct-sum/ [Description] 给你一个数字S; 让你找有多少对A,B 满足A+B=S 然后再给你一个01串,表示某一位在算加法的时候有没有进位; 在上面的A,B中筛选出符合这个01串的A,B; 输出对数. [Solution] 对S的每一位考虑; 从后往前 如果该位x的后一位进了一位到这一位; 则两个加数在这一位上的需要的数字为x=x-1,否则仍为x 然后看看这一…
[Link]:https://csacademy.com/contest/round-39/task/circle-elimination/ [Description] [Solution] 把n个点依次标为1..n; 然后按照数字大小给每个人排序(记录它原来的位置); 走到第一个人,然后依次走到下一个人即可; 每次枚举往左走还是往右走即可; [NumberOf WA] 0 [Reviw] [Code] /* */ #include <bits/stdc++.h> #define int lo…
[Link]: [Description] [Solution] 每读入一个x; 把a[(x-1)/2]置为1即可; 统计1的个数 [NumberOf WA] [Reviw] [Code] /* */ #include <bits/stdc++.h> #define int long long using namespace std; int n; int a[100000+100]; main(){ scanf("%lld",&n); for (int i = 1…
[链接]点击打开链接 [题意] 让你选择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…