HDU 1031 Design T-Shirt

摘要: 这年头,还在写水题的代码我有点不好意思了。。。不过先补一下基础,1Y对自己很重要。贪心算法#include #include using namespace std;double x,*sum;int *r,*vis;bool cmp(int x,int y){ return sum[x] > sum[y];}int main(){ int n,m,k; while(scanf("%d %d %d",&n,&m,&k) != EOF){ sum = new double[m + 10]; vis = new int [m + 10]; ... 阅读全文
posted @ 2013-12-05 23:32 从此以后 阅读(184) 评论(0) 推荐(0)

HDU 1728 逃离迷宫

摘要: 一直wa,搜索真不愧是我的最大弱点。剪枝判断没做好,加入队列条件也没有控制好1.广搜省时间。。大神XX当时集训用深搜一次搞定了。。差距啊。。2.每次搜都直接搜到底。3.先标记一下今天惨烈错误的地方,有空将错误过程写上去贴一下#include #include using namespace std;#define maxn 101int x1,x2,y1,y2,n,m,K;int vis[maxn][maxn] , stp[maxn][maxn] , dir[maxn][maxn];int tn , tx , ty , nx , ny , ts;const int dx[] = {0,1,0, 阅读全文
posted @ 2013-12-04 16:56 从此以后 阅读(173) 评论(0) 推荐(0)

HDU 1285 确定比赛名次

摘要: 拓扑排序裸题。唯一要考虑的是如何保证字典序输出结果。这里用最简单的方法,每次都将队列里的点排序即可。#include #include #include #include using namespace std;int n , m , a , b , in[600];vector g[600];void init(){ for(int i=0;i q; C = 0; for(int i=1;i 0) in[v]--; if(in[v] == 0) q.push(v); }while(!q.empty()) at[++c]=q.front(... 阅读全文
posted @ 2013-12-02 13:14 从此以后 阅读(199) 评论(0) 推荐(0)

HDU 1116 Plays on words

摘要: 只能说自己渣爆了一开始写了一个递归函数,用深搜的方法去遍历所有可能的,但是最后一直stackoverflow,加了一个扩大栈的语句还是无动于衷最后发现自己写的那个递归就是欧拉回路算法···后来看了一下,都是说欧拉回路,没仔细想。早上起来想了一下,好像可以建一个图,然后搜索···这个搜索就是一条欧拉(回)路1.如果是一条链,是路,否则是回路2.欧拉图有其特性,如果用搜索做,数据量很大,容易栈溢出或超时(5s应该不至于吧)3.并查集用来检测是否只有一个连通分量而已。#include #include int a , b , u , v , 阅读全文
posted @ 2013-12-02 11:33 从此以后 阅读(232) 评论(0) 推荐(0)

HDU 1195 Open the lock

摘要: 调试了一段时间了,起点没有标记搜索过。大二的集训题目,现在才做。1Y。题目有点水。以前每次想做都是做不下去。今天K了直接广搜就行了。将每个状态都标记,大概就10000个状态,以前总是不会分析,以为一定爆各种。。。#include #include using namespace std;int sn , en;char sts[6] , eds[6];int vis[10000],stp[10000];void init(){ memset(vis,0,sizeof(vis)); memset(stp,0,sizeof(stp));}int ex[4] , rl[10] , num... 阅读全文
posted @ 2013-12-01 15:54 从此以后 阅读(163) 评论(0) 推荐(0)

HDU 1072 Nightmare

摘要: 最短路一般使用广度优先的方法最好。一道可以改变搜索深度的题目,一开始想用深搜+广搜每次扩展可行路径的方式加大搜索有效性,但是写不出来,也不知道可不可行,可能复杂化了1.每次去搜索节点时,。除了可设置点‘4’外,其它不记录已经搜索过,搜索过的节点每次判断当前可以继续使用的时间是否更优。如果更优则加入队列。 否则:2.如果原队列里的节点已经可以达到要求,那么新添加的节点一定不是最优,而且不会首先出队,故不会影响最优结果3.如果队列的节点不满足那么新更新的节点可能可以达到最优值。4.规模小,可以重复搜索是关键,否则算法要求更高。#include #include using namespace s. 阅读全文
posted @ 2013-12-01 14:09 从此以后 阅读(265) 评论(0) 推荐(0)

HDU 1272 小希的迷宫

摘要: 一道很简单的并查集建模之后就是判断一个无向图有没有环就行了注意没有任何数据的时候是要输出一个“yes”,如果输入两个相同的点的时候,应该不判断贴一下代码先#include #include #define maxn 100100int fa[maxn];int find(int x) { return x==fa[x] ? x : fa[x] = find(fa[x]);}void union_set(int x ,int y) { fa[x] = y;}bool fail = false;int vis[maxn];void init(){ fail = false; ... 阅读全文
posted @ 2013-11-29 16:28 从此以后 阅读(143) 评论(0) 推荐(0)

HDU 1273 漫步森林

摘要: 比赛的时候是看见人家A得很快,但是一看的时候觉得没什么头绪,画了一个六边形的灵感来了,就YY一下第一次提交写错了结束条件,之后意淫下公式交上去A了。用五边形来解释:1.设有五个点1,2,3,4,5,2.从1开始,可以走的边有4条3,算上往返,只有2条路可走。4.用于给出两两个点之间都有路径,那么可以假设任意一条都可以成功通过,只需算出每个点旁边有多少条边,折半就是路径数目#include int main(){ int n , ans; while(scanf("%d",&n) , n) { ans = (n-1)/2; printf("%d\n" 阅读全文
posted @ 2013-11-28 17:14 从此以后 阅读(200) 评论(0) 推荐(0)

HDU 1269 迷宫城堡

摘要: 比赛的时候很少做图论的题目,今天开了VC一个来做,貌似是队赛的题目的,一个人挑其他队。。。不过题目相对简单啦,最后排在第4位。这道题是简单的建模题目,将其看成强连通分量就行了。第一wa竟然是没看清楚结束条件,好吧,坑了。。#include #include #include #include using namespace std;const int maxn = 10001;int pre[maxn] , lowlink[maxn] , sccno[maxn],dfs_clock, scc_cnt;vector g[maxn];stack S;int n , m;inline int ... 阅读全文
posted @ 2013-11-28 17:05 从此以后 阅读(256) 评论(0) 推荐(0)

HDU 1026 Ignatius and the Princess I

摘要: 大概花了一天的时间来写这道题,看了别人的题解,其实没有什么不对劲,就是自己的方法并不是太协调早上做出来的程序其实整体上已经很不错了,但还有一点不正确的地方,就是记录路径的方式不正确。不知算不算是水题,反正做了很久了···1.这道题的路径记录要注意怪兽出现的地方:当前如果出项怪兽,那么记录的方法要记录在当前点还是每个下个搜索点2.输出路径的时候可以采取递归的方式,这道题其实递归输出最好了。3.看别人的题解都是用了优先队列,可能对于这个题目的数据,没有用优先队列对于时间复杂度的影响不大,都是0ms秒过的4,下面代码用普通队列进行搜索,记录方式有很多,这里用二维转一维方 阅读全文
posted @ 2013-11-27 16:10 从此以后 阅读(272) 评论(0) 推荐(0)