Children’s Queue Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 13333    Accepted Submission(s): 4364 Problem Description There are many students in PHT School. One day, the headmaster whose na…
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2370 一道递推的题. 这道题的递推方程很容易可以想到,是枚举加上哪一个数字,把方法数累加起来.这道题主要是要注意前缀0的问题,可以通过枚举第一个数字不是一的所有情况,然后最后询问大于6的时候就加一. 代码如下(JAVA): import java.math.BigInteger; impor…
Children's Queue Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 11117    Accepted Submission(s): 3577 Problem Description There are many students in PHT School. One day, the headmaster whose n…
d[i+c[j]]+=d[i](c[j]是拼成j所需的火柴数) d[0]=1: 别忘了不能有前导零,所以当i为零时,不要尝试去拼成零.反而应该在n>=6时,最后给答案加1(单独拼出0). import java.util.*; import java.io.*; import java.math.*; public class Main{ static BigInteger[] d=new BigInteger[2010]; static int[] c=new int[]{6,2,5,5,4,…
https://vjudge.net/problem/UVA-10328 题意: 有H和T两个字符,现在要排成n位的字符串,求至少有k个字符连续的方案数. 思路:这道题目和ZOJ3747是差不多的,具体做法可以参考另一篇博客http://www.cnblogs.com/zyb993963526/p/7203833.html 但是这道题目的话是要用大数来做的,c++感觉不太好写,就学了下java的做法. import java.math.BigInteger; import java.util.S…
这道题我已经推出00和1过两步变成00了,可我没有继续做下去-- 后来看了博客发现自己已经做了90%了-- 可惜了,以后不要轻易放弃. 1的个数有个规律,就是每次都乘以2,因为0和1下一步都会变出1 然后因为0和1个个数是一样的,所以1的变出1,0的也变出1 最后1的个数就乘以2了 第i次1的个数为2的(i-1)次方. 最后要用高精度,高精度可以不去弄那些类什么的,直接重数组模拟就好了 可以一位存一万来提高效率. 相加,进位,去零 #include<cstdio> #define REP(i,…
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2370 难题锻炼思维,水题锻炼细心. 这个题有两个需要注意的地方 1,关于前导零 2,高精度 代码: import java.math.BigInteger; import java.util.Scanner; public class Main { /** * @param args */…
题目大意:轮状病毒基定义如图.求有多少n轮状病毒 这个递推实在是不会--所以我选择了打表找规律 首先执行下面程序 #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #define M 110 using namespace std; struct abcd{ int to,next; bool ban; }table[M<<2]; int head[…
题目传送门 /* 题意:汉诺塔问题变形,多了第四个盘子可以放前k个塔,然后n-k个是经典的汉诺塔问题,问最少操作次数 递推+高精度+找规律:f[k]表示前k放在第四个盘子,g[n-k]表示经典三个盘子,2 ^ (n - k) - 1 所以f[n] = min (f[k] * 2 + g[n-k]),n<=10000,所要要用高精度,另外打表能看出规律 */ /************************************************ * Author :Running_Ti…
http://blog.csdn.net/sdj222555/article/details/12453629 这个递推可以说是非常巧妙了. import java.util.*; import java.io.*; import java.math.*; public class Main{ static BigInteger[] g=new BigInteger[60]; static BigInteger[] f=new BigInteger[60]; static BigInteger[…