[POJ1205]Water Treatment Plants
题目大意:
有一排n个格子,要在它们上面装管道。
每个格子上的管道都是T形的,但是可以有三种流动的方向。
每种都是把两个方向的水往另一个方向排出。
如果方向是向左或向右,就是排到相邻的格子里。
特别地,最左边的格子不能向左排水,最右边的格子不能向右排水。
现在每个格子都有一些积水等待排出,问能使所有格子的水最后都会从下面流出的方案数。
思路:
我们不妨用f[i][0~2]表示第i个格子排水方案数。
0~2表示不同的方向。
用0表示下,1表示左,2表示右。
f[i][0]=f[i-1][1]+f[i-1][2];
f[i][1]=f[i-1][0]+f[i-1][1]+f[i-1][2];
f[i][2]=f[i-1][0]+f[i-1][1]+f[i-1][2];
压到一维就是f[i]=f[i-1]*3-f[i-2]。
然后又变成了一道入门题。
然而题目并没有告诉你模数,所以需要高精度,总之就是特别恶心。
#include<cmath>
#include<cstdio>
#include<cstring>
class BigInteger {
private:
static const int base=1e8;
int len;
int num[];
public:
BigInteger() {
len=;
memset(num,,sizeof num);
}
BigInteger &operator = (const int &x) {
len=;
num[]=x;
return *this;
}
BigInteger &operator = (const BigInteger &x) {
len=x.len;
memcpy(num,x.num,sizeof num);
return *this;
}
BigInteger operator * (const int &x) const {
BigInteger ans;
for(register int i=;i<=len;i++) {
ans.num[i]+=num[i]*x;
ans.num[i+]=ans.num[i]/base;
ans.num[i]%=base;
}
ans.len=len;
if(ans.num[len+]) ans.len++;
return ans;
}
BigInteger operator - (const BigInteger &x) const {
BigInteger ans;
for(register int i=;i<=len;i++) {
ans.num[i]+=num[i]-x.num[i];
if(ans.num[i]<) {
ans.num[i]+=base;
ans.num[i+]--;
}
}
ans.len=len;
if(!ans.num[len]&&len) ans.len--;
return ans;
}
void println() {
printf("%d",num[len]);
for(register int i=len-;i>=;i--) {
if(!num[i]) {
printf("");
continue;
}
for(register int j=log10(num[i]);j<=;j++) {
putchar('');
}
printf("%d",num[i]);
}
putchar('\n');
}
};
BigInteger f[];
int main() {
int n;
while(~scanf("%d",&n)) {
f[]=;
f[]=;
for(register int i=;i<=n;i++) {
f[i%]=f[(i-)%]*-f[(i-)%];
}
f[n%].println();
}
return ;
}
[POJ1205]Water Treatment Plants的更多相关文章
- POJ 1205 Water Treatment Plants(递推)
题意 建设一条河岸的污水处理系统 河岸有n个城市 每一个城市都能够自己处理污水 V 也能够把污水传到相邻的城市处理 >或< 除了你传给我我也传给你这样的情况 其他都是 ...
- poj 1205 :Water Treatment Plants (DP+高精度)
题意:有n个城市,它们由一个污水处理系统连接着,每个城市可以选择 1.将左边城市过来的污水和右边城市过来的污水连同本身的污水排到河里 >V< 2.将左边来的污水连同自己的污水排到右边 ...
- POJ题目细究
acm之pku题目分类 对ACM有兴趣的同学们可以看看 DP: 1011 NTA 简单题 1013 Great Equipment 简单题 102 ...
- DP:0
小故事: A * "1+1+1+1+1+1+1+1 =?" * A : "上面等式的值是多少" B : *计算* "8!" A *在上面等式 ...
- 【转】POJ百道水题列表
以下是poj百道水题,新手可以考虑从这里刷起 搜索1002 Fire Net1004 Anagrams by Stack1005 Jugs1008 Gnome Tetravex1091 Knight ...
- 2018 青岛ICPC区域赛E ZOJ 4062 Plants vs. Zombie(二分答案)
Plants vs. Zombies Time Limit: 2 Seconds Memory Limit: 65536 KB BaoBao and DreamGrid are playin ...
- Plants vs. Zombies(二分好题+思维)
Plants vs. Zombies http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5819 BaoBao and DreamG ...
- zoj4062 Plants vs. Zombies 二分+模拟(贪心的思维)
题目传送门 题目大意:有n个植物排成一排,标号为1-n,每株植物有自己的生长速度ai,每对植物浇一次水,该株植物就长高ai,现在机器人从第0个格子出发,每次走一步,不能停留,每一步浇一次水,总共可以走 ...
- [zz]The Royal Treatment
http://www.cgw.com/Publications/CGW/2012/Volume-35-Issue-4-June-July-2012/The-Royal-Treatment.aspx T ...
随机推荐
- zepto.js 实现原理解析
zepto 是移动端常用的 dom 库,代码轻巧,操作方式类同 jquery.那么 zepto 的核心实现原理是什么呢?
- 64_o1
OCE-devel-0.18.1-1.fc26.i686.rpm 15-May-2017 18:37 5634474 OCE-devel-0.18.1-1.fc26.x86_64.rpm 15-May ...
- 选中一行并且选中该行的radio
$("tr").bind("click",function(){ $("input:radio").attr("checked&q ...
- juery给所有ID属性相同的div绑定一个事件
案例: <div id="div1">内容</div> <div id="div1">内容</div> < ...
- 服务器Java环境配置
/* 当要在服务器里搭建Java web项目时, 要先配置好Java需要的环境 */ //jdk [root@localhost ~]# cd /usr/local/src [root@localho ...
- The hub and spoke model 轮辐模型/辐射模型
最近一些文档中提到The Hub and Spoke Model,这里mark一下.hub表示轮毂,spoke表示轮辐,轮辐模型是简化网络路由的一套中心化的体系,广泛应用于航空.货运.快递以及网络技术 ...
- mysql 配置数据库主从同步
参考:https://www.cnblogs.com/kevingrace/p/6256603.html http://www.51testing.com/html/00/130600-243651. ...
- Caffe学习系列(8):solver,train_val.prototxt,deploy.prototxt及其配置
solver是caffe的核心. net: "examples/mnist/lenet_train_test.prototxt" test_iter: 100 test_inter ...
- Percona XtraDB Cluster(PXC)-高可用架构设计说明
Mycat+PXC高可用集群 一.架构图 架构说明: 1.mysql 集群高可用部分: l 针对业务场景选用Percona XtraDB Cluter(PXC)复制集群.两个片集群 PXC-dataN ...
- DEDECMS如何让栏目外部链接在新窗口中打开
dede的栏目打开方式默认的“当前窗口打开”,可以用下面两种方法让dede栏目在新窗口中打开. 方法1. 查找模板中的head.htm 将 <li><a href='[field:t ...