洛谷 P3757 [CQOI2017]老C的键盘
题面
题解
其实就是一颗二叉树
我们假设左儿子小于根,右儿子大于根
考虑树形\(dp\)
\(f[u][i]\)表示以\(u\)为根的子树,\(u\)为第\(i\)小
那么考虑子树合并
其实就是两个序列的合并
如果是左子树
枚举\(j\)为子树内有多少个数小于其根
那么以\(i\)为根的子树一定至少有\(j\)个
那么我们换一下枚举的东西
改成枚举有多少个数小于\(u\)
剩下的问题就是分配权值的问题了
组合数计算一下(具体看代码注释)
Code
#include<bits/stdc++.h>
using namespace std;
const int N = 110, Mod = 1e9 + 7;
int f[N][N], g[N][N], tmp[N], n, siz[N], C[N][N];
char s[N];
struct node {
int to, nxt;
}G[N];
int last[N], gl;
void add(int x, int y) {
G[++gl] = (node) {y, last[x]};
last[x] = gl;
}
void pls(int &x, int y) {
x += y;
if (x >= Mod) x -= Mod;
}
void dfs(int u) {
int ls = u << 1, rs = u << 1 | 1;
if (ls <= n) add(u, ls);
if (rs <= n) add(u, rs);
g[u][1] = f[u][1] = siz[u] = 1;
for (int z = last[u]; z; z = G[z].nxt) {
int v = G[z].to;
dfs(v);
for (int i = 1; i <= siz[u] + siz[v]; i++) tmp[i] = 0;
for (int i = 1; i <= siz[u]; i++)
for (int j = 0; j < siz[v]; j++)//子树v有j个数小于u(不包括v)
if (s[v] == '>')
pls(tmp[i + j + 1], 1ll * f[u][i] * g[v][j + 1] % Mod
* C[i + j][i - 1] % Mod * C[siz[u] + siz[v] - i - j - 1][siz[u] - i] % Mod);//一共有i+j数小于u,分配给i-1个位置权值 , siz[u] + siz[v] - i - j - 1个数大于u
else
pls(tmp[i + j], 1ll * f[u][i] * (g[v][siz[v]] - g[v][j] + Mod) % Mod
* C[i + j - 1][i - 1] % Mod * C[siz[u] + siz[v] - i - j][siz[u] - i] % Mod);
siz[u] += siz[v];
for (int i = 1; i <= siz[u]; i++) f[u][i] = tmp[i], g[u][i] = (g[u][i - 1] + f[u][i]) % Mod;
}
return ;
}
int main() {
scanf("%d%s", &n, s + 2);
for (int i = 0; i <= n; i++) C[i][i] = C[i][0] = 1;
for (int i = 2; i <= n; i++)
for (int j = 0; j < i; j++)
C[i][j] = (C[i - 1][j - 1] + C[i - 1][j]) % Mod;
dfs(1);
printf("%d\n", g[1][n]);
return 0;
}
洛谷 P3757 [CQOI2017]老C的键盘的更多相关文章
- [bzoj4824][洛谷P3757][Cqoi2017]老C的键盘
Description 老 C 是个程序员. 作为一个优秀的程序员,老 C 拥有一个别具一格的键盘,据说这样可以大幅提升写程序的速度,还能让写出来的程序 在某种神奇力量的驱使之下跑得非常快.小 Q 也 ...
- 洛谷P3757 [CQOI2017]老C的键盘
传送门 首先可以直接把整个序列建成一个完全二叉树的结构,这个应该都看得出来 然后考虑树形dp,以大于为例 设$f[i][j]$表示$i$这个节点在子树中排名第$j$位时的总方案数(因为实际只与相对大小 ...
- Luogu P3757 [CQOI2017]老C的键盘
题目描述 老C的键盘 题解 显然对于每个数 x 都有唯一对应的 \(x/2\) , 然而对于每个数 x 却可以成为 \(x*2\) 和 \(x*2+1\) 的对应数 根据这一特性想到了啥??? 感谢l ...
- [bzoj4823][洛谷P3756][Cqoi2017]老C的方块
Description 老 C 是个程序员. 作为一个懒惰的程序员,老 C 经常在电脑上玩方块游戏消磨时间.游戏被限定在一个由小方格排成的R行C列网格上 ,如果两个小方格有公共的边,就称它们是相邻的, ...
- 洛谷$P3756\ [CQOI2017]$老$C$的方块 网络流
正解:网络流 解题报告: 传送门$QwQ$ 看到不能出现给定的讨厌的图形,简单来说就,特殊边两侧的方格不能同时再连方格. 所以如果出现,就相当于是四种方案?就分别炸四个格子. 然后冷静分析一波之后发现 ...
- [CQOI2017]老C的键盘
[CQOI2017]老C的键盘 题目描述 额,网上题解好像都是用的一大堆组合数,然而我懒得推公式. 设\(f[i][j]\)表示以\(i\)为根,且\(i\)的权值为\(j\)的方案数. 转移: \[ ...
- [BZOJ4824][Cqoi2017]老C的键盘 树形dp+组合数
4824: [Cqoi2017]老C的键盘 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 218 Solved: 171[Submit][Statu ...
- [BZOJ4824][CQOI2017]老C的键盘(树形DP)
4824: [Cqoi2017]老C的键盘 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 193 Solved: 149[Submit][Statu ...
- bzoj 4824: [Cqoi2017]老C的键盘
Description 老 C 是个程序员. 作为一个优秀的程序员,老 C 拥有一个别具一格的键盘,据说这样可以大幅提升写程序的速度,还能让写出来的程序 在某种神奇力量的驱使之下跑得非常快.小 ...
随机推荐
- 如何规范移动应用交互设计?UI/UX设计师须知的11个小技巧
以下内容由Mockplus团队翻译整理,仅供学习交流,Mockplus是更快更简单的原型设计工具. 十年前,手机的使用只是为了沟通. 而近几年,情况发生了很大变化,我们很难找到不使用手机的人.手机在极 ...
- Python打开文件open()的注意事项
刚刚用open(fileName)来打开txt格式的文件,总是出现错误,总是找不到文件读取的内容,后来才发现是open()在使用过程中自动关闭了.这里介绍另种方法解决这个问题. 第一种方法. with ...
- 网络爬虫--requests库中两个重要的对象
当我们使用resquests.get()时,返回的时response的对象,他包含服务器返回的所有信息,也包含请求的request的信息. 首先: response对象的属性有以下几个, r.stat ...
- 百度地图point 转化成经纬度
百度1.0表示的坐标点,直接在1.3的api上使用坐标无法定位,研究了一阵子百度拾取坐标系统的源码才知道,原来1.0的point是Pixel,调用js的转化代码就搞定了 转化方法如下: var b = ...
- K8S中RC与Deployment的区别
原文:http://fx114.net/qa-81-152379.aspx replication controller与deployment的区别 replication controller Re ...
- 8-5 Navicat工具与pymysql模块
一 Navicat 在生产环境中操作MySQL数据库还是推荐使用命令行工具mysql,但在我们自己开发测试时,可以使用可视化工具Navicat,以图形界面的形式操作MySQL数据库 需要掌握的基本操作 ...
- 自定义beans.xml文件实现Spring框架
经过一天的补习,学习文件加载,java反射,JDom等知识,到了晚上终于能够搭出一个基于配置文件的简单spring框架实现! 首先我们先看看这个问题: 下面是两副图左边是项目结构图,右边是UML图: ...
- ZOJ2208 To and Fro 2017-04-16 19:30 45人阅读 评论(0) 收藏
To and Fro Time Limit: 2 Seconds Memory Limit: 65536 KB Mo and Larry have devised a way of encr ...
- Hdu1874 畅通工程续 2017-04-12 18:37 48人阅读 评论(0) 收藏
畅通工程续 Time Limit : 3000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) Total Submiss ...
- DW2.0
一.DW2.0从企业的角度,吸引企业的原因: 1.数据仓库基础设施的成本不再持续增长.在第一代数据仓库中,技术基础设施的成本是不断增长的,随着数据量的增长,基础设施的成本会以指数级增长.但是使用DW2 ...