POJ
NingLiu_
该csdn博客专门用来做技术类的总结,希望自己能给初学者一些鄙陋的建议和帮助
展开
-
poj1852 Ants
//这题的思路十分巧妙,两只蚂蚁同时反方向走,因为所有蚂蚁速度一致,可以看作是没有反向,而是继续按原方向走,直到下落...相当于将每只蚂蚁看作是独立运动的(挑战P20)#include using namespace std;const int N = 1e6 + 10;int t, l, n;int a[N];void solve(){ int mint = 0, maxt原创 2017-08-24 19:38:58 · 193 阅读 · 0 评论 -
poj3276 Face The Right Way
#include #include #include #include int N;using namespace std;const int MAX_N = 5005;int dir[MAX_N]; //牛的方向 (0:F, 1:B)int f[MAX_N]; // 区间 [i, i + K - 1] 是否进行反转// 固定K, 求对应的最小操作回数// 无解则返回 -1原创 2017-08-27 08:16:20 · 207 阅读 · 0 评论 -
poj3061 Subsequence
//O(nlogn)#include #include #include #include using namespace std;const int MAX_N = 1e5;int n, S;int a[MAX_N], sum[MAX_N + 1];void solve(){ memset(sum, 0, sizeof(sum)); // 计算 sum for (i原创 2017-08-27 08:18:45 · 211 阅读 · 0 评论 -
poj3723 Conscription
/* 并查集的应用 再次提醒,poj很喜欢很喜欢卡cin,千万记得,一卡TLE就换scanf!(而且有时是,不管cin有没有取消和stdio的同步,都会被卡...)*/#include #include #include #include using namespace std;const int MAX_E = 50010;const int MAX_R原创 2017-08-27 08:20:01 · 201 阅读 · 0 评论 -
poj2386 Lake Counting
//挑战P33// 输入 /* 注意下,使用gets()函数时,可能导致WA 原因及应对见 http://blog.csdn.net/qwb492859377/article/details/48323443 但是,能不用尽量不用吧!*/#include using namespace std;int N, M; const int MAX_N = 105;const原创 2017-08-28 16:52:14 · 198 阅读 · 0 评论 -
poj3684 Physics Experiment
//挑战的分析已经很详细了,P157-158,我也就不再赘言//注意单位,输入单位是厘米,输出的要是米#include #include #include #include using namespace std;const double g = 10.0;const int maxn = 105;double y[maxn];int N, H, R, T;double原创 2017-08-30 23:22:04 · 199 阅读 · 0 评论 -
POJ - 3299 Humidex
题目链接:点击打开链接#include #include #include #include using namespace std;const double d1 = 0.5555;const double d2 = 6.11;const double d3 = 5417.7530;const double d4 = 273.16;int main(){原创 2017-11-08 16:39:43 · 197 阅读 · 0 评论 -
POJ - 3984 迷宫问题 (BFS)
链接:http://poj.org/problem?id=3984题意:给定迷宫的障碍物,求解走迷宫的最短路径思路:BFS,因为BFS对应着层次遍历,同一层次的点,会在一起遍历,不同层次内的点,其层次也必定是相隔1如果没记录BFS的过程中,每一个点的前驱,那么到了最后,还需要通过递归(或者其他形式)将路线再还原,这样会增加循环复杂度,故而我们可以记录原创 2018-01-24 09:26:21 · 232 阅读 · 0 评论 -
POJ - 1979 Red and Black(DFS)
链接:http://poj.org/problem?id=1979题意:从起点(”标注@的地方“)开始走迷宫,标注“#”的地方不能走,统计一共有多少块可以走思路:这题可以转换为,求以起点开始的连通块,所含的位置个数则只需要:从起点开始,对在迷宫范围内、没有走过,且可以走(不是"#")的迷宫位置,调用DFS进行递归(参数cnt,应设置为传引用,否则cnt应原创 2018-01-24 10:04:09 · 228 阅读 · 0 评论 -
POJ - 1321 棋盘问题 (DFS 回溯)
题目链接:http://poj.org/problem?id=1321思路:对每行进行递归,用数组来记录每列是否有放置棋子。对于每行,先对其各列进行一次判断:若该列是棋盘,且该列没有棋子,则在该位置放置棋子,调用DFS递归以后,重置该列的标记(回溯思想),继续判断别的列此外,由于该题可能存在 k 坑点:这题莫名其妙崩了以后,找错误找了原创 2018-01-25 10:14:42 · 287 阅读 · 0 评论 -
poj3255 Roadblocks
/* 解析可看: http://blog.csdn.net/arthurfree/article/details/37884463 这次debug时,发现犯了个隐蔽的小错误,让我找了好久才发现... for (int i = 0; i < G[v].size(); i++) 我一开始,把这句里的v,手误打成了i,然后检查时还一直没能发现T^T*/#原创 2017-08-27 08:12:24 · 217 阅读 · 0 评论 -
poj1182 食物链
/* 这是我第一次碰到真正意义上,因为cin被卡TLE的情况,甚至取消了cin与stdio的同步,也没有丝毫作用...终于明白大家为什么喜欢用scanf胜过用cin了,以后一定要注意!!!还是用scanf为好 如果仍然被卡,就需要考虑下cout换printf了*/#include #include using namespace std;int N, K;const原创 2017-08-26 09:24:33 · 255 阅读 · 1 评论 -
poj3617 Best Cow Line
/*比较需要注意的是这句话* Every line (except perhaps the last one) contains the initials of 80 cows ('A'..'Z') in the new line. 没有特殊处理格式的话,就很容易导致PE*/#include using namespace std;int N;const int MAX_N =原创 2017-08-24 19:39:37 · 178 阅读 · 0 评论 -
poj3069 Saruman's Army
//贪心#include #include using namespace std;int N, R;const int MAX_N = 1005;int X[MAX_N];void solve(){ sort(X, X + N); int i = 0, ans = 0; while (i < N) { // s是没有被覆盖的最坐的点的位置 int s =原创 2017-08-24 19:40:16 · 183 阅读 · 0 评论 -
poj2341 Expedition
/*这题有几个地方需要注意: 解析见挑战P75-76 思路:每次算出到达下一个加油站的距离d(将终点视为距离起点L,油量为0的加油站),从优先队列中,不断取油直到能够抵达这个距离d,并更新取油次数。如果还没到达d之前,队列却已经为空,则说明无法到达终点;到达d以后,将此加油站的油压入优先队列,油缸tank中的油减去距离d,更新下一次循环的位置pos 注意: 1.为了处理方便,原创 2017-08-24 19:42:12 · 210 阅读 · 0 评论 -
poj3169 Layout
/* 这次去查了一下,为什么大家要那样设置INF,有了些新发现 http://blog.csdn.net/jiange_zh/article/details/50198097 以及,这题的思路来自挑战,这个思路真是极其巧妙,将奶牛之间的最短距离、最长距离都转换为了最短路问题*/#include #include const int MAX_ML = 1e4 + 10;c原创 2017-08-24 19:44:02 · 235 阅读 · 0 评论 -
poj1064 Cable master
/* 注意这题比较特殊,求每条绳子的长度的时候,不会去四舍五入,确切说,是只会四舍,绝不五入...否则的话,最终还是不能达到K条的总数 这题对数据的处理要比较敏感,必须意识到,哪怕是保留两位小数,第三位小数,也是向下取整,绝对不可进位 想明白这点以后,cmath头文件中的floor函数,就理所当然应该用了*/#include #include #include us原创 2017-08-24 19:44:50 · 167 阅读 · 0 评论 -
poj2456 Aggressive cows
#include #include using namespace std;const int MAX_N = 1e5 + 10;const int INF = 0x3f3f3f3f;int N, M;int x[MAX_N];bool C (int d){ int last = 0; for (int i = 1; i < M; i++) { int crt = l原创 2017-08-24 19:46:01 · 235 阅读 · 0 评论 -
poj3320 Jessica's Reading Problem
#include #include #include #include #include #include using namespace std;const int MAX_P = 1e6 + 10; int P;int a[MAX_P];void solve(){ // 计算全部知识点的总数 setall; for (int i = 0; i < P; i+原创 2017-08-24 19:47:01 · 195 阅读 · 0 评论 -
poj3253 Fence Repair
/* 解析见挑战P48-49 法一:递归--复杂度(O(n^2))*/#include typedef long long ll;const int MAX_N = 2e4 + 10;int N, L[MAX_N];using namespace std;void show(){ for (int i = 0; i < N; i++) cout << L[i] << " "原创 2017-08-26 09:20:27 · 197 阅读 · 0 评论 -
poj3279 Fliptile
#include #include using namespace std;// 邻接格子的坐标const int dx[5] = {-1, 0, 0, 0, 1};const int dy[5] = {0, -1, 0, 1, 0};const int MAX_M = 16;const int MAX_N = 16;int M, N;int tile[MAX_M][MAX_N]原创 2017-08-26 09:23:44 · 295 阅读 · 0 评论 -
POJ - 3050 Hopscotch (DFS)
题目:http://poj.org/problem?id=3050题意:牛在玩一种跳格子游戏,规则如下:给定 5*5 的格子,每个格子上有对应数字牛每次可任意选定一个起始位置,向上下左右任一一个方向,跳一个格子,共跳5次,跳过的格子仍然可以继续跳将每次所跳格子上的数字连起来,组成数字串,求一共有多少种数字串思路:这题类似于迷宫类的DFS题,不过一原创 2018-01-29 10:17:45 · 331 阅读 · 1 评论