- 博客(84)
- 收藏
- 关注
原创 Tyvj 1057 金明的预算方案 树形dp
#include#include#include#includeusing namespace std;const int N =32005;const int M =62;vectorg[M];struct node{ int cost; int val;}s[M];int dp[M][N];void dfs(int rt,int m){ if(m==0){ r
2014-04-11 18:32:59
928
原创 Tyvj 1052 没有上司的舞会 树形dp
#include#include#include#includeusing namespace std;const int N =6005;int val[N];int dp[N][2];vectorg[N];bool flag[N];void dfs(int rt){ if(g[rt].size()==0){ dp[rt][1]=val[rt]; dp[rt][0
2014-04-11 18:32:14
655
原创 Tyvj 1051 选课 树形dp
#include#include#include#includeusing namespace std;const int N =310;int val[N];vectorg[N];int dp[N][N];void dfs(int rt,int m){ if(m==0) { return; } for(int h=0;h<g[rt].size();h++){ i
2014-04-11 18:30:06
1053
原创 hdu 2412 Party at Hali-Bula 树形dp
#include#include#include#include#include#includeusing namespace std;mapma;map::iterator na;const int N =210;char str1[N],str2[N];int cnt;int dp[N][2];bool uniq[N][2];int find(string str)
2014-04-08 23:47:41
566
原创 hdu 1054 Strategic Game 树形dp
#include#include#include#includeusing namespace std;const int N =1505;vectorg[N];bool flag[N];int dp[N][2];void dfs(int root){ if(g[root].size()==0){ dp[root][0]=0; dp[root][1]=1; ret
2014-04-08 22:21:56
485
原创 Vijos P1250最勇敢的机器人 dp 分组背包
#include#include#include#includeusing namespace std;const int N =1010;struct node{ int val; int cost;}s[N];int set[N];int dp[N];vectorg[N];bool flag[N];int temp[N];int find(int x){ int
2014-04-08 00:30:35
611
原创 hdu 3535 AreYouBusy dp
#include#include#include#includeusing namespace std;const int inf =-0x7f7f7f7f;const int N =110;struct node{ int cost; int val;};vectorg[N];int dp[N][N];int flag[N];int main(){ int n,m;
2014-04-07 23:48:34
503
原创 hdu 3033 I love sneakers! dp
#include#include#include#includeusing namespace std;const int N=105;const int M=10005;const int inf=-0x7f7f7f7f;struct node{ int val; int cost;};vectorg[N];int dp[N][M];int main(){
2014-04-07 00:22:25
504
原创 hdu 3496 Watch The Movie dp
#include#include#includeusing namespace std;const int inf=-0x7f7f7f7f;const int N =110;const int M =1010;struct node{ int val; int cost;}s[N];int dp[M][N];int main(){ int t; int n,m,l;
2014-04-05 23:13:58
549
原创 hdu 2844 Coins dp
#include#include#includeusing namespace std;const int N =110;const int M =100005;int m;struct node{ int num; int val;}s[N];int dp[M];void CompletePack(int cost,int val){ for(int i=cost;i
2014-04-05 22:14:03
430
原创 poj 2828 Buy Tickets 线段树 单点更新
#include#include#includeusing namespace std;const int N =200005;int maxn[N<<2];struct node{ int id; int val;}s[N];int a[N];void build(int l,int r,int rt){ if(l==r){ maxn[rt]=1; return;
2014-04-05 18:37:03
515
原创 hdu 2795 Billboard 线段树 单点更新
#include#include#includeusing namespace std;const int N =200005;int maxn[N<<2];int h,w;void build(int l,int r,int rt){ if(l==r){ maxn[rt]=w; return; } int mid=(l+r)>>1; build(l,mid,rt<<
2014-04-04 15:57:34
458
原创 Tyvj 1056 能量项链 dp
#include#include#includeusing namespace std;const int N =210;int a[N];int dp[N][N];int main(){ int n; while(scanf("%d",&n)!=EOF){ for(int i=0;i<n;i++){ scanf("%d",&a[i]); a[i+n]=a[i];
2014-04-03 19:50:40
621
原创 hdu 2665 Kth number 区间第K大值 划分树
#include#include#includeusing namespace std;const int N =100015;int tree[30][N];int a[N];int cnt[30][N];void build(int l,int r,int dep){ if(l==r) return; int mid=(l+r)>>1; int num=
2014-04-02 21:37:06
673
原创 poj 2388 Who's in the Middle 第K大的数 线性时间选择
#include#include#includeusing namespace std;const int N =10005;int a[N];inline void Swap(int &a,int &b){ int temp=a; a=b; b=temp;}int partion(int l,int r){ int temp=a[l]; while(l<r){ w
2014-04-02 18:09:23
713
原创 hdu 2697 WOJ dp
#include#include#includeusing namespace std;const int N =110;int a[N];int dp[N][N];int main(){ int t; int n,m; scanf("%d",&t); while(t--){ scanf("%d%d",&n,&m); for(int i=1;
2014-04-02 00:27:45
643
原创 hdu 1394 Minimum Inversion Number 逆序数 线段树&归并排序
#include#include#includeusing namespace std;#define N 5005int a[N];int sum[N<<2];void build(int l,int r,int rt){ if(l==r){ sum[rt]=0; return; } int mid=(l+r)>>1;
2014-04-01 23:38:43
485
原创 hdu 1754 I Hate It 线段树 单点更新
#include#include#includeusing namespace std;#define N 200001int maxn[N<<2];int x;void build(int l,int r,int rt){ if(l==r){ scanf("%d",&x); maxn[rt]=x; return; } int mid=(l+r)>>1; buil
2014-04-01 09:47:54
457
原创 hdu 1698 Just a Hook 线段树 成段更新
#include#include#includeusing namespace std;const int N =100005;int sum[N<<2];int type[N<<2];void PushUp(int rt){ sum[rt]=sum[rt<<1]+sum[rt<<1|1];}void PushDown(int rt,int l){ if(type[rt]
2014-03-30 01:06:11
528
原创 hdu 1166 敌兵布阵 线段树 单点更新
#include#include#includeusing namespace std;const int N =50005;int sum[N<<2];int a[N];void build(int l,int r,int rt){ if(l==r){ sum[rt]=a[l]; return; } int mid=(l+r)>>1; build(l,mid,rt<
2014-03-29 23:06:27
481
原创 HDU 4504 威威猫系列故事――篮球梦 母函数&DP
#include#include#includeusing namespace std;const int N =125;int dp[N];__int64 a1[N],b1[N];int main(){ int a,b,t; while(scanf("%d%d%d",&a,&b,&t)!=EOF){ t/=15; int temp1=
2014-03-29 17:42:06
751
原创 HDU 4502 吉哥系列故事――临时工计划 dp
#include#include#includeusing namespace std;const int N=1010;struct node{ int st,ed; int val;}s[N];int dp[110];int cmp(node x,node y){ return x.ed<y.ed;}int main(){ int t; int n,m; sca
2014-03-29 16:41:19
561
原创 hdu 4501 小明系列故事――买年货 dp
#include#include#includeusing namespace std;const int N=110;struct node{ int price; int score; int val;}s[N];int dp[N][N][7];int main(){ int n,v1,v2,k; while(scanf("%d%d%d%d",&n,&v1,&v2,&
2014-03-29 16:33:41
641
原创 hdu 4503 湫湫系列故事——植树节
#include#include#includeusing namespace std;const int N =1010;int a[N];int main(){ int t,n; scanf("%d",&t); while(t--){ scanf("%d",&n); for(int i=1;i<=n;i++){ scanf("%d",&a[i]); }
2014-03-29 16:25:41
501
原创 hdu 2473 Junk-Mail Filter 并查集删除
#include#include#include#includeusing namespace std;const int N=1000005;int set[N];int a[N];bool vis[N];int find(int x){ int r=x; while(r!=set[r]){ r=set[r]; } int temp=x; while(x!=r){
2014-03-27 18:47:06
542
原创 hdu 4472 Count dp
#include#include#includeusing namespace std;const int N=1010;const int inf=1e9+7;int dp[N];int main(){ int n; int Case=1; while(scanf("%d",&n)!=EOF){ memset(dp,0,sizeof(dp)); dp[1]=1;
2014-03-25 10:55:58
468
原创 FZU 2156 Climb Stairs dp
#include#include#includeusing namespace std;const int inf = 1000000007;int dp1[10010];int dp2[10010];int dp3[10010];int main(){ int n,x,y,a,b; while(scanf("%d%d%d%d%d",&n,&x,&y,&a,&b)!=EOF){
2014-03-23 21:08:27
581
原创 zoj 2370 Expanding Rods 二分法
#include#includeusing namespace std;#define PI 2*asin(1.0)int main(){ double len,n,c; while(scanf("%lf%lf%lf",&len,&n,&c)!=EOF) { if(len==-1&&n==-1&&c==-1) break; dou
2014-03-16 20:32:58
630
原创 hdu 4800 Josephina and RPG dp
#include#include#includeusing namespace std;#define N 10002#define M 122double rate[M][M];double dp[N][M];int a[N];int main(){ int n,m; while(scanf("%d",&m)!=EOF){ int r=m*(m-1)*(m-2)/6;
2014-03-16 14:31:34
677
原创 hdu 2819 Swap 二分图匹配
#include#include#include#includeusing namespace std;#define N 110vectorg[N];int linker[N];bool vis[N];int a[N];int b[N];bool dfs(int u){ for(int i=0;i<g[u].size();i++){ int v=g[u][i];
2014-03-15 01:02:18
556
原创 hdu 2818 Building Block 并查集 路径压缩
#include#include#includeusing namespace std;#define N 30005int set[N];int num[N];int cnt[N];int find(int x){ if(set[x]==x) return x; int temp=set[x]; set[x]=find(set[x]);//路径压缩,不进行路径压缩果断的超
2014-03-14 20:20:00
519
原创 ZOJ 3725 Painting Storages DP
#include#include#includeusing namespace std;#define inf 1000000007#define N 100005int a[N];int b[N];void getsolve(){ b[0]=1; for(int i=1;i<=N;i++){ b[i]=b[i-1]*2%inf; } return;}int mai
2014-03-12 00:40:53
510
原创 Tyvj 1055 沙子合并 DP
#include#include#includeusing namespace std;#define inf 10000000#define N 310int a[N];int sum[N];int dp[N][N];int main(){ int n; while(scanf("%d",&n)!=EOF){ sum[0]=0; memset(dp,0,sizeof
2014-03-12 00:03:24
709
原创 Tyvj 1045 最大的算式 DP
解法一:#include#include#includeusing namespace std;#define N 110#define inf -10000int a[N];int dp[N][N][N];int main(){ int n,m; while(scanf("%d%d",&n,&m)!=EOF){ memset(dp,0,sizeof(dp)); f
2014-03-10 22:49:01
552
原创 Fzu 2148 Moon Game 判断凸四边形 判断线段相交
#include#include#includeusing namespace std;#define N 35struct Point{ int x,y;}s[N];struct Line{ Point a; Point b;};double CrossProd(Point a,Point b,Point c){ return (b.x-a.x)*(c.y-a.y)
2014-03-05 01:04:28
1090
原创 Uest 1421 Adjacent Bit Counts dp
#include#include#includeusing namespace std;int dp[110][110][2];void getsolve(){ memset(dp,0,sizeof(dp)); dp[1][1][1]=0; dp[1][0][1]=1; dp[1][0][0]=1; dp[1][1][0]=0; for(int i=2;i<=100;i++
2014-02-28 22:26:05
567
原创 Tyvj 1023 奶牛的锻炼 dp
#include#include#includeusing namespace std;#define N 2010int Length[N];int RunState[N][505];int StopState[N][501];int main(){ int n,m; while(scanf("%d%d",&n,&m)!=EOF){ for(int i=1;i<=n;i+
2014-02-22 21:04:29
701
原创 Tyvj 1008 传球游戏 dp
#include#include#includeusing namespace std;#define N 35int dp[N][N];int main(){ int n,m; while(scanf("%d%d",&n,&m)!=EOF){ memset(dp,0,sizeof(dp)); dp[0][1]=1; for(int i=1;i<=m;i++){
2014-02-20 19:55:56
1057
原创 Tyvj 1007 排座椅 4次快排 VS 两次快排+维护Topk数组 贪心
#include#include#includeusing namespace std;#define N 1010int Row[N],Column[N];int TopkRow[N],TopkColumn[N];int PosColumn[N],PosRow[N];int main(){ int n,m,k,l,d; while(scanf("%d%d%d%d%d",&m,
2014-02-20 16:32:02
5511
原创 Tyvj 1034 尼克的任务 DP+邻接表
#include#include#includeusing namespace std;#define inf 0x7f7f7f7f#define N 10010struct node{ int v; node *next; };struct vertexNode{ node *head;}g[N];struct type{ int st,c
2014-01-19 22:57:19
788
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人