题目大意:
  有一排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的更多相关文章

  1. POJ 1205 Water Treatment Plants(递推)

    题意   建设一条河岸的污水处理系统  河岸有n个城市   每一个城市都能够自己处理污水 V   也能够把污水传到相邻的城市处理 >或<   除了你传给我我也传给你这样的情况   其他都是 ...

  2. poj 1205 :Water Treatment Plants (DP+高精度)

    题意:有n个城市,它们由一个污水处理系统连接着,每个城市可以选择 1.将左边城市过来的污水和右边城市过来的污水连同本身的污水排到河里  >V< 2.将左边来的污水连同自己的污水排到右边   ...

  3. POJ题目细究

    acm之pku题目分类 对ACM有兴趣的同学们可以看看 DP:  1011   NTA                 简单题  1013   Great Equipment     简单题  102 ...

  4. DP:0

    小故事: A * "1+1+1+1+1+1+1+1 =?" * A : "上面等式的值是多少" B : *计算* "8!" A *在上面等式 ...

  5. 【转】POJ百道水题列表

    以下是poj百道水题,新手可以考虑从这里刷起 搜索1002 Fire Net1004 Anagrams by Stack1005 Jugs1008 Gnome Tetravex1091 Knight ...

  6. 2018 青岛ICPC区域赛E ZOJ 4062 Plants vs. Zombie(二分答案)

    Plants vs. Zombies Time Limit: 2 Seconds      Memory Limit: 65536 KB BaoBao and DreamGrid are playin ...

  7. Plants vs. Zombies(二分好题+思维)

    Plants vs. Zombies http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5819 BaoBao and DreamG ...

  8. zoj4062 Plants vs. Zombies 二分+模拟(贪心的思维)

    题目传送门 题目大意:有n个植物排成一排,标号为1-n,每株植物有自己的生长速度ai,每对植物浇一次水,该株植物就长高ai,现在机器人从第0个格子出发,每次走一步,不能停留,每一步浇一次水,总共可以走 ...

  9. [zz]The Royal Treatment

    http://www.cgw.com/Publications/CGW/2012/Volume-35-Issue-4-June-July-2012/The-Royal-Treatment.aspx T ...

随机推荐

  1. 工作中常用的Git操作--------(一)

    今天主要记录一下平常工作当中使用的git操作: 1.git的安装这里省略: 2.git的操作指令: 在项目开发中,经常是拉去经理已经搭建好的一个项目,也就是给我们一个git地址.比如:http://g ...

  2. 使用npm安装包失败的解决办法(使用npm国内镜像介绍)

    镜像使用方法(三种办法任意一种都能解决问题,建议使用第三种,将配置写死,下次用的时候配置还在): 1.通过config命令 npm config set registry https://regist ...

  3. SpringMVC可以配置多个拦截后缀*.action和.do等

    首先介绍一下.do和.action的区别: struts早期的1版本,以.do为后缀. 同时spring的MVC也是以.do为后缀. 几年前struts收购鼎鼎大名的webwork2和开发团队后,将w ...

  4. ThinkPHP的运行流程-2

    Thinkphp为了提高编译的效率,第一次运行的时候thinkphp会把文件全部编译到temp目录下的~runtime.php文件,在第二次运行的时候会直接读取这个文件.所以我们在线下自己写代码测试的 ...

  5. route add提示: "SIOCADDRT: No such process

    解决方法如下: 原因: There are multiple known causes for this error: - You attempted to set a route specific ...

  6. UNDO自我理解总结

    [场景] 当在更新数据的时候,发现更新的值写错了,这时就需要将已经更新的地方恢复到原始数据. [基本概念] 在更新的过程中,Oracle会将原始的数据都放入到UNDO里,这样当以上情况发生后,就可以从 ...

  7. Codeforces 776C - Molly's Chemicals(思维+前缀和)

    题目大意:给出n个数(a1.....an),和一个数k,问有多少个区间的和等于k的幂 (1 ≤ n ≤ 10^5, 1 ≤ |k| ≤ 10, - 10^9 ≤ ai ≤ 10^9) 解题思路:首先, ...

  8. POJ - 1251

    Jungle Roads Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 20024   Accepted: 9234 Des ...

  9. 使用coding云作为git远程库

    1.在命令行中创建GIT仓库 mkdir DriveAssistant cd DriveAssistant git init echo "# DriveAssistant" > ...

  10. 洛谷P2676 超级书架 题解

    题目传送门 题目一看就是贪心.C++福利来了:sort. 基本思路就是:要使奶牛最少那么肯定高的奶牛先啦. 直接排序一遍(从高到矮)然后while,搞定! #include<bits/stdc+ ...