随笔分类 -  Acm

上一页 1 ··· 7 8 9 10 11 12 13 14 15 下一页
摘要:我思维比较差,平时也不敢碰dp,但是没办法必须学。这题虽然做了很久,修修改改很久,但是最后做出了,还是很好地。对于如果a[j]>a[i],并且j>i,那么i能跳到j,那dp[j]=max(dp[i]+a[j],dp[j]);如果不能跳转dp[j]=max(dp[j],a[j]);保证dp[j]最大。... 阅读全文
posted @ 2015-08-20 16:27 sweat123 阅读(150) 评论(0) 推荐(0)
摘要:题意:如果有相同的字母,这些字母只输出一次。其余的都输出。先做一次LCS,标记相同的字母,然后回溯输出。#include#include#define maxn 110char s1[maxn],s2[maxn];int dp[maxn][maxn],map[maxn][maxn],len1,len... 阅读全文
posted @ 2015-08-20 11:00 sweat123 阅读(125) 评论(0) 推荐(0)
摘要:dp[i][j]表示配对的最大值。dp[i-1][j]表示s1[i-1]与'-'配对.dp[i][j-1]表示s2[j-1]与'-'配对.dp[i-1][j-1]表示s1[i-1]与s2[j-1]配对。dp[i][j]=max(dp[i-1][j]+mp[s1[i-1]]['-'],dp[i][j-... 阅读全文
posted @ 2015-08-20 09:58 sweat123 阅读(159) 评论(0) 推荐(0)
摘要:#includeint main(){ int i,t,n; int dp[50]; dp[1]=0; dp[2]=1; dp[3]=2; for(i=4;i<=40;i++) dp[i]=dp[i-1]+dp[i-2]; scanf("%d"... 阅读全文
posted @ 2015-08-19 15:14 sweat123 阅读(89) 评论(0) 推荐(0)
摘要:/*每一种情况都可以由周围2个点得出*/#includeint main(){ __int64 dp[60]; int i,t,l,r; dp[1]=0; dp[2]=1; dp[3]=2; for(i=4;i<50;i++) dp[i]=dp[i-... 阅读全文
posted @ 2015-08-19 15:12 sweat123 阅读(107) 评论(0) 推荐(0)
摘要:/*1~4直接取得;然后后面的生牛的时候都是前一年的加上一定的数。从第5年看,第五年出生的牛肯定要加上第四年出生的,然后由于第一个出生的牛开始生小牛,这和最开始的牛生孩子是一样的,所以+dp[i-3];*/#include#includeint dp[60];int main(){ int i... 阅读全文
posted @ 2015-08-19 15:03 sweat123 阅读(368) 评论(0) 推荐(0)
摘要:比较简单。#include#include#include#define kind 96#define maxn 2000000struct node{ node *fail; node *next[kind]; int flag; int id; void init(... 阅读全文
posted @ 2015-08-19 10:00 sweat123 阅读(128) 评论(0) 推荐(0)
摘要:MLE无数发。后来换了c++交过了。。。来个标记数组即可。#include#include#include#include#define maxn 10010using namespace std;struct actrie{ actrie *fail; actrie *next[94]... 阅读全文
posted @ 2015-08-18 16:43 sweat123 阅读(185) 评论(0) 推荐(0)
摘要:字典树也可以做。#include#include#include#define maxn 1000010struct ac_mation{ ac_mation *fail;//失败指针 ac_mation *next[26];//26个字母 int flag;//标记是否为最后一个... 阅读全文
posted @ 2015-08-18 11:03 sweat123 阅读(166) 评论(0) 推荐(0)
摘要:http://www.cppblog.com/mythit/archive/2009/04/21/80633.html首先简要介绍一下AC自动机:Aho-Corasick automation,该算法在1975年产生于贝尔实验室,是著名的多模匹配算法之一。一个常见的例子就是给出n个单词,再给出一段包... 阅读全文
posted @ 2015-08-18 11:02 sweat123 阅读(261) 评论(0) 推荐(0)
摘要:#include#include#define maxn 1201char c[300][301],s[maxn];int col;int getmax(){ int i,j,len=strlen(s); int max=0; for(i=0;imax) ma... 阅读全文
posted @ 2015-08-18 08:24 sweat123 阅读(221) 评论(0) 推荐(0)
摘要:二分匹配简单题,看懂题意,建图比较重要。#include#include#define maxn 1100int map[maxn][maxn];int a[maxn],b[maxn],match[maxn],vis[maxn];int n,m;void makemap(){ int i,j,... 阅读全文
posted @ 2015-08-18 08:23 sweat123 阅读(170) 评论(0) 推荐(0)
摘要:扩展KMP的简单题。#include#include#define maxn 51010char s[maxn],t[maxn];int extand[maxn],next[maxn];void getnext(char *t){ int i,k,j,len=strlen(t); nex... 阅读全文
posted @ 2015-08-18 08:21 sweat123 阅读(164) 评论(0) 推荐(0)
摘要:#include#include#define maxn 10010int a[maxn],dp[maxn];int main(){ int n,i,j,max,flag,l,r,fl; while(scanf("%d",&n)!=EOF) { if(n==0) ... 阅读全文
posted @ 2015-08-17 10:21 sweat123 阅读(110) 评论(0) 推荐(0)
摘要:分三种情况。至少取一种 那可以直接取 或者从上一种情况来取.dp[i][k]=max(dp[i][k],dp[i-1][k-a[j].c]+a[j].v,dp[i][k-a[j].c]+a[j].v);至多取一种 只能从上一种情况来取 dp[i][k]=max(dp[i][k],dp[i-1][k-... 阅读全文
posted @ 2015-08-17 09:51 sweat123 阅读(248) 评论(0) 推荐(0)
摘要:#include#include#define maxn 501000char s[maxn],t[maxn];int next[maxn],extand1[maxn],extand2[maxn];int ans[30],sum[maxn];void getnext(int *next,char *... 阅读全文
posted @ 2015-08-15 14:09 sweat123 阅读(263) 评论(0) 推荐(0)
摘要:慢慢研究可以发现,可以用扩展kmp来求。由于扩展kmp的next[]只有一部分,当前位子前面那部分和母串的后部分,所以可以将字符串复制接在后面一次。先求如果next[]>0&&next[]!=len,那么只要考虑后面那位的大小比较。如果next[]>=len 那就是相同。如果next[]==0,就是... 阅读全文
posted @ 2015-08-13 16:28 sweat123 阅读(134) 评论(0) 推荐(0)
摘要:刘雅琼论文 http://wenku.baidu.com/view/8e9ebefb0242a8956bece4b3.html论文讲的非常详细。给定母串S,子串T,n=strlen(S),m=stlrne(T);extand[i]=S[i...n]与T的最长公共前缀长度,要在线性时间求出所有exta... 阅读全文
posted @ 2015-08-13 10:54 sweat123 阅读(275) 评论(0) 推荐(0)
摘要:#include#include#include#define maxn 10struct trie{ trie *next[10]; int sum; int flag;};trie *root;char way[5010][10];void init(){ root=(t... 阅读全文
posted @ 2015-08-12 16:26 sweat123 阅读(149) 评论(0) 推荐(0)
摘要:给你一堆字符串,然后再给你几个查询,前面那些字符串中有多少个包含了这个串。所以可以把开始inset()的字符遍历一遍,同时可能出现该字符串在某个字符串中有多次出现,所以还要用flag标记,来区分不同的串。#include#include#includestruct trie{ int flag... 阅读全文
posted @ 2015-08-12 16:05 sweat123 阅读(160) 评论(0) 推荐(0)

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