|
|
随笔分类 -
模板
摘要:struct Matrix { int h,w; long long mx[MAXS][MAXS]; Matrix() { h=0; w=0; memset(mx,0,sizeof(mx)); } Matrix operator* (const Matrix& b) const { ...
阅读全文
摘要:typedef __int64 lld; lld a[205][205]; int sign; lld N,MOD; void solved() { lld ans=1; for(int i=0;i<N;i++)//当前行 { for(int j=i+1;j<N;j++)//当前之后的每一行,因为每一行的当前...
阅读全文
摘要:struct Point { int id; LL x,y; Point(){} Point(LL x,LL y):x(x),y(y){} void Read(){scanf("%I64d%I64d",&x,&y);} LL operator^(const Point P)const{return x*P.y-y*P.x;} Point o...
阅读全文
摘要:#include #include #include #define maxn 30000 using namespace std; int n; int jilu[maxn]; int wa[maxn],wb[maxn],wv[maxn],ws[maxn],r[maxn],sa[maxn],rankk[maxn],height[maxn];//r数组是将原始字符串进行整数化 int cmp(i...
阅读全文
摘要:#include #include #include #define MAXN 100010 #define MAXM 5050 using namespace std; struct tr{ int l,r,sum; }; tr tree[MAXN*50]; int root[MAXN]; int cnt; int jilu[MAXN],from[MAXN]; void updat(i...
阅读全文
摘要:for (int i = 1; i <= n; ++i) { for (int j = 1; j <= m; ++j) { if (a[i] == b[j]) { f[i][j] = f[i-1][j-1] + 1; } else { ...
阅读全文
摘要:#include #define MAXN 100050 #define MAXM 900000 using namespace std; struct st { int id; long long dis; st(int a,long long b) { id=a; dis=b; } st(){}; }; stru...
阅读全文
摘要:#include #include #include #include #define MAX_LEN 310000 using namespace std; int p[MAX_LEN]; int findBMstr(string &str){ int maxx=-1; memset(p,0,sizeof(p)); int mx=0,id=0; for(int ...
阅读全文
摘要:题意: 秦始皇要建路,一共有n个城市,建n-1条路连接。 给了n个城市的坐标和每个城市的人数。 然后建n-2条正常路和n-1条魔法路,最后求A/B的最大值。 A代表所建的魔法路的连接的城市的市民的人数的和,B 代表n-2条正常路的长度的和。 思路: 这题是次小生成树的变形,所谓次小生成树的核心应该是
阅读全文
摘要:恢复内容开始 题意略。 这题在poj直接求最小费用会超时,但是题意也没说要求最优解。 根据线圈定理,如果一个跑完最费用流的残余网络中存在负权环,那么顺着这个负权环跑流量为1那么会得到更小的费用。 关键是坑在找环的起点。其实看了代码之后发现的确不难... 恢复内容结束
阅读全文
摘要:#include #include #define MAXN 1003 #define MAXM 10002*4 #define INF 10000000 using namespace std; //起点编号必须最小,终点编号必须最大 bool vis[MAXN]; //spfa中记录是否在队列里边 struct edge{ edge *next...
阅读全文
摘要:题意: k c m 分别代表挤奶机数量,牛数量,和挤奶机容量。 接下来(n=k+c)n*n的矩阵A,代表挤奶机或者牛的距离,如果对角线都为0,如果非对角线没有直接路相连也为0。 1 <= K <= 30 1 <= C <= 200 1 <= M <= 15 0<=Aij<=200 求:在机器不能过载
阅读全文
摘要:struct Edge { int v,c,f,nx; Edge() {} Edge(int v,int c,int f,int nx):v(v),c(c),f(f),nx(nx) {} } E[MAXM]; int G[MAXN],cur[MAXN],pre[MAXN],dis[MAXN],gap
阅读全文
摘要:int dfn[N],low[N],id[N],s[N],p,num,t,son[N];//dfn记录dfs时间戳//low代表当前点到达的最小时间戳,id对点进行分组编号.num是时间戳//s临时存储数据的手工栈,p栈顶元素的位置,son记录儿子因为无向图记录边都是两个边 void tarjan(int pos){ dfn[pos]=low[pos]=++num; s[++p]...
阅读全文
摘要:int dep[N],rt[25][N],siz[N];//rt数组需要在dfs之前置-1。 void dfs(int pos,int deep){ dep[pos]=deep; siz[pos]=1; for(edge *it=adj[pos];it;it=it->next){ if(!dep[it->id]){ rt[0][i...
阅读全文
摘要:FROM: http://blog.csdn.net/int64ago/article/details/7425727 对于YES_LEFT或者NO_RIGHT int bSearch(int begin, int end, int e) { int mid, left = begin, right
阅读全文
摘要:int gcd(int a,int b){ return b==0?a:gcd(b,a%b);}
阅读全文
|