题目大意:
  有一排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. 【Tomcat】tomcat设置http文件下载,配置文件下载目录

    tomcat作为http的下载服务器,网上有很多办法 但我认为最简单的是:(亲测有效) 1.直接把文件放在 /var/lib/tomcat6/webapps/ROOT 目录下, 2.然后在网址中访问: ...

  2. 使用ctypes在Python中调用C++动态库

    使用ctypes在Python中调用C++动态库 入门操作 使用ctypes库可以直接调用C语言编写的动态库,而如果是调用C++编写的动态库,需要使用extern关键字对动态库的函数进行声明: #in ...

  3. MYSQL三种安装方式--二进制包安装

    1. 把二进制包下载到/usr/local/src下 2. 如果是tar.gz包,则使用tar zxvf 进行解压 如果是tar包,则可以使用tar xvf 进行解压 3. $ mv mysql-5. ...

  4. solr应用

    Solr是apache的顶级开源项目,它是使用java开发 ,基于lucene的全文检索服务器.Solr比lucene提供了更多的查询语句,而且它可扩展.可配置,同时它对lucene的性能进行了优化. ...

  5. redis源码分析——aofrewrite

    随着redis的运行,aof会不断膨胀(对于一个key会有多条aof日志),导致通过aof恢复数据时,耗费大量不必要的时间.redis提供的解决方案是aof rewrite.根据db的内容,对于每个k ...

  6. 自定义事件的触发dispatchEvent

    1. 对于标准浏览器,其提供了可供元素触发的方法:element.dispatchEvent(). 不过,在使用该方法之前,我们还需要做其他两件事,及创建和初始化.因此,总结说来就是: documen ...

  7. AssetBundle——外部加载资源Asset

    几篇很不错的文章  AssetBundle创建到使用入门 全面理解Unity加载和内存管理 实用的创建AssetBundle的脚本   相关资源 相关的共享资源下载  本共享包括创建assetbund ...

  8. Regular Expression Matching——没理解的动态规划

    Implement regular expression matching with support for '.' and '*'. '.' Matches any single character ...

  9. Base64的好处

    1. 昨天的<MIME笔记>中提到,MIME主要使用两种编码转换方式----Quoted-printable和Base64----将8位的非英语字符转化为7位的ASCII字符. 虽然这样的 ...

  10. IEEEXtreme 10.0 - Always Be In Control

    这是 meelo 原创的 IEEEXtreme极限编程大赛题解 Xtreme 10.0 - Always Be In Control 题目来源 第10届IEEE极限编程大赛 https://www.h ...