随笔分类 -  Acm

上一页 1 ··· 5 6 7 8 9 10 11 12 13 ··· 15 下一页
摘要:给定一个字符串,求不相同的子串的个数。 假如给字符串“ABA";排列的子串可能: A B A AB BA ABA 共3*(3+1)/2=6种; 后缀数组表示时: A ABA BA 对于A和AB height[i]=1; 表明一个长度公共,所以ABA中多出现了A这个子串,所以6-1=5; 对于ABA 阅读全文
posted @ 2015-09-12 13:56 sweat123 阅读(157) 评论(0) 推荐(0)
摘要:后缀数组多个字符串问题。 先求出height[]数组,然后二分求最大的长度。 但是条件需要改变。如果出现次数大于一般那就满足。然后就要解决如何判断那一段属于其中一个字符串。 所以先处理出长度。并且不断标记,如果在长度其中,将那个长度标记。那就不会出现自己与自己的相同情况了。 RE了很多次,字符串输入 阅读全文
posted @ 2015-09-10 21:59 sweat123 阅读(134) 评论(0) 推荐(0)
摘要:Milk Patterns Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 13669 Accepted: 6041 Case Time Limit: 2000MS Description Farmer John has noti 阅读全文
posted @ 2015-09-09 16:59 sweat123 阅读(227) 评论(0) 推荐(0)
摘要:题意:求字符串中不重叠的出现至少2次的子串个数。如aaaa 子串有a aa,2个。 普通的求出height[]数组,然后枚举所有的长度差。 对于"baba" i height[i] 串 1 0 a 2 1 aba 3 0 ba 4 2 baba 对于可能的k(满足的差),从1开始枚举。对于k=1时, 阅读全文
posted @ 2015-09-08 23:02 sweat123 阅读(222) 评论(0) 推荐(0)
摘要:比较简单的应用。 阅读全文
posted @ 2015-09-08 19:42 sweat123 阅读(306) 评论(0) 推荐(0)
摘要:对于重复子串问题,可分为可重叠和不可重叠2种。 1.给定一个字符串,求最长重复子串,这两个子串可以重叠。 这道题是后缀数组的一个简单应用。做法比较简单,只需要求 height 数组里的最大值即可。2.给定一个字符串,求最长重复子串,这两个子串不能重叠。 这题比上一题稍复杂一点。先二分答案,把题目变成 阅读全文
posted @ 2015-09-08 19:16 sweat123 阅读(142) 评论(0) 推荐(0)
摘要:刚开始学,只会照着模板。 最长公共连续子串。 阅读全文
posted @ 2015-09-06 10:21 sweat123 阅读(113) 评论(0) 推荐(0)
摘要:最大子矩阵和最大连续子序列十分类似。 对于矩阵,可以将他的一列相加,然后成为一行,就是最大连续子序列了。 阅读全文
posted @ 2015-08-30 14:11 sweat123 阅读(163) 评论(0) 推荐(0)
摘要:想了好久,决定还是写一篇随笔来总结我的大一总结吧。 大一刚开学,恍惚。不知道干啥,浑浑噩噩了2个月左右,我接触到了acm,开始我也不知道是干嘛的,只听学长们说是学算法,虽然还是没怎么懂。 当时c语言看的差不多学完了,也不知道能干吗。后来学长们推荐了杭电oj,来了题a+b,然后又来了几发a+b。也不知 阅读全文
posted @ 2015-08-29 15:07 sweat123 阅读(253) 评论(0) 推荐(1)
摘要:一个分数假如 3/5=1/(1+2/3)=1/(1+1/(1+1/2)); 当分子出现1的时候,只要让分母减一。 阅读全文
posted @ 2015-08-27 20:43 sweat123 阅读(221) 评论(0) 推荐(0)
摘要:#include #include #define maxn 100 char name[maxn]; char s[30]; int main() { int i,j,t,n,ff=0,flag; int y1,y2,y3,y4;//无错 有错 全错 缺席 scanf("%d",&t); while(t--) { scanf("%d... 阅读全文
posted @ 2015-08-27 20:40 sweat123 阅读(222) 评论(0) 推荐(0)
摘要:#include #include #include using namespace std; #define maxn 1000 int a[maxn]; int main() { int i,j,t,n,ff=0; scanf("%d",&t); while(t--) { scanf("%d",&n); for(i=0;imax... 阅读全文
posted @ 2015-08-27 20:39 sweat123 阅读(149) 评论(0) 推荐(0)
摘要:这题开始的思路:用二维数组来存,果断超时了,因为数组开不了。 后来看了别人的题解,使用一维数组来存。 阅读全文
posted @ 2015-08-27 09:18 sweat123 阅读(286) 评论(0) 推荐(0)
摘要:#include #include #define maxn 105 int a[maxn],dp[maxn],map[maxn][maxn],pre[maxn]; int max(int x,int y) { return x>y?x:y; } void print(int p) { if(p==1)//一定从1点出发 { printf("1"); ... 阅读全文
posted @ 2015-08-26 17:00 sweat123 阅读(209) 评论(0) 推荐(0)
摘要:用dp[i][j]表示放了i件物品,j对时的最小值。 dp[i-2][j-1]表示取当前的 dp[i-1][j]表示不取当前的。 阅读全文
posted @ 2015-08-26 15:50 sweat123 阅读(138) 评论(0) 推荐(0)
摘要:标记数组用bool型防止超时。输入的f[ ]要排序。 阅读全文
posted @ 2015-08-26 14:01 sweat123 阅读(191) 评论(0) 推荐(0)
摘要:果然是神器。 阅读全文
posted @ 2015-08-26 11:04 sweat123 阅读(231) 评论(0) 推荐(0)
摘要:http://www.cnitblog.com/weiweibbs/articles/42735.html 上一期的文章里我们仔细研究了Nim游戏,并且了解了找出必胜策略的方法。但如果把Nim的规则略加改变,你还能很快找出必胜策略吗?比如说:有n堆石子,每次可以从第1堆石子里取1颗、2颗或3颗,可以 阅读全文
posted @ 2015-08-26 10:05 sweat123 阅读(172) 评论(0) 推荐(0)
摘要:找规律,发现时斐波那契数列;打表上。#include#include#define maxn 2147483647__int64 vis[100];int count;void init(){ memset(vis,0,sizeof(vis)); __int64 l1,l2; co... 阅读全文
posted @ 2015-08-26 09:25 sweat123 阅读(130) 评论(0) 推荐(0)
摘要:简单,找规律。#include#include#includeint main(){ int i,n,m; while(scanf("%d%d",&n,&m)!=EOF) { if(!n&&!m)break; if((n*m)%2==0) ... 阅读全文
posted @ 2015-08-25 16:32 sweat123 阅读(126) 评论(0) 推荐(0)

上一页 1 ··· 5 6 7 8 9 10 11 12 13 ··· 15 下一页