基础算法
文章平均质量分 75
asuxiexie
这个作者很懒,什么都没留下…
展开
-
poj 2632 Crashing Robots
坑了,没想的太周到,WA好久, 就两个地方想错了。。 一。对撞在撞墙之前, 二。对撞的是最靠近要动的这个的, 写的是按编号顺序判断。。。心碎了 模拟太坑爹。。。 #include #include #include using namespace std; char qq[105]; int a,s[105][2],b,c,t[3]; int d,e; int k,l,h,m,n; v原创 2014-07-22 09:33:51 · 659 阅读 · 0 评论 -
UVA 1422 - Processor (二分+贪心+优先队列)
先对开始时间进行排序,在利用优先队列是结束时间早点先出队; 因为时间只有20000,我们可以去枚举每个单位时间,看要给分配给那个任务, 如果某个时间队列中还有结束时间大于枚举的时间,就跳出判断是在mid的右边。 #include #include #include #include #include #include #include using namespace std;原创 2014-08-08 09:01:05 · 791 阅读 · 0 评论 -
poj 2492 A Bug's Life (并查集同食物链)
Language: Default A Bug's Life Time Limit: 10000MS Memory Limit: 65536K Total Submissions: 27157 Accepted: 8841 Description Background Professor Hopper is re转载 2014-08-10 09:36:38 · 522 阅读 · 0 评论 -
hdu 4932 Miaomiao's Geometry
被秀智商下限了; 直接代码。。 #include #include #include #include #include using namespace std; int s[55]; double w[120]; int main() { int a,b,i; scanf("%d",&a); while(a--) { scanf("%d",&b); for(i=0;i<b;i原创 2014-08-11 10:41:46 · 502 阅读 · 0 评论 -
hdu 4857 逃生(优先队列+逆拓扑排序)
题意是给你一些关系,来进行排序,前面的那个人一定在后一个人前面,也在那些没有交钱的人的前面。。 我们用逆拓扑排序,先把入度为零的数从大到小存入数组。然后就是一般的拓扑排序。。最后逆序输出 #include #include #include #include #include #include #include using namespace std; int m,n; vector原创 2014-08-11 20:59:12 · 578 阅读 · 0 评论 -
HDU 1598 find the most comfortable road(并查集+枚举)
先把每条边的权值从大到小排序,在一个个枚举,利用并查集判断是否在一个集合中。。。#include #include #include #include #include #include using namespace std; const int maxn=205; const int maxm=1005; const int inf=(0x7f7f7f7f); #define min(a,b)原创 2014-08-12 09:47:45 · 574 阅读 · 0 评论 -
poj 2573 Bridge (过桥问题 贪心)
对于此问题有两种策略 1、最快的带最慢的和次慢的 2、最快和次快带最慢和次慢 此链接有详细解释点击打开链接 #include #include #include #include using namespace std; int s[1050]; int main() { int a; scanf("%d",&a); for(int i=0;i<a;i+原创 2014-08-13 10:49:39 · 1062 阅读 · 0 评论 -
hdu 2391 Filthy Rich
简单dp 水一个 处理点的时候,第一行和第一列特殊处理;其余的w[i][j]=show(w[i-1][j-1],w[i-1][j],w[i][j-1])+s[i][j]; #include #include #include #include #include using namespace std; int s[1005][1005]; int w[1005][1005];//存每个点的最大原创 2014-08-14 21:36:58 · 775 阅读 · 0 评论 -
hdu 1087 简单dp
思路和2391一样的。。 #include #include #include #include using namespace std; const int inf=(0x7f7f7f7f); int main() { int a; int s[10005]; int w[10005]; while(scanf("%d",&a)&&a) {原创 2014-08-14 21:38:49 · 701 阅读 · 0 评论 -
UVA 12124 UVAlive 3971 Assemble(二分 + 贪心)
先从中找出性能最好的那个数, 在用钱比较少的去组合,能组出来就表明答案在mid的右边,反之在左边, #include #include #include #include #include using namespace std; map vic;//以字符映射数字 int end,start; int num; int m,n; int sba,sbb; char na原创 2014-08-08 09:10:46 · 694 阅读 · 0 评论 -
hdu 3336 Count the string(KMP)
一道应用kmp算法中next数组的题目 这其中vis[i]从1加到n vis[i]=[next[i]]+1; #include #include #include #include #include using namespace std; char s[200005]; int b; int next[200005]; int vis[200005]; void n原创 2014-08-08 09:00:26 · 623 阅读 · 0 评论 -
UVA 127 Accordian'' Patience
题意:把一堆扑克牌,按照规则:如果左边1张或3张和它具有同花色或等级,把这张牌移到上面去,每次移动后,在从头开始移动,知道都移动完,输出剩余几堆与每堆牌数,如果1张牌有2个可以移动的地方,优先移动到左3位置。 思路:用结构体存每一张牌,用栈来储存牌堆,每次判断能不能移动牌,每次移动后进行一次变换 #include #include #include using namespace原创 2014-07-23 11:33:16 · 480 阅读 · 0 评论 -
codeforces 258(Div.2) C. Predict Outcome of the Game
题意:有三个球队进行了N场比赛,其中K场已经比完了,但是你不知道结果。d1,d2是各自胜场的绝对值,比如一队和二队胜场差是d1,二队和三队胜场差是d2.问比完所有N场比赛是否存在各自都打平了。 题解:根据他们的两个胜场差d1,d2可以求出他们各自的胜场。但是因为d1,d2是绝对值,所以我们有四种情况需要考虑,比如(+d1,+d2).(+d1,-d2),(-d1,+d2),(-d1,-d2)判原创 2014-07-25 15:10:58 · 536 阅读 · 0 评论 -
poj1035Spell checker
暴力解决。先把字典里的每个单词的长度存起来,在查找的时候,就比较长度,在多一个少一个之间找, #include #include #include #include #include #include using namespace std; char s[10005][20]; char h[20]; int w[10005],len; int show(int a) { int i,原创 2014-07-25 16:53:15 · 631 阅读 · 0 评论 -
poj3126Prime Path
就因为在判断素数的时候少个等于号 纠结一天,。。。。 #include #include #include #include #include #include using namespace std; queue q; int v[10005],c; int yy[10005]; int qq(int g) { for(int i=2;i*i<=g;i++) { i原创 2014-07-25 19:46:12 · 502 阅读 · 0 评论 -
hdu 1175 连连看
本题DFS与BFS都可以 就是判断在两次转弯后 能不能找到。。 BFS #include #include #include using namespace std; struct node { int x, y; int t, d; }; queue q; int n, m, map[1002][1002], prove; int visit[1002][1002][原创 2014-07-27 11:24:21 · 468 阅读 · 0 评论 -
codeforce C. Valera and Elections (DFS)
给你几组数代表那两个城镇有路连接和路的好坏。。 要找到最少的从城镇1到x的x集合能把所有的坏的路都找到并修好。。 C. Valera and Elections time limit per test 1 second memory limit per test 256 megabytes input standard input outp原创 2014-08-07 10:42:50 · 937 阅读 · 0 评论 -
UVA - 10917 Walk Through the Forest (最短路+DP)
题意:Jimmy打算每天沿着一条不同的路走,而且,他只能沿着满足如下条件的道路(A,B):存在一条从B出发回家的路径,比所有从A出发回家的路径都短,你的任务是计算有多少条不同的路径 从后往前找最短路, 对于每一步要更新之后走的位置值; #include #include #include #include #include using namespace std; const原创 2014-08-09 08:54:37 · 641 阅读 · 0 评论 -
uva 11374 最短路+记录路径 dijkstra最短路模板
UVA - 11374 Airport Express Time Limit:1000MS Memory Limit:Unknown 64bit IO Format:%lld & %llu [Submit] [Go Back] [Status] Description ProblemD: Ai原创 2014-08-09 08:58:32 · 1156 阅读 · 0 评论 -
hdu 1595 最短路
题意是要我们求出最短路中一条路坏的情况下最大的时间; 我们先将最短路求出并记录路径,然后枚举最短路中每一条路坏的情况,求出最大的时间。。 #include #include #include #include #include using namespace std; int s[1005][1005]; int p[1005]; int vist[1005]; int q[1005]; co原创 2014-08-14 17:01:11 · 758 阅读 · 0 评论