
模板
文章平均质量分 57
Julyana_Lin
这个作者很懒,什么都没留下…
展开
-
输入输出
int getint() { int t = 0; char c = getchar(); while (c '9') c = getchar(); while (c >= '0' && c <= '9') { t = t * 10 + c - '0'; c = getchar();原创 2012-08-09 21:38:36 · 373 阅读 · 0 评论 -
求半平面交学习模板
学习地点原创 2012-10-22 12:33:41 · 615 阅读 · 0 评论 -
trick
做题思路:几步之内可以走完。测试小数据。重边。起点和终点不连通。原创 2012-10-13 15:00:55 · 448 阅读 · 0 评论 -
产生素数模板 求质因数 求所有质因数的乘积
int prime[maxn];bool flag[maxn];void mkprime() { memset(flag, -1, sizeof(flag)); for (int i = 2, plen = 0; i < N; i++) { if (flag[i]) { prime[plen++] = i; }原创 2012-09-15 20:29:44 · 707 阅读 · 0 评论 -
hdu 2462 数学欧拉 The Luckiest number
题目思路:求解10^x = 1 (mod 9*L/gcd(L,8))的满足x>0的最小解就是答案由8构成的数A设有x位那么A=8(10^0+10^1+...+10^(x-1));很容易得到A=(8/9)*(10^x-1);题目的要求就是A=0(mod L)就是(8/9)*(10^x-1)=0(mod L);->8*(10^x-1)=0(mod 9L);->10^x-转载 2012-09-15 21:19:45 · 1180 阅读 · 0 评论 -
快速幂取模 &&gcd
long long mod_pow(int a,int n,int p){ long long ret=1; long long A=a; while(n) { if (n & 1) ret=(ret*A)%p; A=(A*A)%p; n>>=1; } return ret;原创 2012-08-20 14:53:49 · 614 阅读 · 0 评论 -
hdu 2460 tarjen Network
题意:给你一个无向连通图,让后给出每给q条要添加的边,输出添加每一条边之后图中还剩下多少桥分析:向图中加入边那么就有可能是得图中的桥减小,那么我们可以先求出图中的双连通分量,那么若添加的一条边是属于某个双连通分量的那么桥的条数没有减少,如果这条边的两个顶点分别属于两个双连通子图,那么从就会使桥的数目减小,那么问题就分为两步来解决: 1、求出双连通分量后和缩点 2、加入一条边后求出桥减少的条原创 2012-09-15 17:07:16 · 1139 阅读 · 0 评论 -
poj 3084 最小割 模板题 PANIC ROOM
多校出了道模板题,于是就开始找模板。这题也是求最小割。http://poj.org/problem?id=3084题意:有n个房间,要确保一个房间(t)不能进坏人。相邻的房间可能会有门,但是门上的锁是单向的(只能从一个房间打开进入另一个房间,a b ,只能从a进入b 不能从b 进入a),初始所有的锁都是开着的,问至少关上几个锁,才能不让坏人进入那个房间。最小割?此前看到过最大流原创 2012-09-16 22:33:23 · 668 阅读 · 0 评论 -
欧拉函数求值
int Oula(int x){ int i,res=x; for(i=2;i<(int)sqrt(x*1.0)+1;i++) if(x%i==0) { res=res/i*(i-1); while(x%i==0) x/=i; } if(x>1原创 2012-08-27 15:38:08 · 3734 阅读 · 0 评论 -
tarjen
Tarjan大神DFS的三个算法终于都学会了。 1.Tarjan求最近公共祖先。 2.Tarjan求强连通分量。 3.Tarjan求双连通分支。 这篇文章介绍第三项:Tarjan求双连通分支; 基本概念: 1.割点。在无向图中存在这样一个点,切除该点图的连通分量数+1.也就是说原有的一个连通分量经过操作成为两个连通分量。 2.桥。在无向图中存在这样一条边,删掉该边图的连转载 2012-09-15 21:29:48 · 607 阅读 · 0 评论 -
hdu 2458 二分图匹配 Kindergarten
题意:http://acm.hdu.edu.cn/showproblem.php?pid=2458 本题要求学生中相互了解的人数最多有多少。男生之间都是相互了解的,女生之间也是相互了解的,所以我们可以把相互了解的人之间的边看成是1,所以男生是一个集合,女生是一个集合,map[男][男]=1;map[女][女]=1;当男生和女生熟悉时,map[][]=1;当男生与女生不了解时,ma原创 2012-09-15 17:25:10 · 543 阅读 · 0 评论 -
hdu 2461 容斥原理 Rectangle
题意:http://acm.hdu.edu.cn/showproblem.php?pid=2461 给你n(n很小)个长方形,求这中间任意长方形的面积并。题解: 容斥原理。#include #include #include using namespace std;int n,Q;struct Rec{ int x1,x2,y1,y2;原创 2012-09-15 15:52:51 · 1084 阅读 · 0 评论 -
树状数组总结
功能1:sum(x)返回原数组[1,x]的区间和,update(x,w)将原数组下标为x的数加上w。这两个函数使用O(logn)的时间和O(n)的空间完成单点加减,区间求和的功能。功能2:接下来做一些升级,让树状数组完成区间加减,单点查询的功能。考虑将原数组差分,令d[i]=a[i]-a[i-1],特别地,d[1]=a[1]。那么区间[l,r]整体加上k的操作就可以简单地使原创 2012-09-13 10:34:35 · 423 阅读 · 0 评论 -
一些小东西- 二分,海伦公式,最大公约数,扩展欧几里德,并查集,优先队列,求x!中p的个数
int bin(int low, int high,int key,int a[]){ while(low < high){ int mid = (low + high) >> 1; if(a[mid] < key) low = mid + 1; else high = mid; } return low;}返回的是你要原创 2012-08-10 14:00:33 · 847 阅读 · 0 评论 -
SPFA
int spfa() { int vis[N]; int dis[N]; memset(vis,0,sizeof(vis)); for(int i=1;i<=n;i++) dis[i]=inf; queuemyqueue; while(!myqueue.empty())myqueue.pop(); vis[1]原创 2012-08-16 20:07:24 · 420 阅读 · 0 评论 -
最大子段和
http://blog.youkuaiyun.com/chaoyue1216/article/details/6870339动态规划是一个很巧妙的算法,但是能够想得到如何用动态规划,我感觉还是有难度的。不过慢慢来,先从小的动态规划的例子开始。现在有一个数组,请找出这个数组的最大子段和。(即 max (a[i]+a[i+1]+...+a[j]) 0现在我们的思路是: 记s[i]为 a[转载 2012-08-31 10:58:09 · 607 阅读 · 0 评论 -
经验总结
1)正着不行,我们逆着推。2)%MOD + MOD )%MOD; 这个在取模的时候很常见。原创 2012-08-18 14:30:05 · 342 阅读 · 0 评论 -
最近点对模板
#include #include #include #include #include using namespace std;const int N = 100005;const double MAX = 10e100, eps = 0.00001;typedef struct TagPoint{ double x; double y; int indx;}Poi原创 2012-10-31 11:08:03 · 592 阅读 · 0 评论