给你一个字符串,多次区间询问,问你在该区间内最多能有几个easy重复的子序列. 显然如果只有一次询问,从左到右贪心做即可. 分块,预处理任意两块间的答案,不过要把以e a s y开头的四个答案都处理出来.① 然后再预处理每个点到该点所在块右端点的答案,不过只用考虑e开头的.② 询问的时候,分成三部分,l到r[num[l]]直接得到②部分的答案,中间部分直接得到①的答案,右侧再贪心跑一下就行了. #include<cstdio> #include<cstring> #include&…
题面: Problem I. Increasing or DecreasingInput file: standard inputOutput file: standard outputTime limit: 2 secondsMemory limit: 512 mebibytesWe all like monotonic things, and solved many problems about that like Longest Increasing Subsequence(LIS). H…
题意:F(n)为斐波那契数列的第n项,问你F(F(n)) mod 20160519的值. 发现有循环节,F(26880696)=0,F(26880697)=1,.... 于是两次矩乘快速幂即可. #include<cstdio> #include<vector> using namespace std; typedef long long ll; typedef vector<ll> vec; typedef vector<vec> mat; mat mul…
平面上n个点,两个人交替决策,用线段连接两个点,但不能跨越其他点或者已经存在的线段.不能做的人算输,问你谁赢. 实际上,跟两个人的决策无关,n个点将平面三角剖分,只需要算出有几条边即可. 凸包上如果有K个点,那么图中那K-1条实边每条贡献一个三角形. 凸包内其他的边,每条贡献2个三角形.除了最中心那一个贡献一个. 假设总的三角形数是X,那么总的线段数就是(X*3+K)/2. 线段数是奇数就先手胜,否则后手胜. #include<cstdio> #include<algorithm>…
题意:一个n个点的完全图,点带权,边权是两端点点权的异或值.问你最小生成树. 一个性质,把所有点按照二进制最高位是否为1划分为2个集合,那么这两个集合间只会有一条边.可以递归处理. 把所有点建成01Trie,发现两个集合就是Trie的每个结点的两个子树.用启发式的思想,在小子树里dfs到叶子结点,取出每个值,然后去大子树里查询即可. O(n(logn)^2). #include<cstdio> #include<algorithm> using namespace std; typ…
2016弱校联盟十一专场10.5 传送门 A. As Easy As Possible 假设固定左端点,那么每次都是贪心的匹配\(easy\)这个单词. 从\(l\)开始匹配的单词,将\(y\)的位置标记成有效位置,用主席树维护. 如果\(s_l\ne e\),那么\(l\)与\(l+1\)的匹配结果一致:否则从\(l\)开始匹配到某个位置\(p\)完成单词匹配,我们从\(p+1\)的有效位置继承过来,然后再将\(p\)标记成有效位置即可. B. Be Friends 在二进制下,从高位开始考虑…
背景: 在家美滋滋的上着网课享受着因为疫情带来的平静,没想到随着微信.钉钉铃声响起打破了我半年以来的平静的生活:通知我们过完劳动节要进行答辩,由于我的答辩项目是由 MyEclipse 这个工具编写的我只好再次拾起了对 MyEclipse 的爱!!! 即将进行论文答辩的我发现 MyEclipse 2016 激活过期 害得我又一次把 MyEclipse 2016 给重新激活.以下方法同样适用于MyEclipse 激活过期或者是安装激活以后只有五天试用时间的同学 破解过程: 破解补丁: 激活 MyEc…
Ugly Problem Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 0    Accepted Submission(s): 0Special Judge Problem Description Everyone hates ugly problems. You are given a positive integer. You m…
一开始有n个杯子,每个杯子里有一些豆子,两个人轮流操作,每次只能将一个豆子移动到其所在杯子之前的某个杯子里,不过可以移动到的范围只有一段区间.问你是否先手必胜. 一个杯子里的豆子全都等价的,因为sg函数是异或起来的值,所以一个杯子里如果有偶数个豆子,就没有意义. 用sg(i)表示i杯子中的豆子的sg值,sg(i)就是其所能移动到的那段杯子的区间的sg值的mex(未出现的最小非负整数).可以用线段树去做.是经典问题. 由于每次看似是后缀询问,实则是全局询问,故而主席树完全是多余的. 回顾一下区间m…
有一些草,一开始高度都是0,它们的生长速率不同. 给你一些单增的日期,在这些日期要将>b的草的部分都割掉,问你每次割掉的部分有多少. 将草的生长速率从大到小排序,这样每次割掉的是一个后缀,而且不会影响它们生长速率的递增性. 就是三种操作,一种对一个后缀赋值,一种对整个数组作 + 另一个数组(d(i)-d(i-1))*a,一种求区间和. 可以通过打标记的线段树实现,标记下放通过预处理生长速率数组的前缀和可以实现. 队友的代码: #include <iostream> #include &l…