08 2015 档案
摘要:#include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;int n...
阅读全文
摘要:#includeusing namespace std;const int N=2500+5;char mp[128][128];int xs[128][128],ys[128][128];int nx,ny,cx[N],cy[N],g[N][N],mk[N];int path(in...
阅读全文
摘要:点支配集支配:任意 V-V* 中的顶点,都有存在 V* 中的顶点和它通过边相连通点支配集:V-V* 中的每个顶点都是 V* 中某个顶点的邻接顶点极小配集:点支配集 V* 任何真子集都不是点支配集最小支配集:顶点数最小的支配集点支配数:最小支配集中的顶点个数点覆盖集覆盖:任何一条边,都...
阅读全文
摘要:题目问你输入的树是不是独一无二的树,推断一下可以发现,只要用dfs求出这棵树的层次,再判断一下就可以了。最后一层可以有多个节点,其他情况只能是一个子节点。#include #include #include #include #include #include #include #i...
阅读全文
摘要:#include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;int m...
阅读全文
摘要:#include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;struc...
阅读全文
摘要:#include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;struc...
阅读全文
摘要:#include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;struc...
阅读全文
摘要:题目就是问你有没有一条直线可以满足大于等于p%的点在它上面。如果是枚举全部直线的话,会超时。所以用rand函数随机来找直线。#includeusing namespace std;const int N=100000+5;int x[N],y[N];int main(){ in...
阅读全文
摘要:#include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;int m...
阅读全文
摘要:#includeusing namespace std;mapm;int a[200000+5];int main(){ int i,n,tot; string s; while(~scanf("%d",&n)) { m.clear(); ...
阅读全文
摘要:题意是求a到b的闭区间内有多少个数与n互质,考虑到数据范围比较大,所以我们先用欧拉函数的方式将n的因子分解出来。对于每个因子我们采用dfs来组合他们,并求出范围内和他们不互质的数的个数。这里我们采用容斥原理来处理重复。#includeusing namespace std;typed...
阅读全文
摘要:将不同因子组合求区间内合数个数比较有技巧#include #include #include #include #include #include #include #include #include #include #include #include #include using...
阅读全文
摘要:#include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;typed...
阅读全文
摘要:#include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;typed...
阅读全文
摘要:#include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;typed...
阅读全文
摘要:虽然题目讲了那么多,最后只是让你找出可以整除c的集合。应该是spj程序有问题,你直接输出零都是对的。 因为题目中c保证小于n,所以根据抽屉原理,一定存在一个连续的区间,满足题目要求。#include #include #include #include #include #inclu...
阅读全文
摘要:虽然题目讲了那么多,最后只是让你找出可以整除c的集合。应该是spj程序有问题,你直接输出零都是对的。 因为题目中c保证小于n,所以根据抽屉原理,一定存在一个连续的区间,满足题目要求。#include #include #include #include #include #inclu...
阅读全文
摘要:#include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;int m...
阅读全文
摘要:有最多数量的某种糖果数量为maxn,接下来问题转化成能否将在maxn个相同的糖果序列中间差入一些其他糖果,将相同的糖果分开。根据抽屉原理,最少需要maxn-1个糖果。#include #include #include #include #include #include #incl...
阅读全文
摘要:#include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;int m...
阅读全文
摘要:#include#include#include#include#includeusing namespace std;const int N=256;const int inf=0x7fffffff;struct Edge{ int from,to,cap,flow,cost...
阅读全文
摘要:考虑输出yes的几种情况 - s和t直接相等 - 不相等时,s长度小于t - s是t的子串 - t的开头几个字母都相同时,s的也必须相同#includeusing namespace std;char s[100000+5],t[100000+5];int main(){ in...
阅读全文
摘要:输出的时候发现不会对原来的矩阵排序,只好重新搞了一储存边的一维数组,然后排序。#includeusing namespace std;const int N=256;const int inf=0x7fffffff;struct type{ int b,c,f; int ...
阅读全文
摘要:#include#include#include#include#includeusing namespace std;int main(){ int _,i,j,m,n,k,a[1024],b[1024],w[1024],dp[2048]; scanf("%d\n",&...
阅读全文
摘要:inf开太小错了好久……下次还是要用0x7fffffff#include#include#include#include#includeusing namespace std;const int N=5024;const int inf=0x7fffffff;struct Edge{...
阅读全文
摘要:输入的时候没有取反,一直ole。 这里也是用到拆点,将一个点拆成p和q,这两个之间连接两条路,一条cap=1和cost=矩阵上的值,另一条为cap=k和cost=0。在将0和2*n *n+1看成源点和汇点。#include#include#include#include#includ...
阅读全文
摘要:题意就是让你求两次1到n的最短路。这题应该可以用最短路来求解吧,只需要将第一次用到的边删去即可。我这里是按照算法竞赛入门经典里面提到拆点+最小费最大流。#includeusing namespace std;const int N=1024*4;const int inf=1edge...
阅读全文
摘要:#includeusing namespace std;typedef long long ll;int main(){ int _,n,i,p; scanf("%d",&_); while(_--) { scanf("%d",&n); ...
阅读全文
摘要:#includeusing namespace std;int s[100],k;int fnc(int x){ int ret=0; while(x>0) { s[k++]=x%10; ret+=x%10; x/=10; ...
阅读全文
摘要:题意是告诉你全部一张图点与点之间的最短路,问你原图最少有几个点?#includeusing namespace std;int mp[100+5][100+5],d[100+5][100+5];int main(){ int _,n,i,j,k,p,ans; scanf(...
阅读全文
摘要:#include #include #include #include #include #include #include #include #include #include #include #include using namespace std;const double i...
阅读全文
摘要:#include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;const...
阅读全文
摘要:#include#include#include#includeusing namespace std;const int N=200000+5;const int inf=1edges;vectorG[N];int n,m,s,t;int vis[N];int d[N];int c...
阅读全文
摘要:#include#include#include#includeusing namespace std;const int N=1024;const int inf=0x7fffffff;struct Edge{ int u,v,w,use,del;};vectoredge;v...
阅读全文
摘要:#pragma comment(linker, "/STACK:102400000,102400000")#include#include#include#includeusing namespace std;const int N=1024;const int inf=1edges...
阅读全文
摘要:#include #include #include #include #include #include using namespace std;int gcd(int u,int v){ if(u10*180) difms=10*360-difms; if(d...
阅读全文
摘要:题目关键是建模,之后就是简单地增广路。#include#include#include#include#includeusing namespace std;const int N=1024;const int inf=1q;void ford(){ int a[N],vis[...
阅读全文
摘要:#include#include#include#includeusing namespace std;const int N=1024;const int inf=1edges;vectorG[N];int n,m,s,t;int vis[N];int d[N];int cur[N...
阅读全文
摘要:#include#include#includeusing namespace std;const int N=200000+5;const int inf=1<<24;int dp[N][2],a[N];char s[2*N];int main(){ int n,m,i,_;...
阅读全文
摘要:#include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;const...
阅读全文
摘要:#include#include#include#include#includeusing namespace std;const int N=1024*2;const int inf=1q; while(1) { memset(p,0xff,sizeof(...
阅读全文
摘要:#include#include#include#includeusing namespace std;int n;int x[30],y[30];class Coordinate{public: double xCoordinate; double yCoordinat...
阅读全文
摘要:用dp[i]表示第i种的情况,第i个上放一个木人,共有dp[i-3]+1种情况。不放木人共有dp[i-1]种情况。所以dp[i]=dp[i-1]+1+dp[i-3]。#include#include#include#includeusing namespace std;__int64...
阅读全文
摘要:#include#include#include#include#includeusing namespace std;struct node{ int num; int cnt;}a[10000+5];bool cmp(node n1,node n2){ retu...
阅读全文
摘要:#include#include#include#includeusing namespace std;int dp[100000+5],N;void zeroonepack(int cost,int weight){ for(int i=N;i>=cost;i--) ...
阅读全文
摘要:#include#include#includeusing namespace std;int main(){ int i,len,a,b,c; char s[100]; while(~scanf("%s",s)) { a=b=c=0; ...
阅读全文
摘要:#include#include#includeusing namespace std;int main(){ int n,m,k,ans; while(~scanf("%d%d",&n,&k)) { ans=0; m=0; ...
阅读全文
摘要:#includeint main(){ double c,a; int i; while(~scanf("%lf",&c)) { if(c==0) break; a=0.0; i=1; while(a<c...
阅读全文
摘要:#include#include#includeusing namespace std;int a[1000000+5];int main(){ int n,i,t,ans; while(~scanf("%d",&n)) { memset(a,0,si...
阅读全文
摘要:#include#include#includeusing namespace std;int main(){ int n,m,k,ans; while(~scanf("%d%d",&n,&k)) { ans=0; m=0; ...
阅读全文
摘要:#include#include#include#includeusing namespace std;struct node{ int num; int t; int now; friend bool operator q;int main(){ in...
阅读全文
摘要:#include#include#includeusing namespace std;const int M=1000;int N,m;struct Matrix{ int mp[25][25]; Matrix() { memset(mp,0,siz...
阅读全文
摘要:#includeusing namespace std;typedef long long LL;const int n=10;int kt,m;struct Matrix{ int mp[n][n];};Matrix mul(Matrix a,Matrix b){ i...
阅读全文
摘要:#include#include#include#includeusing namespace std;const int N=100000+5;struct node{ int st,ed,id; friend bool operator q;bool cmp(node...
阅读全文
摘要:#include#include#include#include#include#include#include#includeusing namespace std;#define ll long long intconst int m=9973;ll a[20][20],k;in...
阅读全文
摘要:#include#include#includeusing namespace std;const int m=1000000007;int pow_mod(__int64 a,__int64 n,int m){ if(n==0) return 1; __int64 x=...
阅读全文
摘要:#include#include#includeusing namespace std;const int m=10000;int fib(int n){ int t[2][2]={1,1,1,0}; int p[2][2]; int a[2][2]={1,0,0,...
阅读全文
摘要:1、欧几里德算法int gcd(int a, int b){ return b == 0 ? a : gcd(b , a%b);}int lcm(int a, int b){ return a/gcd(a,b)*b;//防止溢出}2、Eratosthenes筛法int m...
阅读全文
摘要:#include#include#includeusing namespace std;int pow_mod(__int64 a,__int64 n,int m){ if(n==0) return 1; __int64 x=pow_mod(a,n/2,m); __...
阅读全文
摘要:import java.math.BigDecimal;import java.math.BigInteger;import java.util.Scanner;public class Main { public static void main(String[] args)...
阅读全文
摘要:import java.math.BigDecimal;import java.math.BigInteger;import java.util.Scanner;public class Main { /** * @param args */ public...
阅读全文
摘要:import java.math.BigDecimal;import java.math.BigInteger;import java.util.Scanner;public class Main { /** * @param args */ public...
阅读全文
摘要:hdu1000import java.util.Scanner;public class Main { /** * @param args */ public static void main(String[] args) { // TODO...
阅读全文
摘要:题意是几笔可以画完所给的图,其中没有与其他点连同的不需要考虑。先用并查集将点分成不同的集合,由于题目是问几笔,所以不用考虑连通性。只需要考虑不同集合根节点中记录的这个集合奇度节点的个数,如果是零,最后答案加一,反之加上除二后的结果。#include#include#includeus...
阅读全文
摘要:#include#include#includeusing namespace std;struct{ int top; int node[200];}s;int g[200][200],c[200],n,m;void dfs(int x){ int i; s...
阅读全文
摘要:#include#include#include#include#include#includeusing namespace std;int read(char *s){ int len; for(len=0;(s[len]=getchar())!='\n'&&s[le...
阅读全文
摘要:我的新博客:http://xiang578.top/#include#include#include#include#include#includeusing namespace std;int mp[50][50],in[50],out[50],vis[50],use[50];st...
阅读全文
摘要:#include#include#include#includeusing namespace std;int n,m,g[1024][1024],vis[1024][1024],use[1024],in[1024];bool f;void dfs(int u){ if(use...
阅读全文
摘要:#include#include#include#includeusing namespace std;int n,dp[6000+5][2],bin[6000+5];vectord[6000+5];void tree_dp(int x){ int i,len=d[x].siz...
阅读全文
摘要:输入中有等效的点,所以要将他们全部删除。所以只有在所以数据全部输入完成后才可以建边的关系。 输出有三种可能,分别对应下面三种情况。 - 成功 - 成环,就是最后点的个数小于输入的点的个数,这个是信息冲突的原因 - 同时有两个点入度为零进入队列,信息不完全#include "stdio...
阅读全文
摘要:我的新博客 http://xiang578.top/图论【差分约束(spfa版)】总结混合图的欧拉回路一般求解方法数论十个利用矩阵乘法解决的经典题目矩阵经典算法错排详解卡塔兰数-维基百科与Catalan数——卡特兰数:后面一个关于卡特兰数的证明详细计算几何计算几何算法概览[Poj 1...
阅读全文
摘要:注意初始化#include "stdio.h"#include "string.h"#include "algorithm"#include "queue"#include "vector"using namespace std;const int inf=0x7FFFFFFF;st...
阅读全文