POJ
文章平均质量分 62
LeeBooL
这个作者很懒,什么都没留下…
展开
-
Drainage Ditches
裸地EK#include #include #include #include #include using namespace std;#define N 220#define INF 0x7FFFFFFF;int path[N];int flow[N];int map[N][N];//残留网络queue que;in原创 2015-02-01 17:18:28 · 297 阅读 · 0 评论 -
poj2777
开始不会做,看了大牛的题解, 好神奇说, 把线椴树树和二进制状态联系起来, col用来做延迟标记 num表示区间状态 有几个1就是有几个不同的颜色#include #include #include #include using namespace std;#define lson l, m, rt 1#define rson m + 1, r, rt 1|1#de原创 2014-12-13 23:33:17 · 304 阅读 · 0 评论 -
POJ 1113
我有白痴了原来强制类型转换不会自动四舍五入只会保留整数部分,,,,,好吧我是白痴#include #include #include #include #include #include using namespace std;#define MAXN 1111#define PI 3.1415926struct Point{原创 2015-01-20 15:27:49 · 306 阅读 · 0 评论 -
poj 1039
实践告诉我们有小数的时候选择C++ G++90%会挂#include #include #include #include #include using namespace std;#define eps 1e-8struct Point{ double x, y; Point(){}; Point (double原创 2015-01-21 10:58:56 · 333 阅读 · 0 评论 -
poj 3304 Segments
#include #include #include #include #include using namespace std;#define MAXN 222#define eps 1e-8int sid( double a){ if(a > eps) return 1; if(a > -eps && a原创 2015-01-01 23:50:43 · 351 阅读 · 0 评论 -
poj 1408
#include #include #include #include #include using namespace std;struct Point{ double x, y; Point () {}; Point(double a, double b) { x = a;原创 2015-01-21 18:24:12 · 320 阅读 · 0 评论 -
poj 2449 (第K短路) A* + dij
#include #include #include #include #include using namespace std;#define MAXN 111111#define INF 0x1f1f1f1fint head[MAXN], head1[MAXN], ecnt1, ecnt2;int dist[MAXN];bool vis[MAXN];原创 2015-02-09 12:51:39 · 417 阅读 · 0 评论 -
poj 3258
最小值最大, 也是二分#include #include #include #include #include using namespace std;#define MAXN 55555#define INF 1111111111int dis[MAXN];int l, r, ll;int n, m, ans;int cal原创 2015-01-21 23:17:30 · 308 阅读 · 0 评论 -
POJ 2653 Pick-up sticks
开始在实验室入手写的时候就在想会不会TLE,结果真的TLE 开始的想法是一边输入一边找木棍i可以覆盖的他前面的木棍j,如果他可以覆盖掉前面的那vis[i] = true, 开始我还天真的以为是O(N^2)的时间复杂度。可是这样是时间复杂度是 接近 O(N^3)的, 果断TLE了 那我们换一种思路, 当前木棍是I,我找它后面的可以覆盖它的木棍J,如果找到了就直接放弃它,找下一根木棍,如果没有原创 2015-01-05 00:00:48 · 396 阅读 · 0 评论 -
poj 1269 Intersecting Lines
最近跟每长大脑一样,人家明明让求直线,,,我还大半夜求了两个点的线段。。。无数次WA, 今天早上才反应过来我们先来熟悉几个概念 已知向量a (p1,p2),b(p3,p4) ( p1(x1, y1) , p2(x2,y2) ,p3(x2,y3), p4(x4,y4)) 如果两向量平行那么 就有 a.x*b.y - b.x*a.y == 0(也就是本题NONE的原创 2015-01-04 10:22:39 · 277 阅读 · 0 评论 -
poj 1019
#include #include #include #include #include using namespace std;#define MAXN 32270long long a[MAXN];long long s[MAXN];//int会REvoid init(){ a[0] = s[0] = 0; for原创 2015-01-19 10:20:00 · 336 阅读 · 0 评论 -
POJ 1850
#include #include #include #include using namespace std;int num[33][33];void init(){ memset(num, 0, sizeof(num)); for(int i = 0; i num[i][0] = num[i][i] = 1;原创 2015-01-18 19:35:02 · 388 阅读 · 0 评论 -
POJ 3347 Kadj Squares
因为数据比较少暴力就行, 数据多的话可以考虑线段树, 题解: 考虑都到整数的问题,把边长扩大根号2倍, 然后画画图就能推算出怎样根据之前的矩形得到当前矩形的左右起点 然后我们考虑相交的情况。 相交无非两种情况 : 1 : 前面的压着后面的 2: 后面的压着前面的 然后我们把覆盖的地方去掉,最后扫一遍就是答案#include原创 2015-01-17 18:49:36 · 281 阅读 · 0 评论 -
poj 2398 Toy Storage
跟2318 差不多#include #include #include #include #include #include using namespace std;#define MAXN 1111struct Point{ int x, y; Point(){}; Point(int a, int b原创 2014-12-27 16:15:53 · 361 阅读 · 0 评论 -
poj 2318
由于期末考试好久没写题来 ( ps:都是借口, 没写题也没干别的,天天就看捧本小破书一看一上午,看一页睡半个小时, so 还是写题吧) 简单的计算机和入门由于. You may assume that no toy will land exactly on a cardboard partition or outside the boundary of the box. The inpu原创 2014-12-27 10:34:24 · 320 阅读 · 0 评论 -
poj 1556The Doors
给一个房间,房间的边都是固定的,房间内有一些墙, 每面墙上有两个门, 起点是(0,5) 终点是(5,0), 求起点到终点的最短路径( 遇到墙从门走) 解题思路: 想到怎么 建图就好做了 N条边则有4*N+1个顶点, 我们所要求的就是怎样连接这些定点使得起点到终点的距离最小 因为N最多是10原创 2015-01-15 12:23:28 · 383 阅读 · 0 评论 -
poj 1414
没有理解好相交什么意思WA无数次 判断线段是否和矩形相交。而所谓“相交”,在计算几何的角度来看,就是线段有一点在矩形内或矩形上。判断的方法如下: 判断线段的两端点是否在矩形内,若是,则线段在矩形内。 判断线段是否与矩形相交,即是否和矩形的四条边中的任意一条边相交(规范相交和不规范相交都算)#include #include #in原创 2015-01-16 00:00:36 · 422 阅读 · 0 评论 -
POJ - 1696 Space Ant( 极角排序)
#include #include #include #include #include using namespace std;#define maxn 20000int top = 2;struct Point{ double x,y,len; int id;} Pt[maxn],Stack[maxn],Point_A;原创 2015-01-16 18:56:31 · 351 阅读 · 0 评论 -
POJ 2528
需要离散化,, 额,,, 用MAP会超时,但是用数组加二分查找就不会#include #include #include #include #include #include using namespace std;#define lson l , m, rt#define rson m + 1, r, rt #define MAXN原创 2014-12-12 19:51:58 · 293 阅读 · 0 评论 -
POJ 3252
因为bit数组开小了神WA了无数遍#include #include #include #include using namespace std;int bit[33];int dp[32][32];void init(){ memset(dp, 0, sizeof(dp)); //dp[i][j] 长度为 i,原创 2015-01-18 17:21:59 · 299 阅读 · 0 评论 -
poj 3071
概率问题f[i][j] -> 第I轮比赛J 胜出的概率然后递推的时候要注意判断下两个队是否能碰到一起#include #include #include #include #include using namespace std;#define eps 1e-10double pro[200][200];double f[10][200];原创 2015-02-05 14:11:43 · 321 阅读 · 0 评论 -
POJ 2750
给一个环,让你求环上最大连续子序列的和一般是动态规划的思想,可是注意这个道题节点和操作都非常大, DP肯定行不通, 由于它要经常更新节点, 我们想到了动态规划, 想了一个小时,。。。没什么正确的思路,看了大牛的思想。。只能说太神奇了 L ~ R最大连续序列值 只可能是两种情况, (1)同时包含 L R, (2)不同时 不包含L,R 具体怎么求法呢?假设我们将整原创 2014-12-13 01:09:17 · 470 阅读 · 0 评论 -
POJ 2013
#include #include #include #include #include using namespace std;#define eps 1e-8#define INF 0x1f1fstruct Cell{ double x, y, z, r;} num[111];double getdis(Cell a, Ce原创 2015-01-21 14:29:50 · 382 阅读 · 0 评论 -
poj 3272
最大值最小一般都是二分#include #include #include #include #include using namespace std;#define MAXN 111111int num[MAXN];int l, r;int n, m;int cal(int sum){ int res = 0, cnt =原创 2015-01-21 22:07:39 · 343 阅读 · 0 评论 -
POJ 3122
也是一个二分的题, 然后学了一个新招, 控制循环次数来控制二分, #include #include #include #include #include using namespace std;#define MAXN 11111#define PI acos(-1.0)#define eps 1e-8double pie[MAXN];dou原创 2015-01-23 22:13:14 · 384 阅读 · 0 评论 -
Supermarket
#include #include #include #include #include using namespace std;#define MAXN 10010struct node{ int p, d;}list[MAXN];int fa[MAXN];bool cmp(node a, node b){ if(a.p != b.p) ret原创 2015-03-17 00:32:27 · 448 阅读 · 0 评论 -
A Bug's Life
#include #include #include #include using namespace std;#define MAXN 1000000int fa[MAXN];int rel[MAXN];int findfa(int x){ if(fa[x] == -1) return x; int tem = findfa(fa[x]); rel[原创 2015-03-17 00:36:16 · 328 阅读 · 0 评论 -
Connections in Galaxy War
合并时要注意要求#include #include #include #include #include #include using namespace std;#define MAXN 10001int fa[MAXN];int pow[MAXN];int a[22222], b[22222];int ans[22222];map, bool> vis;原创 2015-03-17 00:37:21 · 638 阅读 · 0 评论 -
The Suspects
B - The SuspectsTime Limit:1000MS Memory Limit:20000KB 64bit IO Format:%I64d & %I64uSubmit Status Practice POJ 1611DescriptionSevere acute respiratory syndrome (SARS), an原创 2015-03-17 00:23:04 · 265 阅读 · 0 评论 -
How Many Answers Are Wrong
How Many Answers Are WrongTime Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64uSubmit Status Practice HDU 3038DescriptionTT and FF are ... friends. Uh... v原创 2015-03-17 00:26:10 · 339 阅读 · 0 评论 -
True Liars
给出p1+p2个人,其中p1个是好人,p2个是坏人。然后有一些关系 ,a说b是好人(坏人).其中没有矛盾的,判断是否有唯一解判断哪些人是好人,哪些人是坏人。其中比较重要的是,好人总说真话,坏人总说假话。不需要判断矛盾。唯一解 那么如果一个人说另一个人是好人,那么如果这个人是好人,说明 对方确实是好人,如果这个是坏人,说明这句话是假的,对方也是坏人。如果一个人说另一个人是坏人,原创 2015-03-17 00:31:34 · 385 阅读 · 0 评论 -
Wireless Network(并差集)
#include #include #include #include #include #include using namespace std;#define MAXN 1111int fa[MAXN];int x[MAXN], y[MAXN];bool ok[MAXN];vector rel[MAXN];int n, d;bool getdis(int i, in原创 2015-03-13 17:49:16 · 315 阅读 · 0 评论 -
The Suspects 并差集
#include #include #include #include #include using namespace std;#define MAXN 30000 + 11int fa[MAXN];int num[MAXN];int findfa(int x){ if(fa[x] == -1) return x; return fa[x] =原创 2015-03-13 17:50:24 · 340 阅读 · 0 评论 -
poj 2187
旋转卡壳#include <iostream>#include <string.h>#include <stdlib.h>#include <stdio.h>#include <cmath>#include <algorithm>using namespace std;struct point{ int x, y;} p[50005];int top,sta[50005];原创 2015-09-24 21:09:25 · 252 阅读 · 0 评论 -
How Many Tables
How Many TablesTime Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64uSubmit Status Practice HDU 1213DescriptionToday is Ignatius' birthday. He invites a lot原创 2015-03-17 00:24:09 · 274 阅读 · 0 评论 -
Is It A Tree?
#include #include #include #include using namespace std;#define MAXN 111111int fa[MAXN];int node[MAXN];bool flag = 1;int findfa( int x){ if(fa[x] == -1) return x; return fa[x] = fin原创 2015-03-17 00:39:32 · 356 阅读 · 0 评论 -
小希的迷宫
#include #include #include #include using namespace std;#define MAXN 100010int fa[MAXN];bool vis[MAXN];bool flag = 1;int findfa( int x){ if(fa[x] == -1) return x; return fa[x] = fin原创 2015-03-17 00:35:44 · 404 阅读 · 0 评论 -
poj 1905
角度→弧度公式 2* θr = s 三角函数公式 sinθ= 1/2*L/r 勾股定理 r^2 – ( r – h)^2 = (1/2*L)^2逆向思维解二元方程组:要求(1)式的h,唯有先求r但是由于(2)式是三角函数式,直接求r比较困难很显然的二分查找了。。。。。#include #include #include原创 2015-01-22 22:52:46 · 347 阅读 · 0 评论 -
POJ 1066 Treasure Hunt
题意: 线段与线段相交会形成密室, 求边界上到宝藏所经过的最少线段数N , 则答案就是N+1 思路: 暴力枚举,我们知道, 起点一定是边界上某一点,而终点一定是宝藏。 因为有 doors should only be blasted at the midpoint of the wall of the room being ent原创 2015-01-06 23:58:33 · 303 阅读 · 0 评论 -
Necklace of Beads
裸的Polya定理, 不过要注意一点就是N = 0 的情况#include #include #include #include #include using namespace std;int gcd( int a, int b){ if(b == 0) return a; return gcd(b, a%b原创 2015-01-24 13:47:38 · 479 阅读 · 0 评论