[HNOI2010]CHORUS 合唱队】的更多相关文章

这数据范围明显的区间dp啊...然而据说二维会wa...那就写三维把... #include<cstdio> #include<cstring> #include<cctype> #include<algorithm> using namespace std; #define rep(i,s,t) for(int i=s;i<=t;i++) #define dwn(i,s,t) for(int i=s;i>=t;i--) #define clr(…
简单的dp题..不能更水了.. --------------------------------------------------------------- #include<cstdio> #include<cstring> #include<algorithm> #include<iostream> #define rep(i,n) for(int i=0;i<n;++i) #define clr(x,c) memset(x,c,sizeof(x…
http://www.lydsy.com/JudgeOnline/problem.php?id=1996 f[i][j][0/1] 表示已经排出队形中的[i,j],最后一个插入的人在[i,j]的i或j 枚举顺序一: 先枚举区间长度,再枚举区间左端点 枚举顺序二: 先倒序枚举区间左端点,再枚举区间右端点 初始化: 当长度为2时,转移方程中的j==i+1,i==j-1 令f[i][j]只累加一次,所以f[i][i][0]=1 或者是 f[i][i][1]=1都行 #include<cstdio>…
1996: [Hnoi2010]chorus 合唱队 Time Limit: 4 Sec  Memory Limit: 64 MBSubmit: 2088  Solved: 1371[Submit][Status][Discuss] Description Input Output Sample Input 4 1701 1702 1703 1704 Sample Output 8 HINT Source   [Submit][Status][Discuss] HOME Back 最讨厌统计方案…
[BZOJ1996][Hnoi2010]chorus 合唱队 Description Input Output Sample Input 4 1701 1702 1703 1704 Sample Output 8 HINT 题解:用f[i][j][0/1]表示从i开始往后j个人,最后一个人是i/i+j-1,的方案数.$O(n^2)$DP即可. #include <cstdio> #include <cstring> #include <iostream> using n…
Description Input Output Sample Input 4 1701 1702 1703 1704 Sample Output 8 HINT Source 因为只会在区间的两端进行操作,这很容易让我们想到一种区间dp的模型... dp[i][j]表示区间[i,j]已经匹配上了的方案数,因为我们需要知道上一个填的数是什么所以多加一维, dp[i][j][0]表示最后填的数在区间左边,dp[i][j][1]表示最后填的数在区间右边, 这样我们可以确切的知道上一个填的数.... 那…
合唱队 区间DP f[l][r][0/1]表示生成目标序列中的区间[l,r],最后一个数是a[l]/a[r] 的方案数 边界: f[i][i][0]=1 转移: f[l][r][0]=(a[l]<a[l+1]?f[l+1][r][0]:0)+(a[l]<a[r]?f[l+1][r][1]:0); f[l][r][1]=(a[r]>a[l]?f[l][r-1][0]:0)+(a[r]>a[r-1]?f[l][r-1][1]:0); #include<iostream> #…
为了在即将到来的晚会上有更好的演出效果,作为AAA合唱队负责人的小A需要将合唱队的人根据他们的身高排出一个队形.假定合唱队一共N个人,第i个人的身高为Hi米(1000<=Hi<=2000),并已知任何两个人的身高都不同.假定最终排出的队形是A 个人站成一排,为了简化问题,小A想出了如下排队的方式:他让所有的人先按任意顺序站成一个初始队形,然后从左到右按以下原则依次将每个人插入最终棑排出的队形中: -第一个人直接插入空的当前队形中. -对从第二个人开始的每个人,如果他比前面那个人高(H较大),那…
链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1996 Description Input Output Sample Input 4 1701 1702 1703 1704 Sample Output 8 HINT 题解:还是一个区间动归,可是这道题的问题在于比较难想到怎么去设,我们会发现每次放一个数时我们都会 考虑放在左边还是放在右边,实际上最后数放在左边还是右边的方案数是不同的,所以我们除了枚举区间,还要枚举当前这个数是放在了左边还是…
很容易想到区间DP 然后发现这个区间只和圆序列的最后一个数有关,而原序列的最后一个数只可能是现在区间的头或者尾 令$f[i][j][0/1]$表示在区间$[i, j]$之间,原序列的最后一个数是当前区间的头/尾的总答案数 于是只要讨论$a[i], a[i + 1], a[j - 1], a[j]$之间的关系搞一搞就可以了 /************************************************************** Problem: 1996 User: raus…