- 博客(45)
- 资源 (1)
- 收藏
- 关注
原创 zoj3598----球面三角形内角
公式公式,公式的水题。。。。#include#include#include#includeusing namespace std;#define pi acos(-1.0)#define eps 1e-8struct TPoint{ double al,bk;}p1,p2,p3;double getangle(TPoint a,TPoint b){ double a
2012-04-09 20:31:25
1356
原创 poj1656----二维线段树
二维线段树有树套树和四分法来写,表示小菜只会用树套树,而且在一维的时候lazy标记还是不太会写,,囧大了,,,#include#include#include#includeusing namespace std;#define maxn 105struct SNode{ int l,r; bool flag,color;};struct TNode{ int l,r
2012-04-07 11:07:22
1656
原创 poj2761----树状数组
简单的树状数组,复杂度是O(n+m)logn#include#include#includeusing namespace std;#define maxn 100005#define maxm 50005int cal[maxn],ans[maxn],sum[maxm],mid[maxn];int n,m;struct TNode{ int l,r,k,id;}nod[
2012-04-06 20:48:34
1737
原创 poj3321---树状数组
先确定节点关系,使每个节点都用一个线段表示,begin表示起始位置,end表示结束位置在树上搜索确定。然后就是纯树状数组模板了。这道题卡vector最好不用。#include#include#include#includeusing namespace std;#define N 100005struct TNode{ int to,next;}nod[2*N];int
2012-04-03 20:33:50
1996
原创 poj2046---BFS
好吧,表示这道题hash不会用,其实有很多题hash我都不会写= =!是用set判重的,空间占用很大,时间也不少。写了个启发函数,其实也不算什么启发,就是在节点里保存距最终状态还有多少步step,并按step从小到大排序,用优先队列保存,囧,,不料wa了,不知哪里挫了。。。#include#include#include#include#include#include#incl
2012-04-01 18:28:16
1307
原创 poj3740---dancing links
第一道dancing links题,不免有点套模板之嫌。原理理解了,现在就是缺乏熟练度,多多练习,嗯= =可是把这道水题A了,Sudoku的模型还是没有办法建,太笨了我,水货菜鸟一个啊,,,,,,#include#include#include#includeusing namespace std;#define maxn 611#define maxm 6611int
2012-03-29 14:45:40
671
转载 【搜索】Dancing Links——01矩阵
本文转载自 ccy1991911的博客http://blog.sina.com.cn/ccy1991911 本来ccy是决定放弃Dancing Links的,结果第二天吴老师又哈来一堆关于Dancing Links的资料,于是,ccy又被埋了!~ 额,到现在为止,ccy就会01矩阵,这里,写一下我学习01矩阵这个问题时操作上的一些东西。
2012-03-28 20:22:04
922
原创 poj3635---BFS
求最短路。搜索题一般难在如何剪枝和判重上,如果这两个都解决的话,搜索题就变成水题。这道题求的是从起始点到终点的最小花费,如果每次都把0~cap的油量都预先存储的话,必定会有很多不必要的操作,会很耗时。如果每次在一个位置只加1V油量,那么就会节省大量的时间开销。#include#include#include#include#include#includeusing namesp
2012-03-28 16:21:23
1533
原创 poj2449---BFS+Astar
寻找第k短路。看到这道题时,很快就想到了思路,但就是实现不了。看了discuss,可以先用dijkstra求出最短路作为估价函数,在astar来实现求出第k短路,而astar最惯常做法是用优先队列保存节点。用TPoint来保存astar里的节点,其中to是指向的位置,dis代表当前节点中已经过的距离,all是到目标的总距离。#include#include#include#inclu
2012-03-28 14:50:36
955
原创 poj1379---计算几何
//模拟退火算法//1、随机选取一个足够大的温度T作为开始//2、随机选取P个起始点,作为可行解//3、分别更新这P个可行解//4、减小温度T,直到终止条件//5、转到1#include#include#include#include#include#define dist(a,b) sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y))
2012-03-19 16:58:37
767
原创 poj1673---计算几何
//简单题,按题目要求求就行。#include#include#include#include#define eps 1e-8#define dist(a,b) sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y))#define cross(a,b,c) (b.x-a.x)*(c.y-a.y)-(b.y-a.y)*(c.x-a.x)#defi
2012-03-19 16:56:46
480
原创 poj3384---计算几何
//半平面交,然后求凸包对重点#include#include#include#include#define eps 1e-8#define dist(a,b) sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y))#define cross(a,b,c) (b.x-a.x)*(c.y-a.y)-(b.y-a.y)*(c.x-a.x)#defi
2012-03-19 16:52:24
875
原创 poj1873---计算几何
//从1到n枚举,求砍到最少的树//位压缩,之开始用的IDA*一直WA,遂换成位压缩果断AC#include#include#include#include#define eps 1e-8#define dist(a,b) sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y))#define cross(a,b,c) (b.x-a.x)*(c.y
2012-03-19 16:48:09
949
原创 poj1408---计算几何
//对n*n个四边形,求面积最大的那个的面积#include#include#include#include#define eps 1e-8#define dist(a,b) sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y))#define cross(a,b,c) (b.x-a.x)*(c.y-a.y)-(b.y-a.y)*(c.x-a.x
2012-03-19 16:44:35
533
原创 poj1039---计算几何
//枚举第i和第j个转折点,求最大距离#include#include#include#include#define eps 1e-8#define dist(a,b) sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y))#define cross(a,b,c) (b.x-a.x)*(c.y-a.y)-(b.y-a.y)*(c.x-a.x)#
2012-03-19 16:41:25
579
原创 poj1151--计算几何+离散化
//把相交的矩形分成若干个小矩形//vis[i][j]表示由标号为xi和yj的小矩形是不是原来矩形的一部分#include#include#include#include#include#define dist(a,b) sqrt(1.0*(a.x-b.x)*(a.x-b.x)+1.0*(a.y-b.y)*(a.y-b.y))#define cross(a,b,c) 1.0*(
2012-03-19 16:34:35
620
原创 poj1106---计算几何
//求在可以旋转的给定圆心和半径的半圆中最多点的个数#include#include#include#include#include#define dist(a,b) sqrt(1.0*(a.x-b.x)*(a.x-b.x)+1.0*(a.y-b.y)*(a.y-b.y))#define cross(a,b,c) 1.0*(b.x-a.x)*(c.y-a.y)-1.0*(b.y-a
2012-03-19 16:31:18
709
原创 poj1113---计算几何
//求最少的边长把城池围住//其实就是求凸包的周长+圆周长#include#include#include#include#include#define dist(a,b) sqrt(1.0*(a.x-b.x)*(a.x-b.x)+1.0*(a.y-b.y)*(a.y-b.y))#define cross(a,b,c) 1.0*(b.x-a.x)*(c.y-a.y)-1.0
2012-03-19 16:29:37
540
原创 poj3335---计算几何
//半平面交,就是求有没有内核,有输出“YES”,否则“NO”//这里都是逆时针方向#include#include#include#include#include#define dist(a,b) sqrt(1.0*(a.x-b.x)*(a.x-b.x)+1.0*(a.y-b.y)*(a.y-b.y))#define cross(a,b,c) 1.0*(b.x-a.x)*(c
2012-03-19 16:27:16
1081
原创 poj1696---计算几何
//运用叉积判断是否是逆时针,因为同一直线上也行,所以有n个植物就可以吃掉n个植物#include#include#include#include#include#define dist(a,b) sqrt(1.0*(a.x-b.x)*(a.x-b.x)+1.0*(a.y-b.y)*(a.y-b.y))#define cross(a,b,c) 1.0*(b.x-a.x)*(c.y-
2012-03-19 16:25:12
514
原创 poj1654---计算几何
//无比之水,按照题目要求做就行,求面积时,把面积之和后,在除2,避免精度缺失。#include#include#include#include#include#define dist(a,b) sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y))#define cross(a,b,c) (b.x-a.x)*(c.y-a.y)-(b.y-a.y
2012-03-19 16:23:00
497
原创 poj1556---计算几何+最短路
//这道题就是麻烦了点,其他都很简单,细节问题。#include#include#include#includeusing namespace std;#define PR 1e-8#define N 10005double edge[N][N];double dis[N];bool vis[N];struct TPoint{ double x,y; TPoint
2012-03-19 16:20:19
486
原创 poj1375---计算几何
//分别计算每个圆在floor上的阴影部分,然后贪心一下就好了//在求切线时,是把圆点逆时针旋转angle和2*pi-angle度#include#include#include#include#include#define dist(a,b) sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y))#define cross(a,b,c)
2012-03-19 16:18:07
801
原创 poj1031---计算几何
//由题目给出的公式,积分//其实我也是看网上的结论这题#include#include#include#include#include#define dist(a,b) sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y))#define cross(a,b,c) (b.x-a.x)*(c.y-a.y)-(b.y-a.y)*(c.x-a.x
2012-03-19 16:13:53
1098
原创 抽象男的情商很低
作为一个搞ACM的抽象男,我深切的感受到抽象男的情商都很低。作为一个抽象男的代表:长得抽象,思想抽象,穿得抽象,走路抽象,坐姿抽象,吃饭抽象,喝水抽象,打字抽象,说话抽象,处处抽象的我,面对朵朵学姐学妹显得那么的手足无措。面对抽象男的孤独寂寞单身的大学生活,我无时无刻不在企图AC。但不是因为资本太低,就是粗心大意,不着女孩子注意喜欢。我满怀着热情视试图去打破僵局,却不料换来的是CE、RE。我尝
2012-03-19 16:10:44
1726
原创 hdu2514---DFS
//简单的DFS,题目要求都给你了,照着写就好了#include#include#include#include#define N 11#define M 210using namespace std;int n,m,t,sumf;int map[N],ans[N];bool vis[N][N],used[N];void init(){ memset(vis,0,siz
2012-03-19 13:34:51
451
原创 hdu1426---DFS
//把‘?’提取出来,搜索时检查,这是很暴力的方法,小菜仅会如此;听说还有更高的做法,以后研究了。#include#include#include#include#define N 11#define M 210using namespace std;int n,m,t,sumf;int map[N][N];char str[2];struct TNode{ int x
2012-03-19 13:31:11
485
原创 hdu1813---IDA*
//首先把每个在能走点走出去的最小步数求出并保存//在进行dfs时,求h()时,即是求当前存在的节点走出去的最小步数中最大者//其他地方和IDA*题一样处理即可,此题就是多了个预处理,首先在记忆化搜索一遍,然后在IDA*#include#include#include#include#define inf 12345678using namespace std;int n,m,
2012-03-12 20:45:15
622
原创 hdu1560---IDA*
//因为每个串的长度不超过5,最多8个串,所以最短公共母串最长为40,所以IDA*搜索不超过40次#include#include#includeusing namespace std;int n,m,t;char str[9][6],dna[5]= {'A','C','G','T'};int len[9],tp[9];bool dfs(int ps[],int ds,int d
2012-03-12 14:41:57
758
原创 hdu2918---IDA*
//不用剪枝,直接的#include#include#includeusing namespace std;int n,m,t;char str[12];int ans[10];bool fit(int mid[]){ for(int i=1;i<10;i++) { if(mid[i]!=i) return 0; } retu
2012-03-12 14:29:15
552
原创 poj1226---字符串
//很纯很纯的水题//从长度len---1依次枚举,数据相当弱,就这样过了#include#include#includeusing namespace std;char str[110][110],st[110],en[110];int n,m,t;bool isok(char *ch,char *cg,int len,int id){ int j,k,l;
2012-03-12 10:06:49
340
原创 hdu2234---IDA*
//又是简单的IDA*,注意是每一行或每一列都相等,不是某一行或某一列都相等,这个地方WA了几次#include#include#includeusing namespace std;int n,m,t;int map[17];int count(int mid[],int a,int b,int c,int d){ int cnt[5]={0,0,0,0,0};
2012-03-11 22:20:47
835
原创 poj2286---IDA*
//很纯很纯的IDA*,在dfs时,要判断当前剩下的深度和中间出现个数最大值做比较//函数fit---目标状态是否已经存在//函数count---统计中间8个位置1、2、3出现的个数,并返回最大值//函数isok---是否之前旋转相冲突//函数swap---旋转#include #include#includeusing namespace std;int ans[25
2012-03-10 23:16:58
606
原创 hdu2452---记忆化搜索
//一颗树,边是单向的,每个节点有一定的权值,要你从根节点走到叶子节点,走到第偶数节点时,使后面的权值和最小;走到第奇数节点时,使后面的权值和最大//边链表存储,并查集查找根节点//用val[i][0]表示第i个节点是偶数节点的值和val[i][1]表示第i个节点是奇数节点的值//递归的计算,因为节点很多,所以要记忆化搜索#include #include#includeus
2012-03-10 16:41:46
585
原创 hdu3779---记忆化搜索
//两列火车入站,重新排列的车厢符不符合要求//记忆化搜索,ans[i][j]记录的是第一列火车的第i节和第二列火车的第j列在组合后的序列里找不找的到//如果找的到就标记为1,因为是从前到后搜索,所以在ans[n][m]=1时,表示符合#include #include#includeusing namespace std;#define N 1005bool ans[N][
2012-03-10 14:51:41
737
原创 poj1961---KMP
//和poj2406同样处理//一个失败函数就行//因为s=a^n,所以如果i%(i-f[i])==0,那么其a的长度就是i-f[i]了#include #include#include#includeusing namespace std;#define N 1000005int n,m,t,p,end;char str[N];int f[N];int main(){
2012-03-09 23:44:55
526
原创 poj2752---KMP
//一道简单的KMP模板题//求取next函数后就很明确了//next[i]表示在比较时,i与第next[i]个字符作比较#include #include#includeusing namespace std;#define N 400005char ans[N];int next[N],cvs[N];int n,m,t;void getnext(){ int
2012-03-09 23:31:51
3447
原创 poj2828---线段树
//题目大意是,有n个人按次序插队,第i个人会插在第f[i]个位置之后,当然随着第i+1....n个人的插入,第i个人的位置也会发生改变//那么我们可以从后往前插,第i个插在第f[i]位置之后,相当于第i个要在其插入的位置之前留f[i]个空位#include #include#include#includeusing namespace std;#define N 20000
2012-03-07 14:43:05
433
原创 poj2528---线段树
//成段更新,不必更新到底//id记录的是节点被编号为id人的海报遮住//墙的长度很长,在建树时,应以海报贴的最右边为准,不然会MLE#include #include#include#includeusing namespace std;#define N 10005int n,m,t,sum,p;struct TNode{ int l,r,id;} n
2012-03-07 14:36:51
335
原创 poj3468---线段树
//线段树成段更新//和其他题相似,注意在更新时值可以超出int范围,在乘的时候,应乘1ll强制类型转换#include #include#include#includeusing namespace std;#define N 100005typedef __int64 i64;int n,m,t;i64 sum;int ans[N];char str[2];s
2012-03-07 14:32:18
384
deiphi7做的通讯录
2012-07-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人