上一页 1 ··· 4 5 6 7 8 9 10 11 下一页

2013年4月12日

摘要: 题意 就是将一个含有 病毒的字符串 修改成一个不含病毒的字符串; 方法 由于 只有 四种字符,那么状态就很少了,每步只有四个状态可达,上一个状态只有 1000多种,所以能承受;#include<iostream>#include<stdio.h>#include<cstring>#include<algorithm>using namespace std;struct date{ date *next[5],*fail; int in,flag;}tree[1123],*que[1123],*root;int total,head,tail,ha 阅读全文
posted @ 2013-04-12 15:52 浪舟 阅读(168) 评论(0) 推荐(0) 编辑
摘要: 题目 给你 N 个有价值的串,然后要你 在一个 长度 为 50 的字符组成的所有字符串里面 找到一个价值最大的串,如果,,,,,,,,方法 反正就那样把!! 可以考虑一个字符走到有价值串的末尾接着往下走,到根节点,如果根节点也进不去,那就没有什么用了,如果根节点进去了,当然也就会沿着字符往下走;这样不会影响到结果了;所以,,这样答案是对的, 至于 保存字符什么的,真的蛋疼死了,,,,,,,#include<iostream>#include<stdio.h>#include<algorithm>#include<cstring>#define m 阅读全文
posted @ 2013-04-12 15:41 浪舟 阅读(160) 评论(0) 推荐(0) 编辑
摘要: 题意,,,给你 M 个字符去组成密码,密码的长度规定为 N,所组成的密码要求至少 含有 M 个字符里面的 K 个,字符可能包含,不能重复计算;这个 有点难度;因为 M 很小,所以,可以用二进制来做,当然 内存可能会爆,如果不注意好的话; 上题是要不包含字符,而这题是要求包含字符,那么对应的每一个状态是不是又多了一维变量,每个状态包含了多少个字符,从 1~k --》#include<iostream>#include<stdio.h>#include<cstring>#include<algorithm>#define mod 20090717us 阅读全文
posted @ 2013-04-12 15:25 浪舟 阅读(243) 评论(0) 推荐(0) 编辑
摘要: 题目意思 就是给你 N 个字符 去组成 M 长的单词有多少种方法是 不包含病毒串的 病毒串有 p 个方法 恶心啊! 这题 是 DP 的经典题目了,因为所有的字符 可以看成是 单词中的后缀 在 着 p 个病毒中 都是没有一点点匹配的 比如说 abcdefg 这个字符,病毒有 hij,sek,ac 等等,你看字符是不是后缀都没有匹配到p个单词前缀的任意位置前缀,放在root ,然后,对每个就是有匹配的字符了,比如说 abcdehi ,abcdehh 等等,那么他的全集就是所有可能的结果了;然后就是 dp 的部分 dp 部分倒是很好理解;依据节点数分类; 坑爹的,这题目还附加了一个大数,结... 阅读全文
posted @ 2013-04-12 15:03 浪舟 阅读(132) 评论(0) 推荐(0) 编辑
摘要: 题目意思 就是给你 N 个单词,然后按照 顺序 后面一个单词是前面一个单词的字串,则可以记忆;每个单词有自己的价值;要求最大价值;方法 这题 没有 刷掉;要用到 线段数等数据结构来优化;模仿了一个超时的版本; 也就是先建树,然后一个一个字符的插入,上面 那 spoj 上的dp 方法类似;就是,如果这个字符能成为一个单词的字串;则用记录最优值;在最底层的时候把价值全部加上去;明显是超时的, 因为对每个节点来说,都要找他的所有最长前缀,不然就会wa 因为单词可以重复,可能在后面的单词里面会价值会发生改变,变大了,不能保存最优值;超时了 谁能教我 优化#include<iostream> 阅读全文
posted @ 2013-04-12 14:53 浪舟 阅读(274) 评论(0) 推荐(0) 编辑
摘要: 题目意思 就是说一个给你 N 个单词,然后着 N 个单词中一个单词肯能包含另外一个单词,这个单词可能有包含另外一个单词,这样一直下去,做多能包含多少个单词;思路 想想这题不用 AC 自动机会怎么做;首先对单词排序,然后用DP 的思想,后面一个单词如果包含前面那个单词,则从那个单词的最优值 +1 ,但N 太大了 不行; 转成 自动机的思想就是 先把所有字符 插入到字典数;你会发现,从根节点往后面走,知道找到一条路结束了,那么中间经过的那 N 个单词的后缀,都是符合字串包含字串的;还有一个问题就是;虽然字串包含字串,但结果不一定就是最优的;可能在这条路径的中间位置会出现他包含了... 阅读全文
posted @ 2013-04-12 14:39 浪舟 阅读(238) 评论(0) 推荐(0) 编辑
摘要: 题意 就是给你N 个单词 和 一篇文章;然后问你 在这篇文章里面有多少个 出现的单词;如果一个单词是一个单词的字串,则只能算一个;方法 首先用最简单的方法 把字符串解码,然后用模板跑一遍,找到所有单词,然后再用着写被标记的单词 插入字典树,把一路上的字符全部标记;#include<iostream>#include<stdio.h>#include<cstring>#include<algorithm>using namespace std;char cha[2550][1123],str[5123456],sss[5123456];bool v 阅读全文
posted @ 2013-04-12 14:17 浪舟 阅读(206) 评论(0) 推荐(0) 编辑
摘要: 题意 还是前面题目的意思; 只是需要解码方法 不说了#include<iostream>#include<stdio.h>#include<cstring>#include<algorithm>using namespace std;char str[5123456],sss[5123456],cha[1123];struct date{ date *next[27],*fail; bool fell; int sum;}tree[451234],*que[451234],*root;int tail,head,ptr;date *creat_n 阅读全文
posted @ 2013-04-12 13:49 浪舟 阅读(144) 评论(0) 推荐(0) 编辑
摘要: 题意 就是N个病毒,一个 匹配串,然后让你从这匹配串里面去找病毒出现的次数;方法 如果匹配 则往下走,如果不匹配,或者没有字符越界,回到根节点;#include<iostream>#include<stdio.h>#include<cstring>#include<algorithm>using namespace std;struct date { date *next[26],*fail; int tab;}tree[51234],*que[51234],*root;int tail,head,ptr,res[1123];char str[2 阅读全文
posted @ 2013-04-12 13:45 浪舟 阅读(162) 评论(0) 推荐(0) 编辑
摘要: 题目意思 就是说给你N个病毒,M 个模式串,分别找出这M个模式串里面有哪些病毒,把标号给输出来; 方法 首先 因为要用到多次,所以用一个 标记 看这是第几次进去,接下来就是模板题了; 1 #include<iostream> 2 #include<stdio.h> 3 #include<cstring> 4 #include<algorithm> 5 using namespace std; 6 7 struct date 8 { 9 int num,tab; 10 date *next[130],*fail; 11 date(... 阅读全文
posted @ 2013-04-12 13:41 浪舟 阅读(186) 评论(0) 推荐(0) 编辑
上一页 1 ··· 4 5 6 7 8 9 10 11 下一页

导航