[BZOJ 1794] Linear Garden
Link:
Solution:
IOI2008官方题解:传送门
要求序号,其实就是算字典序比其小的序列个数
从而使用数位$dp$的思想来解题,关键在于维护序列要$balance$这个条件
可以将$P$看作$-1$,而将$L$看作$+1$,最终要保证整个序列在一个宽最多为2的横条内
接下来就可以用状压$dp$计算方案数了
但实际上由于只有两种状态,每一种情形下是能直接推出结论的:
1、如果在宽仅为1的横条内,贡献为$2^{floor(k)}+2^{ceil(k)-1}$
2、如果在宽为2的横条内,贡献为$2^{floor(t)}$
官方题解好像情况2的结论有错?
状压$dp$的神仙做法:传送门 ,有点没看懂正确性在哪里……
Code:
#include <bits/stdc++.h> using namespace std;
const int MAXN=1e6+;
char s[MAXN];
int n,m,mx,mn,cur,l,pre[MAXN],res; int main()
{
scanf("%d%d%s",&n,&m,s);l=strlen(s);
pre[]=;for(int i=;i<=1e6;i++) pre[i]=pre[i-]*%m;
for(int i=;i<l;i++)
{
if(s[i]=='P')
{
if(max(mx,cur+)-mn<=)
{
float t=(l-i-(float))/;
if(max(mx,cur+)-mn==)
(res+=pre[(int)floor(t)]+pre[(int)ceil(t)]-+m)%=m;
else (res+=pre[(int)floor(t)])%=m;
}
cur--;mn=min(mn,cur);
}
else cur++,mx=max(mx,cur);
}
printf("%d",(res+)%m);
return ;
}
Review:
1、对于按字典序排列的计数问题,都可以引申为数位$dp$的题目
2、每一位状态数较小时尝试推结论
注意数形结合
[BZOJ 1794] Linear Garden的更多相关文章
- bzoj AC倒序
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...
- bzoj千题计划155:bzoj3543: [ONTAK2010]Garden
http://www.lydsy.com/JudgeOnline/problem.php?id=3543 枚举每一个点,作为左下角 然后枚举 相同的x坐标,y坐标 少的那个 作为另一个角 二分判断另外 ...
- uva10001 Garden of Eden
Cellular automata are mathematical idealizations of physical systems in which both space and time ar ...
- BZOJ 2127: happiness [最小割]
2127: happiness Time Limit: 51 Sec Memory Limit: 259 MBSubmit: 1815 Solved: 878[Submit][Status][Di ...
- 萌新笔记——Cardinality Estimation算法学习(二)(Linear Counting算法、最大似然估计(MLE))
在上篇,我了解了基数的基本概念,现在进入Linear Counting算法的学习. 理解颇浅,还请大神指点! http://blog.codinglabs.org/articles/algorithm ...
- BZOJ 3275: Number
3275: Number Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 874 Solved: 371[Submit][Status][Discus ...
- BZOJ 2879: [Noi2012]美食节
2879: [Noi2012]美食节 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 1834 Solved: 969[Submit][Status] ...
- bzoj 4610 Ceiling Functi
bzoj 4610 Ceiling Functi Description bzoj上的描述有问题 给出\(n\)个长度为\(k\)的数列,将每个数列构成一个二叉搜索树,问有多少颗形态不同的树. Inp ...
- BZOJ 题目整理
bzoj 500题纪念 总结一发题目吧,挑几道题整理一下,(方便拖板子) 1039:每条线段与前一条线段之间的长度的比例和夹角不会因平移.旋转.放缩而改变,所以将每条轨迹改为比例和夹角的序列,复制一份 ...
随机推荐
- 【NOIP模拟赛】beautiful 乱搞(平衡树)+ST
biubiu~~~ 我用平衡树处理的这道题,然而这种方法还是要看评测姬..... 正解是乱搞....就是枚举每一位数作为中位数,比他小的看做-1比他大的看做1,那么我们从一开始就有了一个绵延的山,我们 ...
- vim插件修改背景颜色和代码颜色
ls /usr/share/vim/vim74/colorsblue.vim default.vim desert.vim evening.vim morning.vim pablo.vim READ ...
- C语言一些常用的功能
1.测试运行时间: #include<stdio.h> #include<stdlib.h> #include<time.h> int main() { clock ...
- [bzoj 1143]最长反链二分图最大匹配
Dilworth定理:偏序集能划分成的最少的全序集的个数与最大反链的元素个数相等. 证明:http://www.cnblogs.com/itlqs/p/6636222.html 题目让求的是最大反链的 ...
- 定时导出用户数据(expdp,impdp)
一 定时导出数据: #!/bin/bash############################################################################### ...
- BAT定期删除N天前的文件
1.直接看脚本在win2008测试可用 ::clean logs @echo off title clean up logs ::delete logs FORFILES /P /C "cm ...
- 转:通过Spring Session实现新一代的Session管理
长期以来,session管理就是企业级Java中的一部分,以致于我们潜意识就认为它是已经解决的问题,在最近的记忆中,我们没有看到这个领域有很大的革新. 但是,现代的趋势是微服务以及可水平扩展的原生云应 ...
- [洛谷P3942] 将军令
洛谷题目链接:将军令 题目背景 历史/落在/赢家/之手 至少/我们/拥有/传说 谁说/败者/无法/不朽 拳头/只能/让人/低头 念头/却能/让人/抬头 抬头/去看/去爱/去追 你心中的梦 题目描述 又 ...
- 【BZOJ3942】Censoring [KMP]
Censoring Time Limit: 10 Sec Memory Limit: 128 MB[Submit][Status][Discuss] Description 有一个S串和一个T串,长 ...
- unity中绘制战争迷雾
接上一篇中说的游戏,我们已经实现了client.host上的一个物体可见不可见的行为.之后我们可以加入类似检查两个单位之间的距离.或是两个单位之间有无阻挡物来进一步实现游戏机制. 在这篇随笔中我会首先 ...