
POJ
文章平均质量分 58
alusang
T^T
展开
-
POJ 3278
先写自己的笨方法,不好描述但是一看就懂。两个队列循环储存上一个状态延伸出来的子状态。先++在判断,所以输出L-1。#include #include #include #include using namespace std;const int maxn=1e6+5;int d[maxn];int n,k;int l=0;int s=-1;void bfs(){原创 2017-03-18 09:53:14 · 254 阅读 · 0 评论 -
poj-1679-纯-次小生成树
这题是输入一些边然后判断这些边的最小生成树是否唯一,那么我们可以找次小生成树,看看和最小生成树权值是否相同。这里是基于kruskal的次小生成树模板#include #include #include #include #include #include #include #include #include #include #define INF 0x3f3f3f3f原创 2018-03-20 22:05:35 · 127 阅读 · 0 评论 -
POJ-3414-BFS输出路径
这个题一看就是搜索,然后,写了发BFS就AC了#include #include #include #include #include #include #include #include #include #define INF 0x3f3f3f3fusing namespace std;const int maxn=1e2+2;struct P{ in原创 2018-03-27 17:46:43 · 119 阅读 · 0 评论 -
poj-1061-拓展欧几里德
青蛙的约会,典型拓展欧几里得首先我们根据题意可得一个公式:X*(m-n)+Y*L=y-x这样的话解出x,y后判断y-x是不是d的倍数,不是则无解最终答案是 (X*(y-x)/d)%(L/d),为什么是这个答案呢。首先我们知道上面的表达式最小正整数解是X0*(y-x)/d,然后我们又知道通解就是最小正整数解加k*b/d,实际就是取模b/d,所以就是这个答案。https://blog.youkuaiyun.com...原创 2018-04-11 21:43:55 · 239 阅读 · 0 评论 -
POJ-1265-pick定理
来学习下pick定理。这道题是入门题。题意就是给你一个多边形,让你求出多边形内部的点和边上的点,还有多边形的面积。先说pick定理,就是计算点阵中顶点在点上的多边形的面积,假设a表示内部的点数,b表示边界上的点数,s表示面积,那么2*s=(2*a+b-2)。然后我们发现这道题纯粹就是用pick定理,但是得求得a,b才能求出面积s。然后利用三角形相似可以求出一个线段上整点的个数,但是原创 2018-05-03 21:58:29 · 277 阅读 · 0 评论 -
POJ-3096-贪心
今天开始恢复训练(其实省赛完了玩了好久),发现了这道一年前做过的题,神特么没写出来QAQ。我想的是选择覆盖的点越多越好的点,然后拼命写每个点覆盖了多少个点然后贪心...就是没稍微转一下,覆盖的最多那不就是越远越好么(在r的范围内)...所以这个题:从第一个没处理的点开始向右找最远的,能覆盖的点,设为s,那么这个s点就是第一个标记点,然后从s开始向右找最远的能覆盖的点,那么这个点就是第一个覆盖区间里...原创 2018-05-17 20:44:17 · 161 阅读 · 0 评论 -
POJ-3255-次短路
这个题就是严格次短路问题,边是无向边,这里记下三种做法,一是直接dijkstra求,二是dijkstra+A*求,三是两次最短路。dijkstra:#include <cstring>#include <cstdio>#include <iostream>#include <cmath>#include <algorithm&...原创 2018-05-19 00:35:58 · 1876 阅读 · 1 评论 -
POJ-3723-最大生成树
天啦噜T^T。稍微的分析看得出这个招募顺序是一个森林,然后想不到是最大生成树。代码很裸。每一个关系就是两个点加一条边,构建一个最大生成树,每次检查两个点是否招募了,不管两个点是只有一个没招募还是两个都没招募,都是添加到最大生成树中去,然后这样都会节省出d的钱。最后用总钱数减去节省的钱就行了。#include <cstring>#include <cstdio>#incl...原创 2018-05-19 23:01:02 · 426 阅读 · 0 评论 -
POJ-3169-差分约束
根据题意可得:关系友好时,BL-AL<=DL。关系不友好时,BD-AD>=DD(一定要注意题目说明了牛是按照编号站的,也就是递增的,所以方程都是大的牛位置减去小的牛位置)。那么发现这个是个差分约束系统,即:BL-AL<=DL,AD-BD<=-DD。那么以此建图,求出有负权最短路即可。这里再说下差分约束系统,就是几个只含两个未知数,并且形如X-Y<=D这种形式的方程组。...原创 2018-05-21 14:32:57 · 285 阅读 · 1 评论 -
poj-3186-区间dp
这个题确实没想到QAQ。一开始根据样例判断出一个规律:每次从两边取的时候先取小的,所以就爆了一发,wa了。然后想区间dp,顺着题意往下想的...就是dp[i][j]由dp[i-1][j]和dp[i][j+1]转化而来,这样做咋都做不出来,然后我也没转换一下思想...QAQ所以说正解就是dp[i][j]由dp[i+1][j]和dp[i][j-1]转换而来,倒推,依次选择每个点为终点,倒着加点,加一个...原创 2018-07-09 19:03:42 · 188 阅读 · 0 评论 -
dijkstra最短路非优化模版
这是POJ2387的代码,纯板子#include #include #include #include #include #include #include #include using namespace std;const int maxn=1e3+10;const int INF=1e6;int t,n;int Mao[maxn][maxn];int min原创 2017-09-11 17:41:29 · 167 阅读 · 0 评论 -
POJ 1651
#include #include #include using namespace std;const int maxn=105;const int INF=2e8;long long n,arr[maxn]={0};long long dp[maxn][maxn];int vis[maxn][maxn];int dfs(int l,int r){ if(vis原创 2017-08-14 19:20:02 · 213 阅读 · 0 评论 -
POJ-1182-种类并查集
第一次写合并函数和判断假话的条件不熟练。模板题。#include #include using namespace std;const int maxn=2e6+5;int f[maxn];int Find(int a){ if(f[a]==a) return f[a]; else return Find(f[a]);}void hebing(i原创 2017-03-20 20:54:14 · 182 阅读 · 0 评论 -
POJ 1703
The police office in Tadu City decides to say ends to the chaos, as launch actions to root up the TWO gangs in the city, Gang Dragon and Gang Snake. However, the police first needs to identify which g原创 2017-03-11 10:25:53 · 163 阅读 · 0 评论 -
POJ 3111
练习了下二分,找到这道二分的题,题目很不错,是变形的二分,自己想真的很难想到转化成二分处理。既然是求最大的单位重量的价值,那么就是求(v1+...+vk)/(w1+...+wk)=x,x的最大值。式子变形满足vk-x*wk=0的和。等于0时为最优。二分查找x值即可。算出每一个物品的最大单位重价值,从大到小排序求得前K项的和。满足等式就输出。想了半天处理物品标号问题,最后还是用了结构原创 2017-03-15 00:45:47 · 267 阅读 · 0 评论 -
POJ 1979
找到简单的DFS题目练习。重点是红色不但不能走,而且有红色的地方相当于墙,所以重新写了下搜索的条件。出现一个问题就是搜索过的点一定要记得标记或者更改。#include #include #include #include #include #include using namespace std;const int maxn=100+5;cha原创 2017-03-15 22:06:04 · 246 阅读 · 0 评论 -
POJ 3984
DFS加回溯吧。自己不会回溯,所以这题就没那么简单了、、、还是借鉴了大神的代码,在这记下来。这题用回溯把要输出的点保存在栈里,先把没访问过的点放入栈,然后判断是不是到达终点。下面就是判断右边的点和下边的点是否符合要求,符合就DFS,不符合就回溯回到上一个岔路口,并且把不符合的点在栈中删除。边界处理初始化为1,之前发生过RE,原因是5*5的迷宫加上边界6*6,我只开了6*6,所以RE了。翻译 2017-04-15 10:19:31 · 235 阅读 · 0 评论 -
POJ 3616
经典的挤牛奶。一开始想法老是考虑在背包上,这类和背包还是有区别的。#include #include #include #include using namespace std;int n,m,r;int dp[1005];struct P{ int sta; int end; int pro;}p[1005];int cmp(const P原创 2017-05-23 22:42:05 · 508 阅读 · 3 评论 -
POJ 1321
找了这题回溯挺好的,刚学的菜鸟动动脑子做出来受益不浅啊哈哈。主体和八皇后差不多,区别在于这题棋子数可以少于行数,八皇后是棋子放完了就退出了,所以在循环结束后加上一个条件语句,如果棋子数不满足k个并且不是最后一行,那么再去继续搜索。还有一点就是上一个搜索退出后出了改变访问过的1还要num--,以便继续搜索。#include#include #includeusing namespace原创 2017-04-22 10:46:53 · 319 阅读 · 0 评论 -
POJ 1064
最模版的一题二分查找,一开始提交老是不对,后来发现错误是r的处理开始写的r=(int)r*100;r*=0.01;#include #include #include #include #include #include using namespace std;const int maxn=1e5+5;double ss[maxn];int n,k;原创 2017-03-14 20:18:25 · 364 阅读 · 0 评论 -
POJ-3041-最大匹配(最小覆盖)
纯匈牙利算法模板,很水,但是需要理解。这题把行列看做需要匹配的对象。把最小的覆盖数转化成求匹配成功数。#include <iostream>#include <algorithm>#include <cstdio>#include <cstring>using namespace std;const int maxn=505;...原创 2017-05-21 22:30:06 · 271 阅读 · 0 评论 -
poj-2250-LCS+输出路径
这个题思路很明显,就是将字符串每个单词处理为一个元素,然后进行LCS求解,再打印路径就好。问题在于输出路径,这里我写的是直接逆序寻找路径,比较好写,还有一种是dp时就进行记录的,那个个人觉得很麻烦,就不写了。#include <iostream>#include <cstring>#include <cstdio>#include <cma...原创 2018-07-25 19:42:03 · 230 阅读 · 0 评论