ACM_UVa
luke2834
A junior researcher~
展开
-
UVa524 - Prime Ring Problem 枚举排列模板题
题意 给你n,用1~n排列成环,保证相邻两数之和为素数思路 保证第一个数是1,然后用按序生成排列模板,每次先判断,满足条件否,不满足则剪枝。原创 2015-01-27 19:56:26 · 446 阅读 · 0 评论 -
Uva1401 Trie树 + 简单dp
题意 给你m个短字符串和一个长串,问你长串拆分成由短串组成的方法数。思路 dp[i] 表示从i开始的长串后缀,可以用短串组成的方案数。dp[i] += dp[i+len(x)] 其中x是从i开始的长串后缀的前缀,这个前缀属于短串集合。初始条件dp[n] = 1. 用短串建立Trie树,用长串后缀去在字典树上匹配,找到满足条件的短串,更新dp注意:Trie树原创 2015-04-05 16:25:26 · 676 阅读 · 0 评论 -
Uva10054 无向图打印任意欧拉回路
题意 有一些双色水珠,串成一条项链,前后两个水珠的前后位置颜色要相同,问你可行吗?如果可行,把串的方法打印出来思路 颜色作为节点,水珠为边建图。先用并查集判断连通性,再判断是否为欧拉图,最后dfs打印~注意无向图用过一条边i->j后,要删去i->j和j->i,还有打印的时候有小技巧,可以体会下~#include #include #include #include usin原创 2015-03-29 21:35:52 · 548 阅读 · 0 评论 -
Uva 437 DAG上的DP 记忆化搜索实现
题意 #include #include #include #include #include #include using namespace std;const int inf = 0x3f3f3f3f;typedef pair PII;typedef pair PI;#define MP make_pair#define PB push_back原创 2015-03-17 14:06:04 · 821 阅读 · 0 评论 -
UVa129 - Krypton Factor 不错的DFS入门题
题意 一个字符串被称为容易串,指其中有相邻的两个相同的子串,反之为困难串。问你由前L个字符组成的字典序第k小的困难串。保证答案串长不超过80。思路 难点在于如何判断当前串是否为困难串,整串比较O(n^3),但如果用dfs,每次只需要判断新加入的字母会不会使字符串为困难串即可,通过枚举不同长度的后缀即可,复杂度O(n^2)。是容易串就做可行性剪枝。感觉这题非常适合dfs,整个就是为其设计的感原创 2015-01-29 23:59:26 · 706 阅读 · 0 评论 -
UVa1025 DP (还要再看看~)
题意 请参考紫书描述~思路 状态开始没有定好,还是参考了下紫书.. dp[i][j] 表示在第i秒,第j个站上,一共的最少等待时间 初始条件dp[T][n] = 0,其它赋值为inf 转移:(1)在该站等一分钟(2)若有向左走的车,则可以乘上(3)若有向右走的车,则可以乘上 更新顺序:时间i倒着遍历 注意:数组要原创 2015-03-16 18:54:06 · 1475 阅读 · 0 评论 -
UVa11059 Maximum Product
题意 求最大连续子序列的积思路 本题可以暴力枚举起始和终止位置,O(n^2),不过为了练习,写了一个O(n)的算法,总体来算法不过简练大致思路,就是正反两个方向遍历数组,预处理对所有负数的位置,保存在下一个0前还有几个负数,在上一个0后还有几个负数,然后双向遍历,遇到正数,更新sum,遇到0,清空sum,更新max,遇到负数,要判断若当前sum是负数或者该负数后,在下一个0前还有负数,则更原创 2015-01-25 22:14:14 · 544 阅读 · 0 评论 -
UVa10976 - Fractions Again?!
题意 给k,找到满足1/k = 1/x + 1/y 的x和y(要求x>=y)思路 利用式子推导出x = k*y/(y-k),由于x>=y,有y k*y/(y-k),可以推出k #include #include #include #include #include #include using namespace std;typedef pair PII;vector a原创 2015-01-25 22:46:02 · 935 阅读 · 0 评论 -
UVa140 - Bandwidth DFS最优性剪枝题
题意 一个无向图,把其中点排成一个序列,在该序列中找到,任意两个有边的点之间最大的距离,作为该序列的一个value,然后找出value最小,且字典序最小的那个序列及value值思路 基本思路枚举排列,但是其中可以进行最优性剪枝,很类似于阿尔法-贝塔剪枝。#include #include #include #include #include using namespace std原创 2015-01-30 00:14:39 · 579 阅读 · 0 评论 -
UVa725 Division
题意 给n,要求给出所有满足条件的0~9的排列,条件是前5个数字组成的数除后5数字组成的数等于n思路 主要要注意到枚举后5个数字即可,这样通过乘n,可以得到被除数,再判断被除数满足条件与否即可。这种思想在有等式出现的题中很常见,有x个未知数满足一个等式,这样只需枚举x-1个即可,另一个通过等式计算得来。枚举后5个数字方法也很多,可以直接暴力枚举10000~99999的数再判断满足条件否,这原创 2015-01-25 19:33:05 · 544 阅读 · 0 评论 -
Uva11732 字典树的应用 邻接矩阵(或称左孩子,右兄弟法)保存字典树
题意 给你一些单词,给你一个字符串比较函数,所有单词比较字典序,问总比较的次数是多少。思路大体思路就是两个字符串,设公共前缀的长len,比较次数为2*len+1,若匹配成功则比较次数2*len+2.在字典树上保存,每个边经过的次数和每个节点在该节点结束的单词个数。边建树边计算。注意树很深,且单词数相对于树深较少,因此选择邻接矩阵保存字典树...(不这么做会被T死的......)原创 2015-04-05 21:59:59 · 670 阅读 · 0 评论