07 2015 档案
摘要:SPFA水题。记录一下到这个结点的最大承载能力。因为一个小错误而WA了一晚上,悲催,T_T......#include#include#include#include#include#includeusing namespace std;const int maxn=1000+10;struct E...
阅读全文
摘要:/*http://acm.hust.edu.cn/vjudge/contest/view.action?cid=71805#problem/C*/性质:【1】二分图最大点独立数=顶点数-二分图的最大匹配【2】二分图最小点覆盖数=二分图的最大匹配这个题目就是求最大点独立集,根据性质【1】可以求解。对于...
阅读全文
摘要:区间DP#include#include#include#includeusing namespace std;char s[1000];int dp[105][105];int main(){ int i,j,k; while(~scanf(" %s",s)) { ...
阅读全文
摘要:大致思路就是运用SPFA,不断地求解最小费用的一条从原点到汇点的路径,然后增广一次;直到不能增广了,那么就得到了答案。#include#include#include#include#include#includeusing namespace std;//设置节点数量const int maxn=...
阅读全文
摘要:没有源点和汇点、流量有上下界的网络可行流问题。今天看了一下午的有上下界的网络可行流问题,在似懂非懂、非常朦胧的状态下过了这个题...激动了半天。求解的方法:http://www.cnblogs.com/zufezzt/p/4681035.htmlAC代码:#include#include#inclu...
阅读全文
摘要:之前涉及到的网络流问题,每条弧的容量下限都是0,上限都是C。而在流量有上下界的网络流问题中,每条弧有一个流量下界low,还有一个上界up。对于这样的问题,一般都三类:1.没有源点和汇点的有上下界的可行流问题2.有源点和汇点的有上下界的网络最大流问题3.有源点和汇点的有上下界的网络最小流问题第一类问题...
阅读全文
摘要:由网络最大流最小割定理可以很容易的知道,最小割在数值上是等于最大流的。【1】如果题目要求的是最小割的数值,那么只要跑一遍网络最大流即可得出答案。【2】如果要求的是S集合和T集合,那么先跑一遍网络最大流,然后在跑完网络最大流的残留网络中,从源点Vs开始进行DFS,能遍历到的节点都属于S集合,最终,剩下...
阅读全文
摘要:我的方法是将题目中给的那个串(anniversary)拆分成三段。枚举所有情况,也就100多种的样子。每一种情况去判断在输入的串中能不能找到这三个串,并且不相交。o(︶︿︶)o 唉,思路很快就有了,代码写得丑,找错找了半天,最终在场外Submit的1A了。写题时候脑瘫,还搞了个KMP上去。。。其实长...
阅读全文
摘要:暴力搜索。注意题目说每个字母对应的数字不同,这句话表明最多只有10个字母,所以暴力DFS绝对不会TLE。#include#include#include#includeusing namespace std;char s[1000],t[1000];char cun[1000];int C[1000...
阅读全文
摘要:水题,感觉和田忌赛马差不多#include#include#include#includeusing namespace std;struct P1{ int Num; int Hua;} Play1[30];struct P2{ int Num; int Hua;} Pla...
阅读全文
摘要:枚举起点和公司,每次用DFS跑一遍图,预处理出所有的答案。询问的时候很快就能得到答案。#include#include#include#include#includeusing namespace std;int jz[300][300][30];int ans[300][300][30];int ...
阅读全文
摘要:二分答案+验证(这题精度卡的比较死)#include#include#define eps 1e-7const int ff = 11111;double a[ff];double pi = acos(-1.0);int main(){ int sb; scanf("%d", &sb);...
阅读全文
摘要:混合图的欧拉回路判定方法:1.首先判断基图是否连通,不连通的话表示不可能,否则进入下一步。2.对于无向边,随便确定一个方向3.确定好了之后,整张图就变成了有向图,计算每个节点的入度与出度4.如果有一个节点的入度—出度是奇数,那么表示不可能,否则进入下一步5.建立网络,新增一个原点s,和汇点t,然后建...
阅读全文
摘要:网络最大流#include#include#include#include#include#include#includeusing namespace std;const int maxn=2000+10;const int INF=0x7FFFFFFF;struct Edge{ int f...
阅读全文
摘要:【过程】 在电商学霸&&代码女神XuFei的影响下,接触到了关于Android客户端的一些开发,第一次在Android平台搞出了一个App,真的是激动不已,所以必须开个留念贴记录一下。 本来准备一晚上搞定计算器的,但是当我看到那些天花乱坠的语法,简直蛋碎!最终吃起了烧烤。。。。下起了飞行棋。。。。五
阅读全文
摘要:矩阵快速幂#include#include#include#include#includeusing namespace std;const long long MOD=1000000000+7;long long n,k,RR,CC;mapans;struct Matrix{ long lo...
阅读全文
摘要:核心代码如下:for(i=0; i<=lens; i++){ for(j=0; j<=lent; j++) { if(i==0||j==0) { dp[i][j]=0; continue; } if(s[i]==t[j]) dp[i][j]=...
阅读全文
摘要:最长公共子序列#include#include#include#includeusing namespace std;const int maxn=1111;int dp[maxn][maxn];char s[maxn],t[maxn];int lens,lent;int main(){ in...
阅读全文
摘要:矩阵快速幂。先构造邻接矩阵,这个矩阵的K次方,就表示从从i到j有几种走法。#include#include#include#includeusing namespace std;int n,m;const int maxn=20;const int MOD=1000;struct Matrix{ ...
阅读全文
摘要:矩阵快速幂#include#include#include#includeusing namespace std;long long a,b,n,m;int R,C;struct Matrix{ long long A[5][5]; Matrix operator*(Matrix b);...
阅读全文
摘要:矩阵快速幂#include#include#include#includeusing namespace std;struct Matrix{ long long A[10][10]; Matrix operator*(Matrix b);};const long long MOD=10...
阅读全文
摘要:计算几何+贪心#include#include#include#includeusing namespace std;struct City{ int id; double J1;//距离第一条 double J2;//距离第二条 double X,Y; double ...
阅读全文
摘要:快速幂+找规律#include#include#include#include#includeusing namespace std;mapC;const int MOD=2008;int n;int fast_power(int a,int b){ int c=1; while(b!=...
阅读全文
摘要:#include#include#include#includeusing namespace std;int n,m;int flag1,flag2;void dfs(int a,int b,int x){ if(b==1) { flag2=1; if(a=...
阅读全文
摘要:#include#include#include#includeusing namespace std;const int R=20;const int C=305;int A[R][C];int n,m;int ff[R][R];int flag;int U[R];int cnt;int sum[...
阅读全文
摘要:#include#include#include#includeusing namespace std;int A[10][10];int row[10][15];int col[10][15];int num[10][15];int tot;struct abc{ int x,y; i...
阅读全文
摘要:#include#include#include#includeusing namespace std;int a[1005];int b[1005];int flag[1005];int main(){ int i,j,n; while(~scanf("%d",&n)) { ...
阅读全文
摘要:#includechar s1[100],s2[100];int num[150];int jg[150];int bz;int main(){ int n,i; while(~scanf("%d",&n)) { int tot=0; if(n==0) ...
阅读全文
摘要:#include int main(){ while(1) { int i, n; int maxday, maxvalue = -1; scanf("%d", &n); if (n == 0) break; for ...
阅读全文
摘要:矩阵快速幂首先我是用暴力DFS算了一下前20项、找到规律F(n)=F(n-1)+F(n-3)+F(n-4)。接下来运用矩阵快速幂。#include#include#include#includeusing namespace std;int n;int m;int R,C;struct Matrix...
阅读全文
摘要:快速幂#include#include#include#include#includeusing namespace std;long long n,MOD;long long cal(long long a,long long b,long long mod){ long long c=1;...
阅读全文
摘要:矩阵快速幂#include#include#include#includeusing namespace std;const int maxn=15;const int MOD=9973;int n,k;struct Matrix{ int matrix[maxn][maxn]; Mat...
阅读全文
摘要:快速幂。只保存末位。快速幂的第一个题。#include#include#include#includeusing namespace std;int main(){ int T; scanf("%d",&T); while(T--) { int n; ...
阅读全文
摘要:二维完全背包,理解似乎还不够全面,过几天回来再看看这题。#include#include#include#includeusing namespace std;const int maxn=30;long long x[maxn],y[maxn],v[maxn];long long dp[1111]...
阅读全文
摘要:简单的钱币兑换问题,就是钱的种类多了一点,完全背包。#include#includeint main (){ int i,j,dp[125]; memset(dp,0,sizeof(dp)); dp[0]=1; for(i=1; i<=120; i++) for...
阅读全文
摘要:完全背包#include#include#include#includeusing namespace std;int A[20];int dp[305];int main(){ int i,j; for(i=1;i<=17;i++) A[i]=i*i; dp[0]=1; f...
阅读全文
摘要:(i+1)*(j+1)=n+1转换成上面这个式子,也就是问n+1的因子有几个#include#include#include#includeusing namespace std;int main(){ int T; scanf("%d",&T); while(T--) { ...
阅读全文
摘要:0-1背包#include#include#include#includeusing namespace std;const int maxn=55;int V[maxn],C[maxn];int dp[maxn*maxn*110];int main(){ int n,i,j,k,summ; ...
阅读全文
摘要:完全背包#include#include#include#includeusing namespace std;const int maxn=500+10;const int INF=0x7FFFFFFF;int P[maxn],W[maxn];int dp[10000+10];int main()...
阅读全文
摘要:二维费用的背包#include#include#include#includeusing namespace std;const int maxn=105;const int INF=0x7FFFFFFF;int value[maxn],cost[maxn];int dp[maxn][maxn];i...
阅读全文
摘要:多重背包#include#include#include#includeusing namespace std;const int maxn=111;int p[maxn],h[maxn],c[maxn];int dp[maxn];int main(){ int T; scanf("%d...
阅读全文
摘要:完全背包#include#include#include#includeusing namespace std;int dp[10010];int main(){ int i; memset(dp,0,sizeof(dp)); dp[0]=1; for(i=0;i=0;i--...
阅读全文
摘要:#include#include#include#includeusing namespace std;const int maxn=32768+10;long long DP[maxn];int main(){ int n; int i,j; DP[0]=1; for(i=...
阅读全文
摘要:0-1背包#include#include#include#includeusing namespace std;const int maxn=10000+10;const int INF=0x7FFFFFFF;int n,m;int a[maxn];double b[maxn];double DP...
阅读全文
摘要:0-1背包#include#include#include#includeusing namespace std;#define maxn 105double p[maxn];int m[maxn];double DP[maxn*maxn];int main(){ int T; scan...
阅读全文
摘要:简单0-1背包#include#include#include#includeusing namespace std;int N,V;const int maxn=1000+10;int dp[maxn],cost[maxn],value[maxn];int main(){ int i,j,T...
阅读全文
摘要:简单0-1背包#include#include#include#includeusing namespace std;const int maxn=1000+10;int A[maxn],dp[50000+10];int main(){ int i,j,n,m; while(~scanf...
阅读全文
摘要:#include#include#include#include#include#include#includeusing namespace std;const int maxn = 30000 + 10;const int INF = 0x7FFFFFFF;struct Edge{ int...
阅读全文
摘要:简单题。先建树,我用邻接表来存了。然后对于每个叶子结点DFS一下,DFS深度超过了K就return,找到了叶子节点就记录下来,最后排个序,然后输出答案。由于结点编号比较奇葩,所以用两个map来转换一下。这个代码写的很丑,大半夜写的,迷迷糊糊。#include#include#include#incl...
阅读全文
摘要:深搜。不过有一个强大的剪枝。就是假设之后的全部用上都不能达到H,则return。if (A[n]-A[x-1]+summ#include#includeusing namespace std;const int maxn = 50;long long a[maxn], A[maxn];int fl...
阅读全文
摘要:简单题。首先判断两个圆是否都与坐标轴相交,有一个不相交直接输出NO剩下的情况都是相交的。让算一算四个交点。最后只有四种情况了。#include#include#include#includeusing namespace std;int main(){ double Vx, x, y, T1,...
阅读全文
摘要:完全背包#include#include#include#includeusing namespace std;const int maxn = 10000 + 10;int dp[maxn];const int INF = 0x7FFFFFFF;int main(){ int A, B, C...
阅读全文
摘要:水题#includeint main(){ int x1, x2, x3, u, h; int n; while (~scanf("%d", &n)) { while (n--) { char s[5]; ...
阅读全文
摘要:最短增广路算法(SAP):1.初始化容量网络和网络流;2.构造残留网络和层次网络,如果汇点不在层次网络中,则算法结束;3.在层次网络中不断用BFS增广,直到层次网络中没有增广路为止;每次增广完毕,在层次网络中要去掉因改进流量而导致饱和的弧;4.转到步骤(2)。连续最短增广路算法(Dinic):1.初...
阅读全文
摘要:学喜欢学的东西才会感觉不那么累;学着不以考试为目的的东西,不知道以后是否会有用,但愿竞赛陪我度过四年的时光。7.13二叉树、7.14递归,虽然学的不够全面与透彻,但还是希望好好地给一起集训的同学们讲解。把学到的知识重新讲一遍,应该会更加深刻的理解它吧。
阅读全文