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

简介: 思路:DP+高精度。DP部分,易得最右边城市的状态只可能用3种:>V, V, <。故分三种状态讨论,设dp[i][0]为第i个城市的状态为:> V ,dp[i][1]为:V ,dp[i][2]为:<。由实际流动的可能性可以得到状态转移方程:

题意:有n个城市,它们由一个污水处理系统连接着,每个城市可以选择

1、将左边城市过来的污水和右边城市过来的污水连同本身的污水排到河里  >V<

2、将左边来的污水连同自己的污水排到右边  >>

3、将右边来的污水连同自己的污水排到左边  <<


问总共有多少种处理情况,即不同又符合实际的><V组合。


思路:DP+高精度。DP部分,易得最右边城市的状态只可能用3种:>V, V, <。故分三种状态讨论,设dp[i][0]为第i个城市的状态为:> V ,dp[i][1]为:V ,dp[i][2]为:<。由实际流动的可能性可以得到状态转移方程:


dp[i][0] = dp[i-1][0] + dp[i-1][1];


dp[i][1] = dp[i-1][0] + dp[i-1][1] + dp[i-1][2];


dp[i][2] = dp[i-1][0] + dp[i-1][1] + dp[i-1][2];


然后可以整理为:dp[i] = 3 * dp[i-1] + dp[i-2]。然后用java的BigInteger预处理就OK了。


以下是java代码:

import java.util.Scanner;
import java.math.*;
public class Main {
  public static void main(String[] args) {
    int n;
    Scanner cin = new Scanner(System.in);
    BigInteger[] a = new BigInteger[110];
    a[1] = BigInteger.valueOf(1);
    a[2] = BigInteger.valueOf(3);
    for (int i = 3; i <= 100; i++) {
      a[i] = a[i-1].multiply(BigInteger.valueOf(3)).subtract(a[i-2]);
    }
    while (cin.hasNextInt()) {
      n = cin.nextInt();
      System.out.println(a[n]);
    }
    cin.close();
  }
}
目录
相关文章
|
机器学习/深度学习 人工智能 自然语言处理
告别繁琐阅读,阿里通义智文阅读助手带您轻松畅游知识海洋!
阿里通义智文阅读助手是款AI阅读辅助工具,能高效解析PPT、图片、PDF等,提供智能摘要、关键词提取等功能。用户可上传图片文件,助手自动识别文字,支持图表识别和全 文搜索。此外,它还具备智能问答功能,帮助用户理解和提问文档内容。工具支持多种文件格式,但有每日使用限制。由木头左分享,期待更多精彩!
|
设计模式 算法 Java
盘点Tomcat中常见的13种设计模式
【10月更文挑战第6天】本文深入探讨了Tomcat中常见的13种设计模式,包括单例模式、工厂模式、适配器模式、装饰者模式、组合模式、外观模式、享元模式、责任链模式、命令模式、迭代器模式、观察者模式、策略模式和模板方法模式。通过具体示例,展示了这些设计模式如何协同工作,支撑起Tomcat的高性能和高灵活性。
|
网络协议 JavaScript 前端开发
使用正则表达式验证身份证号、QQ号、手机号、邮箱、地址、邮编、银行卡号、学号、车牌号、快递单号、验证码、ISBN号、网址、IPV4地址、IPV6地址、出生年月日、姓名1
使用正则表达式验证身份证号、QQ号、手机号、邮箱、地址、邮编、银行卡号、学号、车牌号、快递单号、验证码、ISBN号、网址、IPV4地址、IPV6地址、出生年月日、姓名
906 0
|
JavaScript
vue项目打包后自动压缩成zip文件
vue项目打包后自动压缩成zip文件
841 0
|
前端开发 Java 数据库连接
开源一个基于SpringBoot的咖啡商城系统
开源一个基于SpringBoot的咖啡商城系统
420 0
开源一个基于SpringBoot的咖啡商城系统
|
SQL 关系型数据库 MySQL
optimizer_switch优化法案详解
optimizer_switch优化法案详解
|
SQL 分布式计算 算法
【Hive】数据倾斜怎么解决?
【4月更文挑战第16天】【Hive】数据倾斜怎么解决?
|
索引
Layui 内置方法 - layer.getFrameIndex( 获取特定iframe层的索引)
Layui 内置方法 - layer.getFrameIndex( 获取特定iframe层的索引)
378 0
|
Python
在ubuntu18.04中安装PyCharm(图解)
在ubuntu18.04中安装PyCharm(图解)
255 0
|
人工智能 自然语言处理 机器人
厉害了!设计师的国际认证从思维转型,到实践落地,让人才有了标准
厉害了!设计师的国际认证从思维转型,到实践落地,让人才有了标准
厉害了!设计师的国际认证从思维转型,到实践落地,让人才有了标准