P2592 [ZJOI2008]生日聚会】的更多相关文章

BZOJ & Luogu 老师说是背包?并没看出来QAQ 设f[i][j][o][p]表示已经选了i个人,j个男生,男生比女生最多多o个,女生比男生最多多p个时的方案数 两种转移: <=n&&o+<=k) (f[i+][j+][o+][max(p-,)]+=f[i][j][o][p])%=mod; -j<=m&&p+<=k) (f[i+][j][max(o-,)][p+]+=f[i][j][o][p])%=mod; 第一种是说:如果男生人数+…
容易发现已经结束掉的一个子串只要合法就对后面没有影响,所以可以令 \(f_{i,j,p,q}\) 表示前 \(i+j\) 个人有 \(i\) 个男孩,\(j\) 个女孩,所有后缀中男孩最多比女孩多 \(p\) 个,女孩最多比男孩多 \(q\) 个的方案数,转移即枚举下一个位置是男孩或者女孩. 时间复杂度 \(O(nmk^2)\)~ code: #include<bits/stdc++.h> using namespace std; #define N 25 #define NN 155 #de…
1037: [ZJOI2008]生日聚会Party Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1583  Solved: 936[Submit][Status][Discuss] Description 今天是hidadz小朋友的生日,她邀请了许多朋友来参加她的生日party. hidadz带着朋友们来到花园中,打算坐成一排玩游戏.为了游戏不至于无聊,就座的方案应满足如下条件:对于任意连续的一段,男孩与女孩的数目之差不超过k.很快,小朋友便找…
dp(i, j, a, b)表示选了i个男生, j个女生, 后缀中男生比女生多a(最多), 女生比男生多b(最多). dp(i+1, j, a+1, max(0, b-1)) += dp(i, j, a, b) dp(i, j+1, max(0, a-1), b+1) += dp(i, j, a, b) 时间复杂度O(NMK^2) -----------------------------------------------------------------------------------…
1037: [ZJOI2008]生日聚会Party Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2249  Solved: 1337[Submit][Status][Discuss] Description 今天是hidadz小朋友的生日,她邀请了许多朋友来参加她的生日party. hidadz带着朋友们来到花园中,打算坐成一排玩游戏.为了游戏不至于无聊,就座的方案应满足如下条件:对于任意连续的一段,男孩与女孩的数目之差不超过k.很快,小朋友便…
[BZOJ1037][ZJOI2008]生日聚会(动态规划) 题面 BZOJ 洛谷 题解 假设前面的都合法,但是在加完当前的最后一个人之后变得不合法了,那么意味着一定有着一个后缀不合法.把男生看成\(1\),女生看成\(-1\),也就是不存在一个后缀和大于\(K\)或者一个后缀和小于\(-K\).而在最后面加进一个男生或者女生显然就是把所有后缀\(+1\)或者\(-1\).那么设\(f[i][j][k][l]\)表示当前考虑到了第\(i\)个位置,放了\(j\)个\(1\),最大的后缀和为\(j…
http://www.lydsy.com/JudgeOnline/problem.php?id=1037 一个区间是否满足 任意连续的一段,男孩与女孩的数目之差不超过k, 取决于男孩与女孩数目之差的最大值是否满足条件 而且若在一个位置 上坐一个男孩, 所有包含这个位置的区间 男孩与女孩数目之差+1,与女孩与男孩数目之差-1 所以我们只需要知道 最大的数目 之差即可 dp[i][j][k][l] 表示前i个位置,坐了j个男孩,男孩与女孩数目之差=k,女孩与男孩数目之差=l 的方案数 k<0 怎么办…
1037: [ZJOI2008]生日聚会Party Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 2800  Solved: 1654 [Submit][Status][Discuss] Description 今天是hidadz小朋友的生日,她邀请了许多朋友来参加她的生日party. hidadz带着朋友们来到花园中,打算 坐成一排玩游戏.为了游戏不至于无聊,就座的方案应满足如下条件:对于任意连续的一段,男孩与女孩的数目之 差不超过k.很快,…
1037: [ZJOI2008]生日聚会Party Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1650  Solved: 971[Submit][Status][Discuss] Description 今天是hidadz小朋友的生日,她邀请了许多朋友来参加她的生日party. hidadz带着朋友们来到花园中,打算坐成一排玩游戏.为了游戏不至于无聊,就座的方案应满足如下条件:对于任意连续的一段,男孩与女孩的数目之差不超过k.很快,小朋友便找…
Description 今天是hidadz小朋友的生日,她邀请了许多朋友来参加她的生日party. hidadz带着朋友们来到花园中,打算坐成一排玩游戏.为了游戏不至于无聊,就座的方案应满足如下条件:对于任意连续的一段,男孩与女孩的数目之差不超过k.很快,小朋友便找到了一种方案坐了下来开始游戏.hidadz的好朋友Susie发现,这样的就座方案其实是很多的,所以大家很快就找到了一种,那么到底有多少种呢?热爱数学的hidadz和她的朋友们开始思考这个问题…… 假设参加party的人中共有n个男孩与…
题目描述 今天是hidadz小朋友的生日,她邀请了许多朋友来参加她的生日party. hidadz带着朋友们来到花园中,打算坐成一排玩游戏.为了游戏不至于无聊,就座的方案应满足如下条件: 对于任意连续的一段,男孩与女孩的数目之差不超过k. 很快,小朋友便找到了一种方案坐了下来开始游戏.hidadz的好朋友Susie发现,这样的就座方案其实是很多的,所以大家很快就找到了一种,那么到底有多少种呢?热爱数学的hidadz和她的朋友们开始思考这个问题…… 假设参加party的人中共有n个男孩与m个女孩,…
http://www.lydsy.com/JudgeOnline/problem.php?id=1037 看来自己越来越弱了... 这些计数题设计的状态都很巧妙,,自己智商太低QAQ 和矩阵dp做的那题差不多,都是枚举当前点的情况然后开了一些维来维护从当前点向前延伸的一些状态. 设d[i,j,x,y]表示前i个男的前j个女的,x表示从当前点向前延伸得到的最大的男减女的差,y表示从当前点向前延伸得到的最大的女减男的差. 则d[i+1,j,x+1,max(y-1,0)]+=d[i,j,x,y],d[…
Description 今天是hidadz小朋友的生日,她邀请了许多朋友来参加她的生日party.hidadz带着朋友们来到花园中,打算坐成一排玩游戏. 为了游戏不至于无聊,就座的方案应满足如下条件:对于任意连续的一段,男孩与女孩的数目之差不超过k. 很快,小朋友便找到了一种方案坐了下来开始游戏.hidadz的好朋友Susie发现,这样的就座方案其实是很多的,所以大家很快就找到了一种,那么到底有多少种呢? 热爱数学的hidadz和她的朋友们开始思考这个问题……假设参加party的人中共有n个男孩…
题目描述 今天是hidadz小朋友的生日,她邀请了许多朋友来参加她的生日party. hidadz带着朋友们来到花园中,打算坐成一排玩游戏.为了游戏不至于无聊,就座的方案应满足如下条件: 对于任意连续的一段,男孩与女孩的数目之差不超过k. 很快,小朋友便找到了一种方案坐了下来开始游戏.hidadz的好朋友Susie发现,这样的就座方案其实是很多的,所以大家很快就找到了一种,那么到底有多少种呢?热爱数学的hidadz和她的朋友们开始思考这个问题…… 假设参加party的人中共有n个男孩与m个女孩,…
Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 3121  Solved: 1858[Submit][Status][Discuss] Description 今天是hidadz小朋友的生日,她邀请了许多朋友来参加她的生日party. hidadz带着朋友们来到花园中,打算坐成一排玩游戏.为了游戏不至于无聊,就座的方案应满足如下条件:对于任意连续的一段,男孩与女孩的数目之差不超过k.很快,小朋友便找到了一种方案坐了下来开始游戏.hidadz的好朋友…
Description 今天是hidadz小朋友的生日,她邀请了许多朋友来参加她的生日party. hidadz带着朋友们来到花园中,打算坐成一排玩游戏.为了游戏不至于无聊,就座的方案应满足如下条件:对于任意连续的一段,男孩与女孩的数目之差不超过k.很快,小朋友便找到了一种方案坐了下来开始游戏.hidadz的好朋友Susie发现,这样的就座方案其实是很多的,所以大家很快就找到了一种,那么到底有多少种呢?热爱数学的hidadz和她的朋友们开始思考这个问题…… 假设参加party的人中共有n个男孩与…
Time Limit: 10 Sec Memory Limit: 162 MB Submit: 3007 Solved: 1795 [Submit][Status][Discuss] Description 今天是hidadz小朋友的生日,她邀请了许多朋友来参加她的生日party. hidadz带着朋友们来到花园中,打算 坐成一排玩游戏.为了游戏不至于无聊,就座的方案应满足如下条件:对于任意连续的一段,男孩与女孩的数目之 差不超过k.很快,小朋友便找到了一种方案坐了下来开始游戏.hidadz的好…
题目描述 今天是hidadz小朋友的生日,她邀请了许多朋友来参加她的生日party. hidadz带着朋友们来到花园中,打算坐成一排玩游戏.为了游戏不至于无聊,就座的方案应满足如下条件: 对于任意连续的一段,男孩与女孩的数目之差不超过k. 很快,小朋友便找到了一种方案坐了下来开始游戏.hidadz的好朋友Susie发现,这样的就座方案其实是很多的,所以大家很快就找到了一种,那么到底有多少种呢?热爱数学的hidadz和她的朋友们开始思考这个问题-- 假设参加party的人中共有n个男孩与m个女孩,…
http://www.lydsy.com/JudgeOnline/problem.php?id=1037 (题目链接) 题意 有n个boy和m个girl排成一排,求使得任意一段的boy个数girl个数的差不超过k的方案数. Solution dp. 对于一段确定的人,设为A,那么只有A的后缀中男孩与女孩个数之差和女孩与男孩个数之差的最大值才会影响此次决策.如此便可以定义状态f[i][j][k][l]表示一段人中共有i个男孩j个女孩,且这段人的后缀中男孩与女孩的个数之差最大值为k,女孩与男孩的个数…
DP… /************************************************************** Problem: 1037 User: zhuohan123 Language: C++ Result: Accepted Time:448 ms Memory:1792 kb ****************************************************************/ #include <iostream> #inclu…
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1037 [题意] 一排n男m女,求满足任意连续段男女人数之差不超过k的数目. [思路] DP 设f[a][b][c][d]表示a男b女,男生女生人数最大差为c,女生男生人数最大差为d的方案数,则有转移方程: f[a+1][b][c+1][max(d-1,0)]<-f[a][b][c][d] f[a][b+1][max(c-1,0)][d+1]<-f[a][b][c][d] 太神辣 -…
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1037 [题目大意] 现在有n个男生,m个女生排成一行,要求不存在一个区间男女之差大于k,求方案数. [题解] 因为求方案数,我们考虑到一种类似于背包问题求方案数的dp方法,dp[i][j][u][v]表示男生i个女生j个,男比女多u个,女比男多v个的方案数,在统计数注意越界的情况就好. [代码] #include <cstdio> #include <algorithm>…
对于任意连续区间的限制,可以转化为以i结尾的所有区间的限制.这个转换在昨天的后缀自动机题也有用到,因此将其命名为区后变换.稍加分析后,我们记录以i结尾任意区间最大差即可进行DP转移.这个转换同时也创造了增量的性质,即i++时每个区间相当与在后面添加一个数,方便统计.用极值来约束DP条件也是好的想法.…
http://www.lydsy.com/JudgeOnline/problem.php?id=1037 题意: 思路: 四维数组进行dp,dp[i][j][a][b]表示进行到第i个座位时已经有j个男生了,并且此时男-女的最大值为a,女-男的最大值为b.(这个最大值是由新增的座位后往前计算而得) #include<iostream> #include<algorithm> #include<cstring> #include<cstdio> #includ…
思路:dp, 用dp[ i ][ j ][ u ][ v ] 表示, 有n个人,其中有j个是男生,后缀区间中男生人数减去女生人数的最大值为u, 女生人数减去男生人数 的最大值为v, 然后就能写出状态转移方程. #include<bits/stdc++.h> #define LL long long #define fi first #define se second #define mk make_pair #define pii pair<int,int> #define pii…
dp,但是要顺推容易点 const mm=; var f:..,..,..,..]of longint; n,m,kk,now,sum,i,j,k1,k2:longint; function max(x,y:longint):longint; begin if x<y then exit(y); exit(x); end; begin readln(n,m,kk); now:=; f[now][,,]:=; f[now][,,]:=; do begin fillchar(f[-now],size…
设f[i][j][x][y]为安排了i个男孩j个女孩,后缀最大男孩-女孩数为x,最大女孩-男孩数为y的方案数.转移显然. #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> #include<cstring> #include<algorithm> using namespace std; int read() { ,f=;char c=getch…
Description 题目链接 Solution 这题状态比较难想, \(dp[i][j][g][h]\)表示强i个人有j个男生,在某个区间男生最多比女生多g人,女生最多比男生多h人的方案数,然后DP即可 最后答案是是所有\(dp[n+m][n][i][j](0\leq i,j\leq k)\)加起来 Code #include <cstdio> #include <algorithm> using namespace std; const int mo=12345678; in…
...一开始用了三维的...甚至尝试把它搞成二维的...后来发现根本没法转移呀... 既然dalao说这是初中题,那它就算是一道初中题吧... dp[i][j][k][p]表示当前有i个男生j个女生,男生比女生k个,女生比男生多p个 然后就没有然后了... #include<cstdio> #include<queue> #include<iostream> #include<cstring> #define Ha 12345678 using namesp…
[题目链接]:http://www.lydsy.com/JudgeOnline/problem.php?id=1037 [题意] [题解] /* 设f[i][j][k][l] 表示前i个人中,有j个男生,它的后缀中,男生比女生多k人,女生比男生多l个人的方案数 (这里k和l是后缀的男女差值的的最大值,不比另一方多就置为0; ①新加一个男生 f[i+1][j+1][k+1][max(l-1),0]+=f[i][j][k][l]; ②新加一个女生 f[i+1][j][max(k-1,0)][l+1]…