Acm
Jsjdream
这个作者很懒,什么都没留下…
展开
-
hdu1425 sort (hash)
简单的哈希表应用,对每个元素给一个映射地址,然后从后往前搜索,若h[i]!=0 就输出。 #includeusing namespace std;int h[1000001];int main(){ int n,m; while(scanf("%d%d",&n,&m)!=EOF) { fill(h,h+1000000+1,0); int原创 2010-01-13 23:23:00 · 831 阅读 · 0 评论 -
hdu1509 Windows Message Queue(优先队列)
第一次用优先队列,优先队列和普通队列不同的是,它的出队顺序是按一定的优先级来排序的原创 2010-07-29 20:16:00 · 969 阅读 · 0 评论 -
HDU1301 Jungle Roads(最小生成树prim)
把以前博客里的东西搬了过来,我用的最小生成树prim算法模板原创 2010-06-23 17:41:00 · 505 阅读 · 0 评论 -
nuaa1561 Oliver的恋爱 (最长上升子序列O(nlogn))
当时比赛的时候用O(n^2)一直超时,于是学习一下这个O(nlog(n))算法原创 2010-06-23 17:49:00 · 614 阅读 · 0 评论 -
nuaa1330 最大间隙问题
以前在nuaa一直做不出来,后来才知道是一个很妙的算法。原创 2010-06-23 17:45:00 · 526 阅读 · 0 评论 -
今天失败,其实一直都很失败
<br /> 今天的比赛,让我再次意识到,什么叫差距。<br />看见有人在QQ上说了一句:做完今天的比赛,我发现自己连菜鸟都不算。<br />说的好对,我也这么觉得。<br /> <br /> 每次想证明一下自己,却总是被无情的打击。<br />我现在觉得,自己要重新开始,虽然知道已经晚了,但还是想争取一下。<br />从大一省赛,大二市赛,到今天。我总是把希望寄托在队友身上,而把自己的责任用种种原因推卸掉,呵呵,其实,我一点实力都没有,但很会装B。<br /> <br />原创 2010-10-10 18:51:00 · 481 阅读 · 0 评论 -
pku1088 滑雪(记忆化搜索)
<br />//pku1088 滑雪(记忆化搜索)/*首先题目的意思不能弄错。问的是:每个点都有一个高度,而你滑雪肯定从高到底滑,让你选择一个点,使得以这个点为起点的路径最长。方法:记忆化搜索单纯的搜索肯定耗时,所以就要将已经计算出来的值保存下来,下次如果要用调用一下计可以了。*/#include<iostream>#include<cstdlib>#include<cstdio>#include<cmath>#include<algorithm>#inc原创 2010-10-14 19:17:00 · 530 阅读 · 0 评论 -
hdu2512 一卡通大冒险(DP)
<br />//hdu2512 一卡通大冒险/*第二类Stirling数是把包含n个元素的集合划分为正好k个非空子集的方法的数目。递推公式为:S(n,k) = 0(n<k||k=0),S(n,n) = S(n,1) = 1,S(n,k) = S(n-1,k-1) + kS(n-1,k).昨天晚上刚看了下算法分析与设计,觉得这个也可以用备忘录方法的DP做吧,就做了一下,这里做的有点烦。只要知道斯特灵公式,就可以了,又是数学,泪奔~*/#include<iostream>原创 2010-10-15 18:21:00 · 770 阅读 · 0 评论 -
hdu1257 最少拦截系统 hdu1677 Nested Dolls(最长上升子序列)
/*我一直陷入了出题者的思维,总是觉得这不是普通的LIS,而是要求最少有几个LIS。现在回过头来看看,发现自己错了,确实就是最普通的LIS,只是我刚开始一直没有转过弯来。可以这样理解这个LIS:这个序列中的任何两个导弹都不能共用一个拦截系统,而且其余的导弹都能和这个最长序列中的某个导弹分为同一组。*/#include#include#include#includeusing namespace std;bool run(){ int n;原创 2010-12-26 19:14:00 · 1007 阅读 · 0 评论 -
zju2346 Shortest Prefixes(字典树 trie)
总算自己做出一道字典树,内牛满面~原创 2010-07-16 15:58:00 · 489 阅读 · 0 评论 -
hdu1800 Flying to the Mars(map)
题目的本意是找出最长平台。简单的说,就是找出现次数最多的数字。原创 2010-07-12 00:40:00 · 905 阅读 · 1 评论 -
hdu3140 Money Matters 并查集
题意是有几个人分布在不同的城市,只有在同城市的人才能交换使收支综合等于0。因为n在[0,10000],所以不能保存路径然后DFS了,数组太大。用并查集,将每个人分到自己的城市,若每一个城市里的人的money总和都等于0,则POSSIBLE,否则相反。 #includeusing namespace std;const int Max=10001;int set[M原创 2009-12-02 23:36:00 · 695 阅读 · 0 评论 -
zju1798 Granny's Bike (DFS)
题意是granny是否能从家里出发,走完每一个点仅一次然后回到家,也就是找是否存在汉密尔顿回路。数据规模小,我的方法是用二维数组保存连接点,然后DFS搜索。 #includeusing namespace std;const int Max=10;bool mat[Max][Max];int n,cnt,num=1;bool flag,vis[Max];原创 2009-12-10 14:35:00 · 503 阅读 · 0 评论 -
zju3204 Connect them(最小生成树 kruskal 并查集应用)
kruskal算法的思想是,将每条边从小到大排序,然后从最小的开始选,如果这两个点不在同一个集合里,就利用并查集将两个集合合并,否则就放弃,直到选到第n-1条边为止,因为一个有n个节点的生成树只有n-1条边。这道题目主要的问题在于字典序(我本来以为答案要先按权值来排,再按字典序排,其实是全部按字典序排(没办法,英语不好)):1.要排两次,第一次排要按权值,起点,终点结构体三级排序。保证等会去选的顺原创 2010-02-25 23:05:00 · 660 阅读 · 0 评论 -
zju1717 The Secret Number(DP)
标准的DP吧。我的思路:因为必须用字符类型存储,所以我想到了用string解决,因为string比较数字的大小只要先比较长度,长度相等的话,直接比较就可以了。mat[i][j]存储矩阵本身。num[i][j]表示到达第i行,第j列所能得到的最大数。每次比较左边一格,以及上面一格的数,取两者较大值。然后加上本身即可。#include#include#include#include原创 2010-02-26 15:53:00 · 431 阅读 · 0 评论 -
hdu2544 最短路(dijkstra)
#include#include#includeusing namespace std;const int Max=INT_MAX/2;const int N=101;bool visited[N];int mat[N][N];int dist[N];int n,m;int Minval(int n){ int next=-原创 2010-03-23 23:10:00 · 480 阅读 · 0 评论 -
hdu1022 Train Problem I(STL 栈的应用)
#include#include#includeusing namespace std;int main(){ int n; while(cin>>n) { stack mystack; int i,j,t,k; char a[11],b[11]; string s[1000]; for(i=0;i>a[i];原创 2010-03-24 22:47:00 · 443 阅读 · 0 评论 -
hdu3332 Windows
刚开始以为是个水题,跟以前一到省赛题很像。但发现第二个样例好像对不上。。。关键在于pixels(像素)这个单词上,以前的题目是一点一点的算,这道题是按一格一格来划分区域的,这样理解就可以对上了。 #includeusing namespace std;int cnt=1;struct jsj{ int x1,y1; int x2,y2;}原创 2010-05-15 15:45:00 · 556 阅读 · 0 评论 -
hdu1587 Flowers
反应就是水题,贪心。老师说,用完全背包。确实,一题多解嘛,是我们应该有的态度。这里就只有一个V[]保存价值,然后F[]保存最大个数就可以了,一个小小的变换。还有一个就是提供的money没有范围,就又可以练习一下vector了 #include#include#includeusing namespace std;int n,V;int max(int a原创 2010-05-15 15:54:00 · 558 阅读 · 0 评论 -
hdu2680 Choose the best route (dijkstra)
<br />//题意是很明显的最短路径(注意是有向图),但是用floyd会超时,用dijkstra//这里有个小技巧,就是用逆向思维,将终点视为起点,这样只要用一次dijkstra//然后找出最小值就可以了,当然保存路劲的时候也要逆向。#include<iostream>using namespace std;const int Max=INT_MAX/2;const int N=1001;int mat[N][N];bool visited[N];int dist[原创 2010-11-12 19:22:00 · 697 阅读 · 0 评论