![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
模版
文章平均质量分 57
qq172108805
这个作者很懒,什么都没留下…
展开
-
ZOJ 3728 Collision 计算几何
/*ZOJ3728 Collision 计算几何这个计算几何不难,但是有两处没有考虑到1.没有注意速度的方向2.当时间为零的时候输出“0”,而不是“0.000”*/#include#includedouble eps=1e-10;int dbcmp(double a){ if(a>eps) return 1; else if(a<(-eps)) return -1; r原创 2013-11-27 18:34:29 · 1565 阅读 · 0 评论 -
hdu 1690 Bus System--floyd
#include__int64 map[110][110];__int64 station[110];#define Max 0x7fffffffffffff//设一最大值__int64 l1,l2,l3,l4,c1,c2,c3,c4,d;int n,m;__int64 deng(__int64 d)//计算费用{ if(d==0) return 0; else if(d原创 2011-08-08 17:04:17 · 448 阅读 · 0 评论 -
poj 2195 Going Home--最小费用最大流--spfa--动态数组--或者用 最小权匹配
/*题意:给定一个N*M的地图,地图上有若干个man和house,且man与house的数量一致。man每移动一格需花费$1(即单位费用=单位距离), 一间house只能入住一个man。现在要求所有的man都入住house,求最小费用。最小费用最大流 用到了spfa求费用最小的可改进路径仿写 http://blog.csdn.net/lyy289065406/article/deta原创 2012-07-04 16:19:54 · 685 阅读 · 0 评论 -
poj1236--强连通--tarjan--补强连通--最优分发
#include#include#includeusing namespace std;stacks;char map[110][110];char fang[110];int low[110];int ru[110],chu[110],ins[110];int n,ret,bian;int belong[110];void tarjan(int x){ int i,j;原创 2012-07-16 20:35:19 · 1335 阅读 · 0 评论 -
poj 3660 Cow Contest ----floyd 传递闭包
/*和poj1975(求其可能为中间那个不)有点像,此题也是先floyd,然后求比他小的和比他大的数量是否为n-1,是则他的位置可以确定保证(guaranteed)所给数据不冲突*/#include#includeint g[101][101];//g[i][j]表示j比i若void floyd(int n){ int i,j,k; for(k=1;k<=n;k++)原创 2012-03-15 20:29:54 · 429 阅读 · 0 评论 -
poj 2135 Farm Tour--最小费用最大流--邻接表--构图的时候注意退边--以及退边的算法
/*题意:n个地点有m条路相连,从1走到n再回来,不走重复的路(这题居然认为,同一条路,按不同的方向走算是走不重复的路)最小费用最大流因为要来回,素以相当于找两条1~n的最短路s~1 流量2 费用0n~t 流量2 费用0是每条无向边都拆分成两条有向边把有向边分别加到图里(还有他的退边,反费用,流量0)退边和他的反向边的表示是一样的,但是费用和流量是不一样的,所以不可以用邻接矩原创 2012-07-05 11:21:40 · 648 阅读 · 0 评论 -
hdu 4076 Haunted Graveyard - spfa(负权回路)
/*hdu 4076 Haunted Graveyard - spfa(负权回路)题意:有n*m个点,每一点可以向四个方向走,有些点是墓地不能走,有些点是山洞,当你走到该点时会传送到另外一点,所花费的时间有可能是个正数也可能是个负数也可能是0。起点是(0,0),目的地是(n-1,m-1),题目保证起点和终点不会是墓地也不会是山洞。如果有可能永远都到达不了终点也就是该图存在负权回路,输出Nev原创 2013-05-15 19:52:50 · 1107 阅读 · 0 评论 -
poj3348 Cows 凸包+多边形面积 水题
/*poj3348 Cows 凸包+多边形面积 水题floor向下取整,返回的是double*/#include#include#include using namespace std;const double eps = 1e-8; struct point{ double x,y;};int n;point dian[10000+10],zhan[10000+1原创 2013-07-31 16:21:09 · 964 阅读 · 1 评论 -
poj 2449 Remmarguts' Date--k短路--spfa+A*
/* k短路问题 spfa+A* A*算法入门 http://www.cppblog.com/mythit/archive/2009/04/19/80492.aspx 初识A*算法 http://tekbots.eefocus.com/article/10-01/1688061264487401.html A*算法就是通过估价函数(f[x]=g[x]+h[x])优先选择更接近目标的节点原创 2012-07-16 10:23:31 · 1433 阅读 · 0 评论 -
poj 1511 Invitation Cards--SPFA
/* SPFA*/#include#includeusing namespace std;#define nMax 1000050#define eMax 10000050#define inf 1000000050__int64 sum,dist[nMax];int vis[nMax],p,q,tou[nMax],re_tou[nMax];struct node{ in原创 2011-08-11 12:58:47 · 489 阅读 · 0 评论 -
hdu 4465 Candy - 概率 log 组合数
/*两个瓶子里都装了n个糖果;从第一个瓶子拿的概率是p当你再拿糖果的时候,发现瓶子空了求这时候另外一个瓶子的剩余的糖果的数量的期望计算过程会造成上溢和下溢用log就不会了*/#include#includedouble lognjie[400010];double logC(int n,int m){ return lognjie[n]-lognjie[m]-原创 2013-06-01 16:47:44 · 2127 阅读 · 0 评论 -
poj 2653 Pick-up sticks--线段相交--vector
/*题意:随即扔一些棒子,输出在最上面的棒子(没有那个棒子压着它)的编号线段相交问题本体用到了 vector 注意 v.erase(remove_if(v.begin(),v.end(),ok),v.end()); 用法同时 v.erase 返回的是删除过后,下一个元素的位置,不要再for里面用 it++ 在循环里面自己操作*/#include#inc原创 2012-08-14 16:24:35 · 461 阅读 · 0 评论 -
hdu 2955 Robberies--01背包
/*题目大意:有一个小偷要偷银行的钱,可是他偷没家银行总是有一定的概率被抓,现在给了你一个概率P,只要他被抓的概率乘积不大与P,他就是安全的。 问你在他安全的情况下,他最多可以偷多少钱。做这道题是,错误的认为题目所给的浮点型的数据都是精确到小数点后两位,然后把概率放大100倍,转换成为熟悉的01背包。。faint。。经测试题目的数据可能达到0.00001,甚至比0.00001还小,,所以原创 2012-11-02 18:01:06 · 779 阅读 · 0 评论 -
hdu 4015 Mario and Mushrooms - 组合数学
/*好蘑菇和烂蘑菇,好蘑菇增加1个血,烂蘑菇减m个血开始的时候0个血,最后一个血,所以 好蘑菇的数量是m*k+1这题很明显,如果这个序列合法,则他的任意一个序列的循环移动都是不合法的合法序列的第一个必须是好蘑菇 最后一个必须是烂蘑菇,所以正向负向循环移动都是不合法的*/#include int main(){ int m,k; int t,s=0;原创 2013-04-03 20:19:22 · 1274 阅读 · 1 评论 -
HDU 4509 湫湫系列故事——减肥记II 线段树
/*hdu 4509一天工24*60分钟接下来有一些时间段,你要去做些事问你有多少空余时间。线段树题目*/#include#includestruct node{ int l,r,mid,k;}yong[1000000];int n;void build(int l,int r,int i){ yong[i].l=l; yong[i].r=r; yong[i]原创 2013-03-22 16:54:13 · 1610 阅读 · 0 评论 -
poj 1258 Agri-Net--Prim和Kruskal算法
/* prim算法*/#include#includeint map[110][110],vis[110],dist[110];int n;void geng(int j)//更新剩余节点到树的最小距离{ int max=999999999,i; for(i=1;i<=n;i++) if(vis[i]&&map[i][j]<max) max=map[i][j]; d原创 2011-08-08 18:53:30 · 542 阅读 · 0 评论 -
hdu 1717 小数化分数2
#include#include#includeint zui(__int64 zi,__int64 mu){ __int64 z; do { z=mu%zi; mu=zi; zi=z; }while(zi!=0); return mu;}void shu(__int64 zi,__int64 mu){ __int64 a; a=zui(zi,mu); i原创 2013-05-15 20:02:13 · 791 阅读 · 0 评论 -
hdu 1403 Longest Common Substring - 后缀数组
/*第一次做后缀数组就是求连个串的公共子串简单的后缀数组*/#include#include#define MAXN 200010 char str[100000+10];int r[100000*2+10];int wa[MAXN], wb[MAXN], wv[MAXN], ws[MAXN]; int sa[MAXN]; //index range 1~n va原创 2013-05-07 19:48:57 · 707 阅读 · 0 评论 -
hdu 4080 Stammering Aliens - 后缀数组
/*其实这题才是第一次做 但是一直不过,也不知道怎么回事儿就去调了那个简单题做现在才发现少了main里面的if还有ok2 是我之前写的,但是少了个{}题意是,在所给的字符串中找一个子串,最少出现m次,求那个最长的串,并输出最后一次的开始位置按长度二分,判断是否符合条件即可*/#include#includeconst int maxn=500010;i原创 2013-05-07 20:53:30 · 947 阅读 · 0 评论 -
hdu 2686 Matrix - 最小费用最大流 或 多线程DP
/*hdu 2686 Matrix方阵(每个格子里面都有一个数字)里面从左上走到右下,再回来,一个点只能走一次,求数字之和最大是多少相当与从左上到右下选两条不交叉的路,使和最大典型的最大费用最大榴我要说的是,这是昨天的省赛的原题,当时就像到了什最大费用最大流,但是当时脑袋一热,又感觉不是(韩式我对这个算法的理解不够啊)其实只要在那个模板(http://blog.csdn.net/qq原创 2013-05-13 21:09:59 · 953 阅读 · 1 评论 -
hdu 4612 Warm up - 双连通 + 树形DP
/*hdu 4612 Warm up - 双连通 + 树形DP题意很简单通过双连通缩图,构成一棵树,然后求最长链,连接首尾即可。剩下的连通块就是所求*/#pragma comment(linker,"/STACK:102400000,102400000")#include #include const int N=200000+10,M=1000000+10;int原创 2013-07-28 10:27:21 · 976 阅读 · 0 评论 -
poj 2104 K-th Number--划分树
/*求区间第k大元素算法是划分树划分树的 右子树元素>=左子树元素划分树的查找过程是: 若[a,b]进入左子树的元素数>=k,就在左子树找; 若元素数n<k,那么k-n个元素在右子树找所以划分树需要记录从 区间最左边 到 当前元素 有多少进入左子树故先对数据进行排序 然后通过中间值把元素分成两部分 这就是建树的过程http://blog.sina.原创 2012-07-19 09:48:09 · 1544 阅读 · 0 评论 -
hdu 4643 GSM 计算几何 - 点线关系
/*hdu 4643 GSM 计算几何 - 点线关系N个城市,任意两个城市之间都有沿他们之间直线的铁路M个基站问从城市A到城市B需要切换几次基站当从基站a切换到基站b时,切换的地点就是ab的中垂线与铁路的交点(记录由哪两个基站得到的交点,方便切换)处枚举任意两个基站与铁路的交点,按到城市A的距离排序求出在城市A时用的基站j,然后开始遍历交点,看从j可以切换到哪个基站(假设是原创 2013-08-07 11:36:08 · 7410 阅读 · 0 评论 -
poj3422 Kaka's Matrix Travels 最大费用最大流
/*poj3422 Kaka's Matrix Travels题意:有个方阵,每个格子里都有一个非负数,从左上角走到右下角,每次走一步,只能往右或往下走,经过的数字拿走每次都找可以拿到数字和最大的路径走,走k次,求最大和这是 最大费用最大流 问题 每次spfa都找的是一条和最大的路径 s--到左上角的边流量是K限制增广次数求最大费用最大流只需要把费用换成相反数,用最小费用最大流求解原创 2012-08-12 17:35:00 · 2790 阅读 · 0 评论 -
KM算法 最优匹配(最大权匹配) hdu 2255 奔小康赚大钱 最小权匹配 poj 2195 Going Home
最大权二分匹配问题就是给二分图的每条边一个权值,选择若干不相交的边,得到的总权值最大。解决这个问题可以用KM算法。理解KM算法需要首先理解“可行顶标”的概念。可行顶标是指关于二分图两边的每个点的一个值lx[i]或ly[j],保证对于每条边w[i][j]都有lx[i]+ly[j]-w[i][j]>=0。如果所有满足lx[i]+ly[j]==w[i][j]的边组成的导出子图中存在一个完美匹配,那么这个原创 2012-08-11 17:09:09 · 2641 阅读 · 0 评论 -
sgu 176 Flow construction--有源汇 有上下界 最小流
/*SGU 176 Flow construction题意:有些节点(编号1~n,1为源,n为汇)和管道,用来运输某种物质(substance)某些管道必须满流,有些不必,找到一个最小流,满足要求输入:结束数目 管道数目管道{ 管道前节点,后节点,最大流量,是否需要满流(1需要0不需要)}就是求一个最小流http://blog.csdn.net/qq172108805/art原创 2012-08-01 15:34:57 · 1951 阅读 · 0 评论 -
hdu1269--求强连通分量个数--tarjan--图的静态邻接表
#include#include#includeusing namespace std;stacks;int ret;struct node{ int v,next;} e[100010];int ins[10010],fang[10010],head[10010],low[10010];int n,m,yong;void tarjan(int k){ int j,u;原创 2012-07-16 20:35:52 · 3142 阅读 · 0 评论 -
codeforces 183 B Zoo--计算几何+枚举
/*题意:有n个望远镜,被放置在X轴1~n的位置上,现有m只鸟,望远镜可以以任何角度观察,能看到在那条直线上的所有鸟,问所有望远镜能看到的鸟的数量之和计算几何+暴力*/#include#includeint n,m;int num[1000010];struct line//边结构{ __int64 a,b,c;};struct point//点{ __int64原创 2012-08-01 14:53:09 · 2046 阅读 · 0 评论 -
poj3352--旅游岛修路--双连通--无向图邻接表的容量是边数量的2倍
#include#includeint head[1010],low[1010],fang[1010],du[1010];struct node{ int v,next;}e[2001];//这地儿老郁闷了,没有注意到无向图存边需要的是边数量的2倍,之前老是WAint yong,n,r;int min(int a,int b){ if(a<b) return a; ret原创 2012-07-16 20:34:47 · 1746 阅读 · 0 评论 -
hdu 1724 Ellipse simpson积分
/*hdu 1724 Ellipse simpson积分求椭圆的部分面积simpson积分法 http://zh.wikipedia.org/zh-tw/%E8%BE%9B%E6%99%AE%E6%A3%AE%E7%A7%AF%E5%88%86%E6%B3%95*/#include#includeconst double eps=1e-8;inline double jue(do原创 2013-09-29 22:14:55 · 1011 阅读 · 0 评论 -
hdu 4741 Save Labman No.004 异面直线最短距离及对应的点
#include#includeconst double eps=1e-9;#define zero(x) (((x)>0?(x):-(x))<eps)int dbcmp(double a){ if(a>eps) return 1; else if(a<(-eps)) return -1; return 0;}struct point{ double原创 2013-10-02 10:00:42 · 1335 阅读 · 0 评论 -
poj 3648 Wedding+2-sat+SCC+缩点+拓扑排序
/*2-sat问题,题意:有对情侣结婚,请来n-1对夫妇,算上他们自己共n对,编号为0~~n-1,他们自己编号为0所有人坐在桌子两旁,新娘不想看到对面的人有夫妻关系或偷奸关系,若有解,输出一组解,无解输出bad luck思路:1.根据偷奸关系建图(1h和2h有偷奸关系,建边1h->2w 2h->1w)2.求强连通分量3.判断有无解(任一对夫妇不在同一强连通分量中,有解;否则无解)原创 2012-05-25 21:37:29 · 1854 阅读 · 0 评论 -
hdu 2544 最短路--Dijkstra
#include#includeint map[110][110];int vis[110],dist[110];int xun(int n)//在剩余的节点中寻找到1最近的{ int xia=-1,i; for(i=1;i<=n;i++) if(vis[i]==0&&(xia==-1||dist[i]<dist[xia])) xia=i; return xia;}v原创 2011-08-08 15:11:01 · 414 阅读 · 0 评论 -
zoj1119--双连通--寻找关节点---计算子网数
/*通过这个过程,可以发现一条规律: 当v是树根,如果它有2个或者更多儿子,那么它是一个关节点。 当v不是树根,当且仅当它有至少一个儿子w, 且从w出发,不能通过w的后代顶点组成的路径和一条回退边到底u 的任意一个祖先顶点,此时v 是一个关节点。 其道理很明显,如果树根包含多个儿子,那么把根节点去掉,整棵树自然被分成多个不相干的部分,图也就断开了。如果v是非根顶点,如果其子树中的节点均没有原创 2012-07-16 20:34:15 · 1051 阅读 · 0 评论 -
poj 2451 Uyuw's Concert - 半平面交
/*poj 2451 Uyuw's Concert - 半平面交很裸的半平面交*/#include#include#include using namespace std;const double eps=1e-10;struct point{ double x,y; point(){} point(double a,double b):x(a),y(b){}}原创 2013-08-05 19:45:29 · 1148 阅读 · 0 评论 -
poj 3130 How I Mathematician Wonder What You Are! - 求多边形有没有核 - 模版
/*poj 3130 How I Mathematician Wonder What You Are! - 求多边形有没有核*/#include #includeconst double eps=1e-8;const int N=103;struct point{ double x,y;}dian[N];inline bool mo_ee(double x,dou原创 2013-08-09 11:25:43 · 1031 阅读 · 0 评论 -
KMP详解
KMP详解原创 2013-09-12 19:29:17 · 746 阅读 · 0 评论 -
hdu 4609 3-idiots FFT
/*hdu 4609 3-idiots FFThttp://www.cnblogs.com/kuangbin/archive/2013/07/24/3210565.html*/#pragma warning(disable : 4786)#pragma comment(linker, "/STACK:102400000,102400000")#include #include #i原创 2013-09-30 19:01:48 · 1040 阅读 · 0 评论 -
hdu 1402 A * B Problem Plus FFT
/*hdu 1402 A * B Problem Plus FFT这是我的第二道FFT的题第一题是完全照着别人的代码敲出来的,也不明白是什么意思这个代码是在前一题的基础上改的做完这个题,我才有点儿感觉,原来FFT在这里就是加速大整数乘法而已像前一题,也是一个大整数乘法,然后去掉一些非法的情况*/#pragma warning(disable : 4786)#pragm原创 2013-09-30 19:02:37 · 1251 阅读 · 0 评论 -
string
stringstring s(char* p);string s(char* p,int len);//取前len个string s(char* p1,char* p2);//p1到p2,不包括p2string s(string ss);//复制ssstring s(string ss,int a,int b)//字符串ss从下标a开始,长度为b~string()原创 2012-07-18 12:55:35 · 434 阅读 · 0 评论