08 2012 档案
ural Timus 1303. Minimal Coverage
摘要:http://acm.timus.ru/problem.aspx?space=1&num=1303简单dp 排序枚举就可以 不过由于M最多可以是5000所以需要用到一定的优化 比如说 既然要覆盖 0---m 那么在0左边的区间 和在m右边 的区间 和被其他区间包含的区间 都应该去掉代码:#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<string>#include<vector>#include<se
阅读全文
ural 1501. Sense of Beauty
摘要:http://acm.timus.ru/problem.aspx?space=1&num=1501dp+记忆话搜索给你两个长度为n的0 1 串总和有n个0 和n个1求一个新串 要求任意前i项 0的个数 和1的个数 差不能超过1ans[i][j] 表示要想到第一个串的第i个 第二个串的第j个时 上一个应选那个串的字符 0代表无法选 即无答案sum[i][j] 表示对应ans 的和(-1表示‘0’ 1 表示‘1’ )这样它的绝对值不超过1就行了代码:#include<iostream>#include<cstdio>#include<cstring>#i
阅读全文
rual 1741. Communication Fiend
摘要:http://acm.timus.ru/problem.aspx?space=1&num=1741题目大意:主人翁需要升级客户端 现在的版本是 1 Licensed想以最快速度升级到版本 nm 个upgrade programs每一个都有属性 x y d s表示可以将版本x 升级到版本 y d为它的大小 越小下载越快 s为类型 有 Licensed Cracked Pirated三种升级是有限制的 从x开始升级必须 当前版本就是x 一旦被Pirated升级后 无论再用什么类型升级 都还是 PiratedLicensed不可以在Pirated版本上升级要求所以用到的软件的d的和 最小存在
阅读全文
poj 1184 聪明的打字员
摘要:http://poj.org/problem?id=1184bfs 但是如果不加好的优化是过不了的 好像很多人多看了一分解析 我也是很详细 下面是链接:http://blog.csdn.net/lyy289065406/article/details/6648695非常不错的解题报告我的代码 很丑:#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<string>#include<vector>#include<
阅读全文
poj 3322 Bloxorz I
摘要:http://poj.org/problem?id=3322bfs 由于状态多了 所以要多开一维数组记录状态 没有什么难度 只不过是比较繁琐ans忘了初始化 贡献了一次wa代码:#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<string>#include<vector>#include<set>#include<queue>#include<stack>#include<
阅读全文
poj 3666 Making the Grade
摘要:http://poj.org/problem?id=3666这是一道 练习左偏树的好题 不过很多人都是用动态规划做的没看过左偏树的建议看看 课件之类的 不难理解 有一份ppt 上有原题代码:#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<string>#include<vector>#include<set>#include<queue>#include<stack>#inclu
阅读全文
poj 2823 Sliding Window
摘要:http://poj.org/problem?id=2823优先队列代码:#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<string>#include<vector>#include<set>#include<queue>#include<stack>#include<cmath>#define LL long longusing namespace std;con
阅读全文
poj 1734 Sightseeing trip
摘要:http://poj.org/problem?id=1734比着别人的代码写的 自己对floyd的理解还是不深刻呀#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<string>#include<vector>#include<set>#include<queue>#include<stack>#include<cmath>#define LL long longusi
阅读全文
poj 2749 Building roads
摘要:http://poj.org/problem?id=27492-sat + 二分 在二分里面根据情况 有时候是求大的 有时候是求小的这个二分里面 我分的时候while(l<r)l=mid+1;r=mid;因为 mid可能就是答案 还有就是如果最后停在 r为有边界时 r可能不是答案需要特判 一下代码:#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<string>#include<vector>#include&
阅读全文
poj 2723 Get Luffy Out
摘要:http://poj.org/problem?id=27232-sat 二分代码:#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<string>#include<vector>#include<map>#include<queue>#include<stack>#include<cmath>#define LL long longusing namespace std
阅读全文
poj 3648 Wedding
摘要:http://poj.org/problem?id=3648新娘和新郎 和其他夫妇 一共n对 每对夫妇不能做在同一侧 而且有奸情的人两个人(男女 男男 女女 出题人口味好重呀)不能同时坐在新娘的对面2-SAT 限制条件 n对夫妇一共2×n个人 0--n-1 是新娘 n--2×n-1是对应新郎 染色时 1代表和新娘同侧 -1代表不同侧首先 新娘必须和新娘同侧2×n-->0 新郎必须和新娘对面n-->n+2×n 其他夫妇必须异侧有奸情的有一个在新娘对面 另一个一定和新娘同侧代码及其注释:#include<iostream>#inclu
阅读全文
poj 3683 Priest John's Busiest Day
摘要:http://poj.org/problem?id=3683标准的2-sat 而且是需要输出路径的一直纠结 缩点后建反向图 再利用拓扑排序那一点到底是怎么弄的 原来是自己的拓扑排序没学好 晕还有刚开始学邻接表的时候一直用动态的 就是没加一条边都要申请一个 new node没想到这次就超时了 因为边太多了 改成静态的直接100ms+ 差距太大了 以后不敢再用动态的了代码:#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<string&g
阅读全文
poj 3678 Katu Puzzle
摘要:http://poj.org/problem?id=36782-SAT 问题 关键在于处理关系 看了别人的解析 自己还是不行呀代码:#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<string>#include<map>#include<queue>#include<stack>#include<cmath>#define LL long longusing namespace
阅读全文
poj 3207 Ikki's Story IV - Panda's Trick
摘要:http://poj.org/problem?id=3207一个圆上有n个点 m条连线(一个点最多只能连一条)每条线可以走圆外 或 圆内 2-SAT问题 把每条边转化为两条即为A 和 A‘ 他们只能出现一个 然后把相交的直线视为 相斥 这样就转化成简单的2-SAT问题了代码及其注释:#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<string>#include<map>#include<queue>#i
阅读全文
poj 1679 The Unique MST
摘要:http://poj.org/problem?id=1679问最小生成树是否唯一 其实就是问次小生成树是否等于最小生成树思路:1 Kruskal 求最小生成树MIN 记录哪些边用了 哪些没有用 并建树2 dfs 从每一点开始 求最小生成树上任意两点间的最长边3 枚举没用过的边加入的情况 取(MIN+此边权-树中此两点间最长边权) 最小的那一个就是次小生成树代码及其注释:#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<string&g
阅读全文
poj 3164 Command Network
摘要:http://poj.org/problem?id=3164比着别人的代码写的 有些地方还是不理解 但是不能老在这上面耽误 先放一下 以后遇到再慢慢研究#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<string>#include<map>#include<queue>#include<cmath>#define LL long longusing namespace std;const i
阅读全文
poj 2513 Colored Sticks
摘要:http://poj.org/problem?id=2513和离散数学有关 欧拉回路问题同一颜色的标记为同一点 同一stick 的两端为相连状态数学什么的 最不擅长了 看了别人的解析两个限制条件1 图为联通 可用并查集判断2 度 (出度+入度)数为基数的点为0 或者为 2 输入时相加不满足上述两个条件中的任何一个 都Impossible存颜色和查询要用字典树 用map超时代码及其注释:#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<
阅读全文
hdu 4358 Boring counting
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=4358map 版本 比赛的时候也用map 写了 不过没有加优化 所以超时了调试了一上午 下午自己出数据测了一下才知道那里出错了 汗大体思路:用map<int , int > 保存子树某个数出现的次数 然后从叶子节点向上更新合并 合并的时候需要 size小的向size大的上面合并 这样省时 这是由map 的构造决定的用c++ 提交要 手动开栈 否则会栈溢出 用G++ 提交可以避免但花费时间要长一些自测数据 对我来说很重要的一组数据 就是这里错了一上午16 11 2 3 4 5 61 21 33 43
阅读全文
hdu 4357 String change
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=4357推理题 要想在比赛中准确推出来 还真难 看了解析才懂得以下转自出题人解析:当字符串长度为2时:直接模拟即可(最多26次)。当字符串长度大于2时:1. 定义字符串的奇偶性为该字符串所有字符之和的奇偶性。2. 因为每次变化操作字符串的字符和共增加了2,所以当字符串的奇偶性不同时答案一定为N O。3. 当字符串的奇偶性相同时可证明答案一定为Y ES,证明如下:对于任意3个位置的字符(x1 , x2 , x3 ),可进行如下变化:(x1 , x2 , x3 ) → (x1 , x3 + 1, x2 + 1) →
阅读全文
hdu 4351 Digital root
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=4351线段树 每个节点保存前缀 后缀 和 剩余情况 中(k)(0<=k<=9) 是否出现除了叶子节点外 其它节点要用左右孩子 来维护求答案时类似 维护的过程中有重复的计算 需要用打表和位运算来优化 否则超时注意0的情况代码及其注释:#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<map>#include<stack>#
阅读全文
hdu 4359 Easy Tree DP?
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=4359上不起呀 错在了细节上导致比赛时没做出了呀 题不并不难左子树的和小于右子树的和 由于都是2的幂 所以只要且必须右子树上有剩下 数中最大的那个就可以了(当然左/右为空的特殊)查询时注意 根节点的选取是任意的 所以有假如说有n个节点 那根节点就有n种选法 还有根节点选出后 如果左右都有节点那么剩余最大节点一定在右面所以情况1 左/右为空2 左右深度同时为D-13 只有左/右深度为D-1要注意时刻取模这题会用到组合中的从几个点中选几个点 的情况数量 由于360太大 所以轻松超long long所以用函...
阅读全文
hdu 4340 Capturing a country
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=4340树型dp 理解起来并不难但是状态有点多 比赛的时候没敢写解题上好像是用的三维数组 有两个维大小是2 的自己干脆写了6个一维数组 然后6个dp函数相互调用 虽然代码有点长但是理解方便 思路也比较清晰对予一个子树的根节点 有6中方法1 A从这里进攻2 B从这里进攻3 A攻击这里时间花一半 因为上面的相邻城市A 已经提前攻破4 B-------------------------------------5 A攻击这里花一半时间 因为下面的某个相邻城市已经被A提前攻破6 B-------------------
阅读全文
hdu 4342 History repeat itself
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=4342当出现和long long相关的操作时 一定要注意定义的int 变量在相加或相乘时是否会越界#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<map>#include<cmath>#define LL long longusing namespace std;const int N=100005;LL asum[N];LL n
阅读全文
hdu 4345 Permutation
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=4345记忆化搜索 dp 比赛的时候没想出来呀亲此题和 置换群有那么丁点关系 但关系不大题目让我们求的是 实际是相加合为n的若干整数 他们的最小公倍数有多少种由于1不会影响最小公倍数所以小于等于n的都可以我们可以这么想在这个整数集合里 我们不让一个质数和它的幂次数同时出现这样的话集合里面的所有数都互质 这样就求种类数就容易递推了假如说 n=6 小于它的最小质数是2 对于其它可能存在的质数(只是可能)的质数 (3 , 5)首先 2 可以不存在 是一种情况然后2存在 2和其它的质数互质 所以2和集合可以组成的任意最
阅读全文
poj 3255 Roadblocks
摘要:http://poj.org/problem?id=3255第k短路#include<iostream>#include<cstdio>#include<algorithm>#include<cmath>#include<queue>#include<string.h>using namespace std;const int N=5001;const int M=200005;const int MAX=0x5fffffff;int head[N];struct node{ int j,k; int next;}side
阅读全文
poj 2449 Remmarguts' Date
摘要:http://poj.org/problem?id=2449第k短路 刚开始上网找了分标准解法 没看懂呀 汗 然后看别人都用了A*算法 我也不知道是什么东西如果我们用队列枚举的话 当第k次出现终点 则这时就是到终点的第k短路但是这样队列是承受不住的 因为数据会太多对于这道题 思路好像基本上就是构造一个函数 f(i)=g(i)+h(i) g为出发点到i的最短距离 h为终点到i的最短距离f 为他们的和但每次取f最小的点进行更新直到终点出现第k次 既为答案#include<iostream>#include<cstdio>#include<algorithm>#i
阅读全文
poj 2728 Desert King
摘要:http://poj.org/problem?id=2728分数规划+二分 此题的图过于稠密 需要用prime 找最小生成树代码:#include<iostream>#include<cstdio>#include<algorithm>#include<cmath>#include<queue>#include<string.h>using namespace std;const double eps=1e-5;const int N=1001;const double M=10000000000.0;struct nod
阅读全文
poj 3621 Sightseeing Cows
摘要:http://poj.org/problem?id=3621分数规划+二分 最优比率环 不是很难 本题中没有说明从哪个点开始 不过好像默认为1就可以过 poj数据又水了里面的用spfa判定部分还是不太懂代码及其注释:#include<iostream>#include<stdio.h>#include<algorithm>#include<math.h>#include<queue>#include<string.h>using namespace std;const double eps=1e-5;const int N
阅读全文
poj 1125 Stockbroker Grapevine
摘要:http://poj.org/problem?id=1125#include<iostream>#include<cstdio>#include<cstdlib>#include<ctime>#include<queue>#include<map>#include<cstring>#include<algorithm>#define LL long longusing namespace std;const int N=105;const int MAX=100000;int dist[N][N];
阅读全文
hdu 1874 通畅工程续
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=1874很水#include<iostream>#include<cstdio>#include<cstdlib>#include<ctime>#include<queue>#include<map>#include<cstring>#include<algorithm>#define LL long longusing namespace std;const int N=205;const int MAX=0x5f
阅读全文
poj 1639 Picnic Planning
摘要:http://poj.org/problem?id=1639最小限制生成树 黑书上有 推荐 我看了上面的解析自己闷头写了一个 不好 我自己看着都乱 唉就这样吧大体就是 先求出除了关键点以外的点形成的若干最小生成树 然后把这些最小生成树和关键点用最短的距离联系起来然后不断点加与关键点之间的的连线 每联一个就会多一个环 然后就得删一个边 把环取消 不过加的边 和删的边的选取必须是加边减去删边的值最小 一旦限度达到 或者更新后不如原来的小了 则放弃更新代码:#include<iostream>#include<cstdio>#include<cstdlib>#in
阅读全文
hdu 4333 Revolving Digits
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=4333对我来说这个题 太难了 看着标准程序敲的 伤不起呀解析说是和KMP有关 不过已经变形的不成样子了 如果在比赛时做出了 你真的是牛神了基本方法就是 先copy一个放在原串后面依次求 以某处为开始点比较时原串要比较到的位置 位置超出字符串长度 说明相等还要出来连续循环的情况 因为要找不同的数#include<iostream>#include<cstdio>#include<cstdlib>#include<ctime>#include<queue>
阅读全文
hdu 4332 Constructing Chimney
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=4332啊 又是一道伤不起的题呀 刚开始看了说是状态压缩 dp 然后自己就用滚动数组去写了 超时n的大小是 10^9 当然超时 唉又仔细看了一下解题 用什么矩阵快速幂乘 好吧用了一个还是超时看了标准代码没看懂呢 愁死了 最后把不同幂的矩阵打表 侥幸过了........................................................ 废话分割线 ..........................................................用0表示这个地方需要下
阅读全文
hdu 4331 Image Recognition
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=4331我受不了了 这次比赛的题怎么回事 该超时的不超时 不该超的超了比如说第四题 用二分 我感觉就应该让过的 他就是不让用哈希就过了 骑士那题结果dfs就过了这个第一题吧 标程里面解析的 离散+树状数组那部分我没看懂 写了个暴力的 过了应该是接近 n^3 的呀唉 不说了 伤不起的题呀由1组成的正方形 正方形的对角线一定在整个矩阵的某一斜线上 枚举这些斜线每条斜线上为1的点打表 两两配对看是否能行 (这部分需要用到4个数组分别标记一个1点能上下左右延长的长度)#include<iostream>#i
阅读全文
poj 3277 City Horizon
摘要:http://poj.org/problem?id=3277经典的矩形面积并 对y离散后 建树 用拆点后的以x为顺序 依次更新代码:#include<iostream>#include<cstdio>#include<cstdlib>#include<ctime>#include<queue>#include<cstring>#include<set>#include<cmath>#include<algorithm>#define LL long longusing namespace
阅读全文