摘要: 以前听过,不知道是什么,其实就是字符串首尾相连成一个环,n种切法求一个字典序最小的表示。朴素算法大家都懂。O(n)的算法代码非常简单,最主要的思想是失配的时候尽可能大的移动指针。另外附上一个不错的字符串算法总结:http://duanple.blog.163.com/blog/static/7097... 阅读全文
posted @ 2015-09-15 20:29 瑞宇 阅读(288) 评论(0) 推荐(0)
摘要: 二分,判断的时候,一个点一个点的考虑肯定是不行啦,考虑的单位是一个区间,每次左端点尽量向左边移动,右端点尽量向右,得到下次可以达到的范围,检查一下和下一个区间有没有交集。#includeusing namespace std;const int maxn = 1e5+5, maxns = 1e6+5... 阅读全文
posted @ 2015-09-15 13:20 瑞宇 阅读(319) 评论(0) 推荐(0)
摘要: 很容易想到二分,问题在与判断一个解的可行性。贪心,时间点最多两万,可以模拟每个时间点,将事件按开始时间排序,每次优先选已经开始了的且结束时间最早的任务来做,如果某个任务在deadline之前还没有结束说明当前解不可行。R的上界不太好估计,(远远达不到总和,但是比maxw大,因为任务在时间上有重叠),... 阅读全文
posted @ 2015-09-15 13:14 瑞宇 阅读(452) 评论(0) 推荐(0)
摘要: 贪心,假如任意给出一个序列,如果两两交换了以后会变大,那么就交换,直到不能交换为止。#includeusing namespace std;const int maxn = 51;string s[maxn];int rk[maxn];bool cmp(int x,int y){ int i ... 阅读全文
posted @ 2015-09-15 13:01 瑞宇 阅读(204) 评论(0) 推荐(0)
摘要: 问题可以转化为草坪的边界被完全覆盖。这样一个圆形就换成一条线段。贪心,从中选尽量少的线段把区间覆盖,按照把线段按左端点排序,记录一个当前已经覆盖区间的位置cur,从左端点小于等于cur选一个右端点最大的作为这次选的区间,如果没有符合条件的,说明不可能完全覆盖。r*r会爆int...#includeu... 阅读全文
posted @ 2015-09-15 12:54 瑞宇 阅读(233) 评论(0) 推荐(0)
摘要: UVA 11636 Hello World二的幂答案就是二进制长度减1,不是二的幂答案就是是二进制长度。#includeint main(){ int n,kas = 0; while(scanf("%d",&n),n>0){ int r = 0; for(n... 阅读全文
posted @ 2015-09-15 08:01 瑞宇 阅读(223) 评论(0) 推荐(0)