摘要: A. Regular Bracket Sequence 显然,"$()$"不影响结果它是自我匹配的,可以把所有的$(($和$))$都放在左边/右边,这样只要检查它们的数目就行,还有个坑点,就是如果$)($多于一,需要给左右两边一个负担,必须小于它们的数量才行。 B. Discounts 模拟,从小到 阅读全文
posted @ 2019-08-04 21:19 DMoRanSky 阅读(144) 评论(0) 推荐(0) 编辑
摘要: A. Best Subsegment 显然,选择数列中的最大值当做区间(长度为$1$)。只要尝试最大值这个区间是否能扩展(左右两边值是否跟它一样就行了) C. Magic Ship 二分答案。容易看出,时刻符合单调性。若$d$天能到,那么$d + 1$也能到。因为可以保持跟风相反的方向就可以保持不动 阅读全文
posted @ 2019-08-03 23:44 DMoRanSky 阅读(160) 评论(0) 推荐(0) 编辑
摘要: A. Digits Sequence Dividing 注意特殊情况,在$n = 2$时除非$str[1] = str[2]$,否则可以把第一个数划分下来,剩下的数直接当成一组,一定满足条件。 C. Brutality 用堆维护连续子段最大和即可。 D. Compression 实质上是把这图压缩到 阅读全文
posted @ 2019-08-02 23:57 DMoRanSky 阅读(130) 评论(0) 推荐(0) 编辑
摘要: A. Minimum Integer 1. 如果$d include using namespace std; int main(){ int T; scanf("%d", &T); while(T ){ int l, r, d; scanf("%d%d%d", &l, &r, &d); if(d 阅读全文
posted @ 2019-08-02 22:25 DMoRanSky 阅读(122) 评论(0) 推荐(0) 编辑
摘要: A. Find Divisible 符合条件的区间一定可以选择$l, l 2$。 证明$l 2 include using namespace std; int main(){ int T; scanf("%d", &T); while(T ){ int l, r; scanf("%d%d", &l 阅读全文
posted @ 2019-08-01 23:35 DMoRanSky 阅读(147) 评论(0) 推荐(0) 编辑
摘要: A. Dice Rolling 把$x$分解为$a 6 + b$,其中$a$是满6数,$b$满足$1 include using namespace std; int main(){ int T; scanf("%d", &T); while(T ){ int x; scanf("%d", &x); 阅读全文
posted @ 2019-08-01 21:11 DMoRanSky 阅读(142) 评论(0) 推荐(0) 编辑
摘要: A. Vasya and Book 简单的取余运用。 B. Vova and Trophies 对于每一个$S$在的位置,二分出它的最大连续前缀$lenLeft$和最大连续后缀$lenRight$。 1. 如果除了这两块前缀以外没有别的$G$了,只需把右边的最后一个移到中间来,用$lenLeft + 阅读全文
posted @ 2019-07-31 23:56 DMoRanSky 阅读(193) 评论(0) 推荐(0) 编辑
摘要: A. Minimizing the String 很明显,贪心之比较从前往后第一个不一样的字符,所以可以从前往后考虑每一位,如果把它删除,他这一位就变成$str[i + 1]$,所以只要$str[i] str[i + 1]$,删除后一定是最优的。 cpp include include includ 阅读全文
posted @ 2019-07-31 18:29 DMoRanSky 阅读(159) 评论(0) 推荐(0) 编辑
摘要: A. Diverse Substring 找普遍性(特殊解即可)。 最简单的便是存在一个区间$[i, i + 1] (1 include include using namespace std; const int N = 1010; int n; char str[N]; int main(){ 阅读全文
posted @ 2019-07-30 19:53 DMoRanSky 阅读(150) 评论(0) 推荐(0) 编辑
摘要: A. Vasya and Chocolate 模拟题。数据会爆$int$,要开$long$ $long$ B. Vasya and Isolated Vertices 考虑最小时,两两连边,答案为$max(n 2 m, 0)$ 考虑最大时,除了$m$为$1或0$特判以外,每次尝试用最多的边拓展一个点 阅读全文
posted @ 2019-07-30 13:59 DMoRanSky 阅读(191) 评论(0) 推荐(0) 编辑