题目链接:uva 1076 - Password Suspects
题目大意:有一个长度为n的密码,存在m个子串,问说有多少种字符串满足,如果满足个数不大于42,按照字典序输出。
解题思路:根据子串构建AC自动机,然后记忆化搜索,dp[i][u][s]表示第i个字符,在u节点,匹配s个子串。
#include
#include
#include
#include
#inclu...
分类:
其他好文 时间:
2014-09-05 23:54:12
阅读次数:
362
UVA 10537 - The Toll! Revisited
题目链接
题意:给定一个无向图,大写字母是城市,小写字母是村庄,经过城市交过路费为当前货物的%5,路过村庄固定交1,给定起点终点和到目标地点要剩下的货物,问最少要带多少货物上路,并输出路径,如果有多种方案,要求字典序最小
思路:dijstra的逆向运用,d数组含义变成到该结点至少需要这么多货物,然后反向建图,从终点向...
分类:
Web程序 时间:
2014-09-03 00:20:55
阅读次数:
383
题目连接:uva 1556 - Disk Tree
题目大意:给出N个目录关系,然后按照字典序输出整个文件目录。
解题思路:以每个目录名作为字符建立一个字典树即可,每个节点的关系可以用map优化。
#include
#include
#include
#include
#include
#include
using namespace std;
const int ma...
分类:
其他好文 时间:
2014-09-02 22:54:35
阅读次数:
248
题目链接:点击打开链接
题意:
给定n*m的矩阵
# 是墙 . 和字母是平地
最多有26个字母(不重复出现)
下面k个指令,
每个指令代表移动的方向和步数。
若以某个字母为起点,依次执行所有的指令,任何过程都不会撞到墙或走出地图,则这个字母合法。
按字典序输出所有合法的字母。若没有字母合法则输出' no solution'
预处理一下前缀和然后暴力。
#include ...
分类:
其他好文 时间:
2014-09-01 19:39:13
阅读次数:
239
题目大意:。。。。。有点长自己看吧
首先既然是排序后的序列字典序最小,那么一定要选尽量小的数字走
然后T是1~m*n的序列 所以不存在重复(一开始我居然把这个条件看漏了)
好的这题贪心
每次选择没有被标记的最小点,然后把左下方和右上方都标记掉(记得标记重复时break,不然就挂了)
注意5000*5000的数组开两个int就是极限了 开多了妥妥MLE 所以T数组记得重复利用
暴力跑了3...
分类:
其他好文 时间:
2014-09-01 17:55:53
阅读次数:
347
题目:UVA10624 - Super Number(dfs)
题目大意:给你n和m要求找出这样的m位数,从第n位到第m位都满足前i位是可以被i整除,如果没有这样的数,输出-1.有多个就输出字典序最小的那个。
解题思路:将每个位置都用0..9枚举一下,注意第一个字符不能是0,然后dfs判断每个位置是否都满足要求。注意这里是会爆long long的,所以要取模一下。本来以为这样的...
分类:
其他好文 时间:
2014-09-01 10:47:33
阅读次数:
243
1 bool lexicographicalSmaller(vector a, vector b) 2 { 3 int n = a.size(); 4 int m = b.size(); 5 for(int i = 0; i 2 bool lexicographicalS...
分类:
其他好文 时间:
2014-08-31 13:03:31
阅读次数:
540
题意 给你一个环形串 输出它以某一位为起点顺时针得到串的最小字典序
直接模拟 每次后移一位比较字典序即可 注意不能用strcpy(s+1,s)这样后移 strcpy复制地址不能有重叠部分
#include
#include
using namespace std;
const int N = 150;
char s[N], ans[N], ...
分类:
其他好文 时间:
2014-08-31 10:33:51
阅读次数:
508
题目大意:UVA10029 - Edit Step Ladders(LIS)
题目大意:给你一个按照字典序读入的单词,然后要求你找出最长的序列,要求这个最长的序列也要满足字典序,并且后一个是由前一个单词,由在任意的地方替换,增加,删除一个字符变换来的。
解题思路:LIS。但是这里的O(n^2) 25000,超时。但是查找符合的单词有个规律,符合变换要求的单词的长度是有要求的,必...
分类:
其他好文 时间:
2014-08-30 11:14:49
阅读次数:
247
题意:
有n个宇航员 他们需要完成A、B、C三种任务 年龄>=平均年龄的人可以做A和C 年龄
思路:
一类人有2种选择而且必须选1个 因此想到2-sat 根据年龄和讨厌关系来建边 之后先做可行性判断 确定可以后 求出任意一组可行解 不需要字典序最小
代码:
#include
#include
#include
#include
using namespace std;
...
分类:
其他好文 时间:
2014-08-29 20:06:48
阅读次数:
270