随笔分类 -  简单题

HDU 4068【全排列枚举简单题】
摘要:题目:SanguoSHA题意:三国杀1vs1,给出英雄之前的约束关系,无论对手如何安排英雄pk顺序,是否都有机会赢。解题思路:比赛时第二道看的题目,看到N小于等于6时就果断敲了。对自己英雄从字典序最小生成全排列,对应一个全排列对对手生成全排列,如果自己的英雄当前的排列能战胜对手的全排列,则当前英雄序列为解。View Code 1 #include <iostream> 2 #include <cstdio> 3 #include <string> 4 #include <cstring> 5 #include <algorithm> 阅读全文
posted @ 2011-10-09 18:07 Kenfly 阅读(676) 评论(0) 推荐(0)
HDU 3640【非常复杂模拟题+二分】
摘要:题目:I, zombie题意:植物大战僵尸的模拟题,地图只有一行,两种植物,一种会射弹,一种是炸弹,求僵尸胜利的最小个数。解题思路:第一感觉是没感觉,然后觉得好繁杂,各种情况。经过长久琢磨后,思路慢慢清晰,然后AC。觉得还是挺好的一道模拟题。模拟时主要有三个问题要维护,一是植物的长度,二是最右边的植物种类,三是僵尸最左的位置。如果僵尸碰到的是炸弹,那么下一回合可以认为僵尸的最左位置为炸弹的左边。如果碰到的不是炸弹,则不停向左统计植物个数,直到遇到第一个炸弹,然后二分可以吃掉这些植物的最少僵尸个数,二分时要根具条件进行模拟。View Code 1 #include <iostream> 阅读全文
posted @ 2011-10-05 22:35 Kenfly 阅读(833) 评论(0) 推荐(0)
POJ 3356【简单DP】
摘要:题目:AGTC题意:如题解题思路:看代码View Code 1 #include <iostream> 2 #include <cstdio> 3 #include <string> 4 #include <cstring> 5 #include <algorithm> 6 #include <vector> 7 #include <map> 8 9 using namespace std;10 11 const int MAX = 1000 + 10;12 char X[MAX], Y[MAX];13 int 阅读全文
posted @ 2011-09-25 19:19 Kenfly 阅读(354) 评论(0) 推荐(0)
POJ 3616【数状数组求区间最大值 + 简单DP】
摘要:题目:Milking Time题意:给出一个数N,表示Bessie在0~N时间段进行挤牛奶工作。然后给出M行数值,每一行为f,t,v,分别表示在时间断f,t内Bessie能挤到的牛奶量。然后给出一个R,表示每次Bessie挤完牛奶都要休息R小时才能继续下一个工作,求Bessie最大的挤奶量。解题思路:很简单的DP,刚开始WA了两次,因为时间两边的界限没处理好。转移式:DP[i] = max{DP[D[j].to], DP[D[j].from - R] + D[j].val},要求某一区间的最大值,可以用数状数组实现。View Code 1 #include <iostream> 2 阅读全文
posted @ 2011-09-25 17:39 Kenfly 阅读(852) 评论(0) 推荐(0)
POJ 1988【并查集+记录个数】
摘要:题目:Cube Stacking题意:有N个cube,编号1-N,有两种操作:操作1: M x y 把含有cube的堆堆放在含有y的堆的上面。操作2: C x 询问cube编号为x的下面有多少个cube。解题思路:黑书上有类似题目,属于带有查询操作的并查集。设置两个变量D, C,D[i]表示i下面有几个cube, C[i],表示以i根时儿子个数,也就是堆在它上面的cube总个数。在每个M,C操作都要对x,y结点进行更新,有两种更新,一个是更新D[i],不停向根累加,一个是路径压缩。具体参考代码。View Code 1 #include <iostream> 2 #include & 阅读全文
posted @ 2011-09-24 20:36 Kenfly 阅读(281) 评论(0) 推荐(0)
中大省赛试机题【环形最大连续和】
摘要:题目:http://soj.me/index.php题意:给一连串的数字, 组成一个环,找出其最大的连续和.解题思路: 如果不是环,直接用O(n)的贪心算法求出最大连续和. 所以这题可以分两种情况,先设第一个数是起点,可以当作环的断点,如果最大连续程没有跨越这个断点, 那么就是上面所说的情况,直接可求得. 如果跨越这个断点,那么,这个最大连续和里必定包含A[1] 和 A[N],也就是始末点.这样,可以简单地算出包括这两点的最大连续和了. 用一个DP1[i] 来记录1...i点的最大连续和, DP2[i]表示i...N的最大连续和, 当然这两个连续必需分别与1和N点连接的. 枚举每个i... 阅读全文
posted @ 2011-05-07 20:50 Kenfly 阅读(374) 评论(0) 推荐(0)
codeforce 一道贪心题
摘要:原题目: http://codeforces.com/contest/68/problem/B题意: 给出N个能量值a1, a2...an, 能量之间能互相转换, 但转换时会有k百分比的损失, 要求出最后各能量值相等时的最大值.解题思路: 设最后达到平衡时能量值为 x, 则在转换时总共损失了能量 (1式)(a1 + a2 +...+ an ) - N * x . 对于每一个a值,如果 a > x, 那么它必须要转换 a - x 单位能量, 之间损失 (a - x) * (k / 100), 问题是我们如何知道 ai 是否大于 x 呢? 这是问题所在也是解题的关键.我们可以从反面来进行贪心 阅读全文
posted @ 2011-03-19 11:39 Kenfly 阅读(573) 评论(0) 推荐(0)
GOJ 1146
摘要:[栈]http://222.200.98.145:8000/JudgeOnline/showproblem?problem_id=1146 这题解法不多,我只想到递归式解法.这道题想出解法不难,但如果对栈没有很好地理解实现起来是很棘手的.递归的解法最容易想了,但这里字符串长度可达350000, 递归很容易TLE, 曾写过一个递归的,TLE了. 只能用递归的思想->栈来写,也就是说用栈模拟递归. 解法思路: 从字符串左往右遍历, 遇到'(' , 放进栈里, 栈size加1.遇到')'时,开始处理.前面必有一个'('与之对应,则这对'( 阅读全文
posted @ 2010-11-21 16:05 Kenfly 阅读(483) 评论(0) 推荐(1)
HDU 2487
摘要://HDU 2487注意完全包围等情况#include <iostream>#include <cstdio>#include <queue>#include <string>#include <cstring>#include <algorithm>using namespace std;const int NMAX=101;char wmap[NMAX][NMAX];bool isTop( char id, int start, int n, int m ){ int si=start/m, sj=start%m; i 阅读全文
posted @ 2010-10-03 00:32 Kenfly 阅读(330) 评论(0) 推荐(0)