摘要:
题意:给定由字符串块(字符及连续出现的个数)组成的字符串t,s,求t串中有多少个s。分析:KMP 这题唯一需要思考的地方就是如何处理字符串块。第一想到是把他们都展开然后进行KMP,可是展开后实在太长,所以必须按块进行处理,就要把所有相邻的相同的块进行合并成一个大块。 注意模式串开头... 阅读全文
摘要:
题意:给定序列,将前a个数进行逆序或正序排列,多次操作后,求最终得到的序列。分析:仔细分析可以想到jrj && i#include#include#includeusing namespace std;const int maxn = 200005;int a[maxn], b[m... 阅读全文
摘要:
题意:给定序列,将前a个数进行逆序或正序排列,多次操作后,求最终得到的序列。分析:仔细分析可以想到jrj && i#include#include#includeusing namespace std;const int maxn = 200005;int a[maxn], b[m... 阅读全文
摘要:
题意:按顺序给定列和行进行涂色,输出最终得到的方格颜色分布。分析:记录下涂的次序,如果某个元素的横和列都被涂过,那么就选择次序最大的颜色。代码:#include#includeusing namespace std;const int maxn = 5005;int num[max... 阅读全文
摘要:
题意:模拟模拟~~代码:#includeusing namespace std;const int maxn = 1005;int a[maxn], b[maxn], fa[maxn], fb[maxn];int main (void){ int n;cin>>n; f... 阅读全文
摘要:
题目链接:http://codeforces.com/problemset/problem/650/C题意:给定n*m的矩阵,要求用最小的数表示每个元素,其中各行各列的大小关系保持不变。分析:将所有元素从小到大排序,然后找到每个元素相应位置进行填充,由于题目要求是每行每列的大小关系... 阅读全文
摘要:
题意:若干张照片,从头开始可以向左右两边读,已经读过的不需要再读,有的照片需要翻转,给定读、滑动和翻转消耗的时间,求在给定时间内最多能读多少页?分析:首先明确,只横跨一次,即先一直读一边然后再一直读另一边,这样消耗的滑动时间最少。是否能在给定时间内读完页数很好判断,所以用二分+枚举... 阅读全文
摘要:
题意:求欧几里得距离与曼哈顿距离相等的组数。分析:化简后得到xi=xj||yi=yj,即为求x相等 + y相等 - x与y均相等。代码:#include#includeusing namespace std;const int maxn = 1000000 + 5;typedef ... 阅读全文
摘要:
题意:给定序列,重新排序,使严格上升的子序列最多。求这些子序列总长度。分析:贪心,统计每个元素出现次数,每次从剩余的小的开始抽到大的,直到不再剩余元素。代码:#include#includeusing namespace std;const int maxn = 1005;int ... 阅读全文
摘要:
题意:两根操纵杆,每分钟操纵杆消耗电量2%,每分钟又可以给一个操纵杆充电1%(电量可以超过100%),当任何一个操纵杆电量降到0时,游戏停止。问最长游戏时间。分析:贪心,每次选择电量剩余最少的充电。代码:#include#includeusing namespace std;con... 阅读全文