HDU4919 Exclusive or(递推+记忆化搜索+大数)
来源:互联网 发布:联通网络信号差怎么办 编辑:程序博客网 时间:2024/05/22 08:28
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4919
题意:
给定n求sigma(i^(n - i)) (1<=i<=n-1)
分析:
打表后可以发现规律
1) n = 2 * k + 1;
f[n] = 4 * f[k] + 6;
2) n = 2 * k
f[n] = 2 * f[k] + 2 * f[k-1] + 4 * k - 4;
具体的证明:http://blog.csdn.net/houserabbit/article/details/38397831
代码如下:
//package fuck;import java.math.BigInteger;import java.util.HashMap;import java.util.Scanner;public class Main {public static HashMap<BigInteger,BigInteger>f = new HashMap<BigInteger,BigInteger>();public static BigInteger two =BigInteger.valueOf(0);public static BigInteger three = BigInteger.valueOf(6);public static BigInteger four =BigInteger.valueOf(4);public static BigInteger dfs(BigInteger n){if(f.containsKey(n)) return f.get(n);BigInteger ans;if(n.mod(BigInteger.valueOf(2)).compareTo(BigInteger.valueOf(0))==0){BigInteger tmp = n.divide(BigInteger.valueOf(2));BigInteger tmp1 = tmp.subtract(BigInteger.valueOf(1));BigInteger ans1 = dfs(tmp).multiply(BigInteger.valueOf(2));BigInteger ans2 = tmp1=dfs(tmp1).multiply(BigInteger.valueOf(2));ans = ans1.add(ans2).add(tmp.multiply(four)).subtract(four);}else{BigInteger tmp = n.divide(BigInteger.valueOf(2));BigInteger tmp2 = tmp.multiply(three);ans = dfs(tmp).multiply(four).add(tmp2);}f.put(n,ans);return ans;} public static void main(String args[]){ Scanner cin=new Scanner(System.in); f.put(BigInteger.ZERO, BigInteger.ZERO); f.put(BigInteger.ONE, BigInteger.ZERO); f.put(BigInteger.valueOf(3), BigInteger.valueOf(6)); f.put(BigInteger.valueOf(4), BigInteger.valueOf(4)); f.put(BigInteger.valueOf(5), BigInteger.valueOf(12)); while(cin.hasNext()){ BigInteger n = cin.nextBigInteger(); System.out.println(dfs(n)); } } }
0 0
- HDU4919 Exclusive or(递推+记忆化搜索+大数)
- HDU4919 Exclusive or(Java大数推公式)
- 【HDU4919】递推java大数 递归优化
- 动态规划——数字三角形(递归or递推or记忆化搜索)
- hdu 4919 ( Exclusive or ) 数论递推
- hdu4283 You Are the One 区间dp 记忆化搜索or递推
- 记忆化搜索与递推
- POJ 2506 高精度+递推+记忆化搜索
- 数字三角形——递归、递推、记忆化搜索
- Game of Sum 记忆化搜索/递推
- sdutoj 3062 蝴蝶效应 (记忆化搜索/递推)
- HDU4571-区间DP,记忆化搜索,递推
- POJ1088 滑雪 经典DP 记忆化搜索和递推
- 洛谷Oj-传球游戏-递推 + 记忆化搜索
- 9.1数字三角形(记忆化搜索与递推)
- 【HDU】4919 Exclusive or 推公式+高精度
- poj1088滑雪【dfs or 记忆化搜索】
- HDU 4919 Exclusive or 解题报告(规律+大数)
- hdu3564 Another LIS
- CSS线性渐变 垂直和水平渐变linear-gradient
- MySQL中采用类型varchar(20)和varchar(255)对性能上的影响
- 滨海在逃犯罪人员信息记录查询
- 滨海手机GPS卫星定位追踪找人
- HDU4919 Exclusive or(递推+记忆化搜索+大数)
- linux 编译链接libcurl异常处理
- [erlang]empd详解
- iOS 沙盒
- 对spring中IOC的理解和使用spring的好处
- 用C语言写的学生管理系统
- Html5+jquery版工作流设计器(开源的js文件)
- 【AndroidEclipse】Installation error:INSTALL_FAILED_UPDATE_INCOMPATIBLE
- SAT语法改错题示范介绍