上一页 1 ··· 18 19 20 21 22
摘要: #include<cstdio>#include<iostream>#include<cstring>#include<algorithm>#define N 310#define M 50010#define inf 1<<30using namespace std;int dp[21][21][21];int main(){ int a,b,c,i,j; memset(dp,0,sizeof(dp)); for(i=0;i<=20;i++) for(j=0;j<=20;j++) { dp[0... 阅读全文
posted @ 2013-06-18 18:07 fangguo 阅读(164) 评论(0) 推荐(0) 编辑
摘要: 递归版sap:#include#include#include#include#define N 310#define M 50010#define inf 1=n)return flow-lv; if(lv==0) break; } if(d[v]#include#include#include#include#define Maxn 6010#define Maxm 200000#define LL __int64#define Abs(a) (a)>0?(a):(-a)using namespace std;str... 阅读全文
posted @ 2013-06-18 17:02 fangguo 阅读(224) 评论(0) 推荐(0) 编辑
摘要: #include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>#define N 10010using namespace std;int dep[N],farther[N],vi[N],sec[N],Md,index[N],e,set[N];struct Edge{ int to,next;}edge[N];void addedge(int from,int to){ edge[e].to=to; edge[e].next=i 阅读全文
posted @ 2013-06-17 20:17 fangguo 阅读(173) 评论(0) 推荐(0) 编辑
摘要: 此题的题意很明确,就是求最长公共子序列;#include<iostream>#include<algorithm>#include<cstdio>#include<cstring>#include<queue>using namespace std;int dp[2010][2010];int hash[255];int main(){ char str[2010],ter[2010],fir[2010]; int n,i,j; while(scanf("%d",&n)!=EOF) { memset(has 阅读全文
posted @ 2013-06-17 18:22 fangguo 阅读(220) 评论(0) 推荐(0) 编辑
摘要: 我们设置一个dp[j][r][x]表示花j元,r积分,免费拿x次所得的最大价值。那么dp[j][r][x]=Max(dp[j-a[i]][r][x],dp[j][r-b[i]][x],dp[j][r][x-1]);这里最坑爹的是尽然有0元物品与0积分物品,害的我WA了好几次。所有要用一个temp来记录最大值,最后再赋值给dp[j][r][x];#include<iostream>#include<cstdio>#include<cmath>#include<cstring>using namespace std;#define Max(a,b) 阅读全文
posted @ 2013-05-27 23:54 fangguo 阅读(164) 评论(0) 推荐(0) 编辑
摘要: 对于每个同学,不满足的情况为他的一个朋友,他自己,他的一个非朋友。在朋友关系中,会被计算两边,故结果除2。#include<iostream>#include<cstdio>#include<cmath>int b[1010];int main(){ int n,i,j,ans,t; scanf("%d",&t); while(t--) { scanf("%d",&n); for(i=1;i<=n;i++) scanf("%d",&b[i]); ans=0; for(i 阅读全文
posted @ 2013-05-27 22:27 fangguo 阅读(143) 评论(0) 推荐(0) 编辑
摘要: 题意:有N个节点,组成一棵树,1号节点是根节点。每个节点都有一个权值。现在有q个查询,每次查询根节点是U的子树中有多少个不同的权值恰好出现K次。思路:第一眼让人感觉是图论,但仔细分析发现单纯的搜索肯定会超时。这题分为另个部分:1.以u为根节点的子树有多少种不同的权值。2.权值为k的有多少。对于线性列表,查询一个区间有多少个不同的子节点,我们用一个pre[v]记录权值v上次出现的位置。那么当第i个数的权值为v时,区间pre[v]+1-->i这个区间就会多一个不同的数,那么可以用update(pre[v]+1,1)来更新。但是i之后的状态不能改变,故再用一个update(i+1,-1)。这样 阅读全文
posted @ 2013-05-24 12:50 fangguo 阅读(315) 评论(0) 推荐(0) 编辑
摘要: 题意:美国有种防护盾,能抵挡恐怖分子的秘密武器,但每次抵挡后,需要t个单位时间去冷却,期间不能起抵挡作用。思路:我一开始用线段树做,但做到一半就坑爹了~~当修改了线段树的子节点信息时,父节点的左右节点就会产生不一致性,那么也就没法直接修改父节点。其实这题线段树和树状数组都能做。我们现在把问题分为两个部分:1.统计但会节点被攻击的次数;2.统计所有攻击中多少次无效;那么总的攻击次数减去无效的就是被攻击的次数了。关于统计被攻击的次数用线段树和树状数组都很好实现。多少次无效的,我们可以定义一个Atc[i][2]数组,记录第i次攻击的区间左右节点。用数组uint[i][0]表示i次攻击后,上次受攻击的 阅读全文
posted @ 2013-05-23 15:58 fangguo 阅读(201) 评论(0) 推荐(0) 编辑
上一页 1 ··· 18 19 20 21 22