- 博客(46)
- 收藏
- 关注
原创 HDU 1221
这道题嘛,分析清楚,什么时候最大,什么时候最小#include #include #include #include using namespace std;struct Point { double x, y; Point() {} Point(double x, double y) { this->x = x; this->y
2016-08-10 23:37:14 730
原创 HDU 2962
Dijstra 1.设定mid=left+(right-left+1)等,二分可以根据自己的需求,产生很好的灵活性2.其实题目也没有说清楚,这个第二个输出实在模棱两可#include#include#include#include#include#include#include#define INF 1e9using namespace std;const int max
2016-08-08 12:38:58 245
原创 poj3723
#include#include#include#includeusing namespace std;const int maxn=1000+10;const int maxm=15000+10;struct Edge{ int u,v,dist; Edge(){} Edge(int u,int v,int d):u(u),v(v),dist(d){}
2016-08-07 22:56:03 260
原创 POJ1789
#include#include#includeusing namespace std;const int maxn=2000+10;const int maxm=5000000;struct Edge{ int u,v,dist; Edge(){} Edge(int u,int v,int d):u(u),v(v),dist(d){} bool o
2016-08-07 22:53:02 296
原创 POJ1861
#include#include#include#includeusing namespace std;const int maxn=1000+10;const int maxm=15000+10;struct Edge{ int u,v,dist; Edge(){} Edge(int u,int v,int d):u(u),v(v),dist(d){}
2016-08-07 22:52:20 286
翻译 POJ 2393 最小瓶颈生成树裸体
如题,是裸体#include#include#includeusing namespace std;const int maxn=2000+10;const int maxm=10000+10;struct Edge{ int u,v,dist; Edge(){} Edge(int u,int v,int d):u(u),v(v),dist(d){}
2016-08-07 16:02:48 301
原创 POJ 1861最小瓶颈树wa
说好的最小瓶颈树,要求最长边的最小值,过程中那些边可以重复?样例Output什么鬼。。。怎么回事#include#include#includeusing namespace std;const int maxn=1000+10;const int maxm=15000+10;struct Edge{ int u,v,dist; Edge(){} Edg
2016-08-07 15:39:42 199
翻译 POJ 1751
1.数据可以直接用了,不需要再开平方了2.走0捷径也好,常规求距离也罢,直接加边就可以了,毕竟sort可以排序不虚3.只要在kruskal每次并查集过程中输入加入edge即可。4.我在写Point 的时候直接在里面写length函数的时候卡壳了一下。。。#include#include#includeusing namespace std;const int maxn=
2016-08-06 23:50:31 305
原创 HDU2907
代码还是WA的。还是没有处理好判断#include#include#include#includeusing namespace std;const double eps=1e-10;int dcmp(double x){ if(fabs(x)<eps) return 0; return x<0?-1:1;}struct Point{ double x,
2016-08-06 22:33:31 230
翻译 URAL 1333
这题真是无语了。想法的确挺好的,因为1%的精度可以了,同时,N但是这个吃精度的事情真是无语1.一开始我打算把所有的数据都乘以1000,结果数据出现了惊人的误差2。同时,如果我用dcmp函数将double 类型变成int类型比较大小的时候,出现了蜜汁bug。看来像这种只是经过了+-*的double 野生类型,直接用就可以了。。。amazing#include#include
2016-08-06 15:29:32 210
原创 URAL 1572
一开始没有将他当作一个三维视角审视的题目,各种平面分析感觉是不是有点繁琐。。。后来被大神点播一下发现。。。的确竟然可以直接用get_max and get_min这样的过程轻松比较我还是太连清了#include#include#include#include#includeusing namespace std;const double eps=1e-10;double g
2016-08-06 14:36:50 210
原创 URAL 1294
原以为是会分分钟搞定的。。结果也是折腾了半个小时首先,明明列出了余弦公式,还先去求一下角度,这样就不大好了。一开始看到int类型10000以内, 于是就像用int做,但是想到如果是这样的话中间过程可能会数据过多。这个判断impossible情况真是比我想象中还要方便,直接对这个公式进行分析就可以了#include#include#include#include#include
2016-08-06 14:04:12 244
原创 HDU2108
又是一波水题WA点,如果三点共线,依旧算是凸包,即求最大点集#include#include#include#includeusing namespace std;const double eps=1e-10;int dcmp(double x){ if(fabs(x)<eps) return 0; return x<0?-1:1;}struct Point
2016-08-05 23:51:53 355
原创 HDU 1392
这样不好。。。一天到晚就搞搞水题。。。这题WA点就是凸包如果只有一个点的时候,输出0,两个点的时候输出距离以上#include#include#include#includeusing namespace std;const double eps=1e-10;int dcmp(double x){ if(fabs(x)<eps) return 0; retur
2016-08-05 23:36:00 266
原创 UVA 11626
这个就是套凸包的模板的基础题,注意因为三个点可以在凸包的外侧,所以while过程中不要将等于的也弹出其他就没什么大不了的了#include#include#include#includeusing namespace std;const double eps=1e-10;int dcmp(double x){ if(fabs(x)<eps) return 0; r
2016-08-05 23:14:04 281
翻译 HDU 2112
明明是一个基础Dijkstra。。。怎么每次一旦用string的map就这么多7788的错误GG#include#include#include#include#include#include#include#define INF 1e9using namespace std;const int maxn = 150+10;const int maxm = 10000+10
2016-08-05 14:57:32 420
翻译 POJ3259
这就很尴尬了。。。明明是经典的模板题。。。我还WA了好几次。。题目没看仔细,path是双向的,当时只是YY着虫洞的单方向性。这个模板是从0这个下标顶点开始判定的。所以不妨通过0到各个顶点之间分别架设一条权值为0的边来解决问题#include#include#include#include#include#define INF 1e9using namespace std;
2016-08-05 11:52:18 376
原创 HDU 2145wa
还是WA了,这个究竟是为神魔?#include#include#include#include#include#define INF 1e9using namespace std;const int maxn = 300+10;struct Edge{ int from,to,dist; Edge(int f,int t,int d):from(f),to(
2016-08-05 10:59:47 266
翻译 POJ3615
为什么init所有的(包括自身)d[u][v]=-1就是错误的了。。。。然后那个用Inf就对了,不是明明可以在floyd过程对d[i][k]==-1进行判定么。。#include#include#define INF 1e9using namespace std;const int maxn = 300+10;int n,m,t;int d[maxn][maxn];void i
2016-08-05 09:10:29 288
原创 POJ 2263
这题好奇怪啊!!!!!明明我思路是对的,但是呢,样例输入进去之后的结果确实错误的,我不服,直接放oj上,,,,过了。。。#include#include#include#include#include#includeconst int INF =1e9;using namespace std;const int maxn= 200+5;int n,m;int d[ma
2016-08-04 23:22:36 403
原创 POJ 2244
这题说是什么dp思路下的floyd。。。也就那样吧。。。倒是输入用map对我这类新手还是比较新鲜= =#include#include#include#includeusing namespace std;const int maxn= 30+5;int n,m;double d[maxn][maxn];void init(){ for(int i=1;i<=n;i++
2016-08-04 21:03:24 258
原创 HDU 1385
用Floyd并且增加对其dist[i][j] == dist[i][k]+dist[k][j]+cost[k] && path[i][j]>path[i][k]即可对dist相同状况下,保证path[i]下最小的情况置换出来#include#include#define INF 1e9using namespace std;const int maxn = 100+20;int
2016-08-04 19:43:19 259
原创 POJ 2553
这道题还是和其他题目相似,没有什么差别和软用#include#include#include#include#includeusing namespace std;const int maxn=5000+10;int n,m;vector G[maxn];stack S;int dfs_clock,scc_cnt;int pre[maxn],low[maxn],sccno[m
2016-08-04 17:11:44 208
原创 POJ 2186
我忽视了如果里面不知一个out0的DAG图,那样显然不能满足#include#include#include#include#includeusing namespace std;const int maxn=20000+10;int n,m;vector G[maxn];stack S;int dfs_clock,scc_cnt;int pre[maxn],low[ma
2016-08-04 16:16:54 249
翻译 HDU 2767
#include#include#include#include#includeusing namespace std;const int maxn=20000+10;int n,m;vector G[maxn];stack S;int dfs_clock,scc_cnt;int pre[maxn],low[maxn],sccno[maxn];bool in0[maxn],
2016-08-04 15:38:21 204
原创 POJ 2451
一道模板题,倒是提醒了我还要加一加外面的边框lf这玩意= =我竟然又忘了,连清打脸#include#include#include#includeusing namespace std;//精度控制const double eps=1e-10;int dcmp(double x){ if(fabs(x)<eps) return 0; return x<0?-1
2016-08-04 14:49:50 285
原创 UVA 1475
当初看刘书时发现的题目,没有好好去理解= =其实题目要求的是最大的n,使得不管炸掉n个塔之后依旧有核该核——司令部但是在二分的时候还是赶脚有点懵比,后来才发现要求的是可以将其炸出来#include#include#include#includeusing namespace std;//精度控制const double eps=1e-10;int dcmp(double
2016-08-04 14:07:08 244
翻译 UVA 1396
书上的题目,开始跟着新的大神了= =#include#include#include#includeusing namespace std;//精度控制const double eps=1e-10;int dcmp(double x){ if(fabs(x)<eps) return 0; return x<0?-1:1;}//点struct Point{
2016-08-04 00:52:03 224
原创 HDU 3718
颇有收获。自己组一组连线,但是连线可以通过给相应两两字母组合提供便利。这个输入K是卖萌的吧那个scanf(" %c",&str[i])的手法讲道理有点意思#include #include #include #include using namespace std;const int MAXNODE = 27;typedef int Type;const Type I
2016-08-03 23:58:50 254
原创 HDU 1533
这个还是套模板,此模板是对图的建立从下标1开始#include #include #include #include using namespace std;const int MAXNODE = 104;typedef int Type;const Type INF = 0x3f3f3f3f;struct KM { int n; Type g[MAXNODE
2016-08-03 20:29:43 232
翻译 HDU2255 KM完全匹配模板题收藏
跟着yifan sama继续游走江湖#include #include #include #include using namespace std; const int MAXNODE = 305; typedef int Type; const Type INF = 0x3f3f3f3f; struct KM { int
2016-08-03 19:39:20 227
翻译 UVA11927
Num是奇数才当作1个石头理解一下sg函数函数中,在想那个vis的初始化是否含有一点回溯的意思,显然我想多了= =sg在图论中的一种简单应用= =#include #include #include #include using namespace std;const int N = 1005;int n, m, sg[N];vector g[N];int dfs(
2016-08-03 18:13:21 196
翻译 UVA11859
#include #include const int N = 10005;int t, n, m, cnt[N], vis[N], prime[N], pn = 0;int main(){ for(int i=2;i<=N;i++){ if(vis[i])continue; vis[i]=1; prime[pn++]=i;
2016-08-03 18:10:45 264
翻译 UVA10733
头一次用polya定理,还是有点意思的= =膜拜yifan大神#include #include unsigned long long n;int main(){ while(~scanf("%llu",&n)&&n){ printf("%llu\n",(n*n*n*n*n*n+6*n*n*n+3*n*n*n*n+8*n*n+6*n*n*n)/24); }
2016-08-03 12:18:04 300
翻译 UVA12013
老夫看着模板过的第一道题。。。这类题好蠢,,,只要你有一个老司机的眼神。。。 #include #include const int N = 30; int t, next[N], vis[N], num[N]; char str[N]; bool judge() { for(int i=2;i<=26;i+=2){
2016-07-30 19:40:48 172
翻译 poj3675
这道题给我的感觉就是套模板,一直到circle与triangle求area过程,然后只是对多边形降解那个三角形和圆求面积的函数似乎只能表现逆时针效应,否则会出错继续仰慕lab104_yifan大神的思路#include#include#include#include#includeconst double eps = 1e-8;const double pi = acos(-
2016-07-28 19:39:56 477
原创 poj2954
用nick定理之前用的模板都是double 的= =,然后也是头一次将一堆模板删删删tr_area这个是int 类型的,最后在处理两个/2过程同时进行,几个不同步的/2过程害得老夫debug了一小会= =#include #include#include #include #include using namespace std;struct Point { int
2016-07-28 18:41:43 466
翻译 poj3304
改造相交方式还真是非常有趣通过分析可以不用进行直线和线段之间相交,而是直接用线段和线段之间相交来判定,同时规范相交的函数进行修改没有必要对第二个线段(即进行枚举的线段)要求第一个线段两段在其两侧改造相交函数的含义是,此次过程中,,第一个线段的作用相当于可以认为是直线了,即求直线和线段相交的过程= =看来我还是太连清了,居然会以为,其实是判断线段相交#include #includ
2016-07-28 11:07:21 185
翻译 poj 2826
这题虽然以前就看过,这会算是亲自下手了一发。殊不知,里边精度问题还是棒哭了。1.sb这个点真心判得还无语。刚才这不还明明已经确定了点之间的关系么。。。2.fabs 和abs。。。我太连清了3.求两个直线连接的时候,如果用之前通过求相交的点,这种点是不可靠的。4.+eps,听大神的话就是对的多谢lab104_yifan大神带我走题库,刷题,膜#include #includ
2016-07-28 09:44:23 226
翻译 poj 1325
一开始没有看到其实mode_0然后的话,整个题目就是之前提到的最小项点覆盖。#include #include #include #include using namespace std;const int N = 1005;int k, m, n;vector g[N];int left[N], vis[N];bool dfs(int u) { for (in
2016-07-28 08:19:43 266
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人