BZOJ 4824 [Cqoi2017]老C的键盘 ——树形DP
每一个限制条件相当于一条有向边,
忽略边的方向,就成了一道裸的树形DP题
同BZOJ3167
唯一的区别就是这个$O(n^3)$能过
#include <map>
#include <cmath>
#include <queue>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
#define F(i,j,k) for (ll i=j;i<=k;++i)
#define D(i,j,k) for (ll i=j;i>=k;--i)
#define ll long long
#define mp make_pair
#define maxn 205
const ll md=1000000007; ll h[maxn],to[maxn],ne[maxn],en=0,n;
ll lim[maxn],siz[maxn],tmp[maxn];
ll dp[maxn][maxn],c[maxn][maxn];
char s[maxn]; void add(ll a,ll b)
{to[en]=b;ne[en]=h[a];h[a]=en++;} ll C(ll n,ll m)
{
if (n<0||m<0)
{
return 0;
}
return c[n][m];
} void Tree_DP(ll o)
{
dp[o][1]=1;siz[o]=1;
for (ll i=h[o];i>=0;i=ne[i])
{
Tree_DP(to[i]);
F(j,0,siz[o]+siz[to[i]]+2) tmp[j]=0;
F(j,1,siz[o]) F(k,1,siz[to[i]]) F(_j,j,siz[to[i]]+siz[o])
if (dp[o][j]&&dp[to[i]][k])
{
if (lim[to[i]]==1)
{
if (siz[o]+siz[to[i]]-_j>=siz[to[i]]-k+1+siz[o]-j&&_j>=j)
{
tmp[_j]+=(((ll)dp[o][j]*dp[to[i]][k])%md*C(_j-1,j-1))%md*C(siz[o]+siz[to[i]]-_j,siz[o]-j)%md;
tmp[_j]%=md;
}
}
else
{
if (_j>=j+k&&siz[o]+siz[to[i]]-_j>=siz[o]-j)
{
tmp[_j]+=(((ll)dp[o][j]*dp[to[i]][k])%md*C(_j-1,j-1))%md*C(siz[o]+siz[to[i]]-_j,siz[o]-j)%md;
tmp[_j]%=md;
}
}
}
siz[o]+=siz[to[i]];
F(j,0,siz[o]) dp[o][j]=tmp[j];
}
} void Finout()
{
freopen("in.txt","r",stdin);
freopen("wa.txt","w",stdout);
} int main()
{
memset(h,-1,sizeof h);
scanf("%lld",&n);
scanf("%s",s+2);
c[1][0]=1;c[1][1]=1;c[0][0]=1;
F(i,2,maxn-1)
{
c[i][0]=1;
F(j,1,maxn-1) c[i][j]=(c[i-1][j]+c[i-1][j-1])%md;
}
F(i,2,n)
{
add(i/2,i);
switch(s[i])
{
case '<': lim[i]=1; break;
case '>': lim[i]=-1;break;
}
}
Tree_DP(1);
ll ans=0;
F(i,0,n) (ans+=dp[1][i])%=md;
printf("%lld\n",ans);
}
BZOJ 4824 [Cqoi2017]老C的键盘 ——树形DP的更多相关文章
- [BZOJ4824][CQOI2017]老C的键盘(树形DP)
4824: [Cqoi2017]老C的键盘 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 193 Solved: 149[Submit][Statu ...
- [BZOJ4824][Cqoi2017]老C的键盘 树形dp+组合数
4824: [Cqoi2017]老C的键盘 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 218 Solved: 171[Submit][Statu ...
- bzoj 4824: [Cqoi2017]老C的键盘
Description 老 C 是个程序员. 作为一个优秀的程序员,老 C 拥有一个别具一格的键盘,据说这样可以大幅提升写程序的速度,还能让写出来的程序 在某种神奇力量的驱使之下跑得非常快.小 ...
- bzoj 4824: [Cqoi2017]老C的键盘【树形dp】
参考:https://www.cnblogs.com/FallDream/p/bzoj4824.html 画一画就会发现关系形成了一棵二叉树(其实看到n-1就能想到 然后dp,设f[i][j]为点i在 ...
- BZOJ 1813 [Cqoi2017]小Q的棋盘 ——树形DP
唔,貌似以前做过这样差不多的题目. 用$f(i,0/1)$表示从某一点出发,只能走子树的情况下回到根.不回到根的最多经过不同的点数. 然后就可以DP辣 #include <map> #in ...
- [CQOI2017]老C的键盘
[CQOI2017]老C的键盘 题目描述 额,网上题解好像都是用的一大堆组合数,然而我懒得推公式. 设\(f[i][j]\)表示以\(i\)为根,且\(i\)的权值为\(j\)的方案数. 转移: \[ ...
- 【BZOJ3167/4824】[Heoi2013]Sao/[Cqoi2017]老C的键盘
[BZOJ3167][Heoi2013]Sao Description WelcometoSAO(StrangeandAbnormalOnline).这是一个VRMMORPG,含有n个关卡.但是,挑战 ...
- [bzoj4824][洛谷P3757][Cqoi2017]老C的键盘
Description 老 C 是个程序员. 作为一个优秀的程序员,老 C 拥有一个别具一格的键盘,据说这样可以大幅提升写程序的速度,还能让写出来的程序 在某种神奇力量的驱使之下跑得非常快.小 Q 也 ...
- bzoj 4822: [Cqoi2017]老C的任务
4822: [Cqoi2017]老C的任务 练手速... #include <iostream> #include <cstdio> #include <cstring& ...
随机推荐
- POJ 3133 Manhattan Wiring (插头DP,轮廓线,经典)
题意:给一个n*m的矩阵,每个格子中有1个数,可能是0或2或3,出现2的格子数为2个,出现3的格子数为2个,要求将两个2相连,两个3相连,求不交叉的最短路(起终点只算0.5长,其他算1). 思路: 这 ...
- (七)mybatis之创建SqlSession
前文提到了SqlSessionFactory接口,可以用来生产SqlSession.而SqlSession其实也是一个接口类,也就是起到一个门面的角色.那么谁是真正干活的呢?------Executo ...
- SpringMVC、Spring和Struts的区别
http://www.cnblogs.com/hhx626/p/6010293.html 导读:近期做到的项目中,用到的框架师SSM(SpringMVC+Spring+Mybatis),那么在这之前用 ...
- shell 复合条件测试 if [ $1 == "1" -o $1 == "0" ] ------==和-eq怎么用
想要实现: ”,或者$1等于“” ];then 输出一些东西 ”,或者$1等于“” ];then 输出一些东西 fi 这里比较难操作的是等于和或者: 等于: -eq 或者 == 或者: -o 见: ...
- caffe实现多label输入(修改源码版)
http://blog.csdn.net/u013010889/article/details/54614067 这个人的博客本身也相当好
- CPP-网络/通信:SOCKET
客户端实现代码: //引入头文件 #include <WinSock2.h> //客户端创建Socket////////////////////////////////////////// ...
- PHP 腾讯云cos使用之我见
因为某些人的原因,本文从新改名发布一遍. 原名称:tp5 -- 腾讯云cos简单使用 原文链接:https://www.cnblogs.com/YFYQ/p/10840050.html 因项目需要,本 ...
- javaEE(17)_邮件原理与JavaMail开发
一.Java邮件开发介绍 为什么要学习javamail开发 •现在很多WEB应用在开发时都需要集成邮件发送功能,例如: •给新注册的用户自动发送一封包含其注册信息的欢迎E-Mail. •给过生日的注册 ...
- iOS之WKWebView
Xcode8发布以后,编译器开始不支持IOS7,所以很多应用在适配IOS10之后都不在适配IOS7了,其中包括了很多大公司,网易新闻,滴滴出行等.因此,我们公司的应用也打算淘汰IOS7. 支持到IOS ...
- 洛谷 P2872 道路建设
https://www.luogu.org/problemnew/show/P2872 算是比较裸的并查集了,已经有路的两个点之间建一条代价为0的边,路径长度计算两点之间的距离,做并查集就好咯. #i ...