ACM
suninisu
这个作者很懒,什么都没留下…
展开
-
求最短路之———Floyed-Warshall算法 O(N^3)
Floyed-Warshall算法一、 作用:1.求多源最短路径 2.判断图中两点是否相连。算法较为简单,容易理解,但不适用数据规模很大的情况。二、 实现方法:设置dis[i][j]为点i到j的最短距离,初始值设为0x3f3f3f3f(最大值),设置三层循环,分为k,i,j,则dis[i][j] = min(dis[i][j],dis[i][k]+dis[k][j]...原创 2018-07-23 16:13:06 · 232 阅读 · 0 评论 -
OpenJ_Bailian - 1061 青蛙的约会
方法:思维题,列数学式子,以时间t为未知数,列相等关系,因为是转圈,所以要不断取余。判断不可能的条件是当两只青蛙怎么跳都是回到原来的位置而且二者的初始位置也不同,那么就不可能相遇。AC代码:#include <cstdio>#include <cmath>using namespace std;int main(){ int x,y,m,n,...原创 2018-08-05 20:12:10 · 147 阅读 · 0 评论 -
UVA - 514
方法:题目中的出站与入站跟stack的操作一致,故用stack来表示车站。初始A面的顺序是从1到N,B面的顺序由题目中给出。A面的每个车辆,只有两个选择,一个是正好对应此时B的首辆,二是进栈。B的首辆要么是栈的top,要么是A的首辆。两个变量,一个是此时B的首辆,一个是此时A的首辆。所以可以一直循环,来使B的每一辆与A的首辆或者栈的top()一一对应,循环条件是B还有剩余的...原创 2018-08-06 20:26:25 · 125 阅读 · 0 评论 -
HDU - 1509
方法:优先队列,控制好优先条件。第一个是按照优先级来排列,若优先级相同,则按照先后顺序排列。AC代码:#include <cstdio>#include <iostream>#include <queue>using namespace std;struct news{ string name; int par; ...原创 2018-08-06 20:36:13 · 210 阅读 · 0 评论 -
UVA - 12207
方法:双端队列。注意删除队列中的因命令已经排到队首的元素。AC代码:#include <cstdio>#include <iostream>#include <deque>#include <algorithm>using namespace std;const int maxn = 1000+10;int main()...原创 2018-08-06 20:41:36 · 241 阅读 · 0 评论 -
UVA - 1149
方法:贪心,先装大的垃圾。注意输出格式。AC代码:#include <cstdio>#include <algorithm>#include <iostream>using namespace std;const int maxn = 100000+100;struct sta{ int chance; int bi...原创 2018-08-07 20:00:47 · 121 阅读 · 0 评论 -
HDU - 2037
方法:优先队列,以结束时间早的为先。AC代码:#include <iostream>#include <queue>#include <algorithm>using namespace std;struct jiemu{ int begg; int endd; bool operator < (const ...原创 2018-08-07 20:01:51 · 259 阅读 · 0 评论 -
HYSBZ - 1734 愤怒的牛
方法:二分枚举加贪心。用二分来枚举最小距离的最大值。贪心来判断此时的最小距离是否可以符合,也就是是否可以放下所有的牛。AC代码:#include <cstdio>#include <iostream>#include <algorithm>using namespace std;const int maxn = 100000+100...原创 2018-08-07 20:04:47 · 230 阅读 · 0 评论