ACM的那些事儿
文章平均质量分 59
90worker
坚持自己坚持的。事在人为。
展开
-
错排详解
错排详解一、 错排原理的分析:第一步:将编号为1的元素放在第2到第n个位置之上:有n-1种方法第二步:错排余下的n-1个元素1、若1号元素划等号在第k个位置,第二步就是把K这个元素排好(因为K元素相对应的位置上已经被1给占领了)。如果恰好K这个元素也排在了1的位置上,那么接下来的n-2个元素在与它们的编号相等的位置上再进行错排:有f(n-2)种方法2、若K这个元素原创 2011-07-22 10:17:04 · 4603 阅读 · 2 评论 -
采药问题
【问题描述】辰辰是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师。为此,他想拜附近最有威望的医师为师。医师为了判断他的资质,给他出了一个难题。医师把他带到一个到处都是草药的山洞里对他说:“孩子,这个山洞里有一些不同的草药,采每一株都需要一些时间,每一株也有它自身的价值。我会给你一段时间,在这段时间里,你可以采到一些草药。如果你是一个聪明的孩子,你应该可以让采到的草药的总价值最大。”如果原创 2011-08-03 11:34:20 · 2789 阅读 · 0 评论 -
HDOJ1715 大菲波数
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1715源代码:#include #include using namespace std;string Add(string fNum,string sNum){ int i; if(fNum.length() < sNum.length() ) fNum.swap(sNum原创 2011-07-29 10:00:33 · 1483 阅读 · 0 评论 -
POJ 1001 Exponentiation
题目链接:http://poj.org/problem?id=1001 分析:这是求一个大数的N次幂,但是有点注意的是如果尾部有0要去掉无效的0 前方有0.什么的要把前面的0也给去掉源代码: import java.math.BigDecimal;import java.math.BigInteger;import java.util.Scanner;public cl原创 2011-08-09 10:05:54 · 1998 阅读 · 0 评论 -
2011阿里巴巴程序设计公开赛 1001 Coin Game
博奕题目#include using namespace std;int main(){ int t,i; cin>>t; for(i=1;i<=t;i++){ int n,k; cin>>n>>k; if(k>=n){ printf("Case %i: first\n",i); } else if(n%2==1 && k==1){ printf原创 2011-08-18 20:31:57 · 1570 阅读 · 0 评论 -
POJ 1579 Function Run Fun
题目链接地址:http://poj.org/problem?id=1579分析: 最简单的递归。但如果只写简单的递归,那么将会运行上几个小时会TLE 简单的递归函数:long w(int a,int b,int c){ if(a<=0 || b<=0 || c<=0){ return 1; }原创 2011-08-01 09:57:39 · 916 阅读 · 0 评论 -
POJ 2081 Recaman's Sequence
题目链接:http://poj.org/problem?id=2081 分析:就是要求一系列数字,如果a[i-1]-i>0 则:ai=a[i-1]-i,否则的话 ai=a[i-1]+i,同时要满足这些数字在之前没有出现过。 源代码://POJ 2081 AC#include using namespace std;int a[500010];bool fl原创 2011-08-02 11:01:33 · 1279 阅读 · 0 评论 -
HDOJ 2084 数塔
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2084 简单的DP源代码//HDOJ 2084 数塔 AC#include using namespace std;int p[101][101];//数组int m[101][101]; //记录第一层到第i层第j个数能达到的最大值int main(){ int N,i,原创 2011-08-03 10:27:33 · 1589 阅读 · 0 评论 -
HDOJ 1002
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1002 简单的大数加法源代码: import java.math.BigInteger;import java.util.Scanner;public class Main{ public static void main(String[] args) { i原创 2011-08-18 10:37:24 · 1370 阅读 · 0 评论 -
湖南省第六届 中信软件教育杯 大学生程序设计大赛试题 第三题 数字整除
数字整除 Time Limit: 1000ms, Special Time Limit:2500ms,Memory Limit:65536KBTotal submit users: 22, Accepted users:22Problem 10932 : No special judgement Problem原创 2011-08-28 10:41:07 · 3330 阅读 · 2 评论 -
最长公共子序列问题
问题描述:最长公共子序列也称作最长公共子串(不要求连续),英文缩写为LCS(Longest Common Subsequence)。其定义是,一个序列 S ,如果分别是两个或多个已知序列的子序列,且是所有符合此条件序列中最长的,则 S 称为已知序列的最长公共子序列。 例如:X(A,B,C,B,D,A,B) Y(B,D,C,A,B,A) 那么最长公共子序列就是:原创 2011-08-02 11:21:10 · 4794 阅读 · 1 评论 -
湖南省第六届 中信软件教育杯 大学生程序设计大赛试题 第一题 汽水瓶
汽水瓶 Time Limit: 1000ms, Special Time Limit:2500ms,Memory Limit:65536KBTotal submit users: 31, Accepted users:31Problem 10930 : No special judgement Problem原创 2011-08-28 10:46:01 · 3470 阅读 · 1 评论 -
HDOJ 1159 Common Subsequence
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1159 直接用最长公共子序列问题的模板直接水之关于最长公共子序列问题在我的博客里有详解:http://blog.csdn.net/jiahui524/article/details/6653181源代码://HDOJ 1159#include using namespace std;原创 2011-08-02 11:23:00 · 1578 阅读 · 0 评论 -
HDOJ 2045 不容易系列之(3)—— LELE的RPG难题
问题描述:不容易系列之(3)—— LELE的RPG难题Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 11357 Accepted Submission(s): 4478Problem Description原创 2011-07-20 19:31:01 · 3077 阅读 · 0 评论 -
HDOJ2046 骨牌铺方格
问题描述:骨牌铺方格Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 10589 Accepted Submission(s): 5143Problem Description在2×n的一个长方形方格中,用一原创 2011-07-20 19:51:26 · 2182 阅读 · 0 评论 -
HDOJ 1042 N!
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1042从题目可以看出最大要求1000的阶乘法,可以得知这是简单的大数阶乘源代码:import java.math.BigInteger;import java.util.Scanner;//AC 937MS 4136K public class Main{ public stat原创 2011-08-18 10:39:15 · 1580 阅读 · 0 评论 -
HDOJ 1164 Eddy's research I
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1164这就是一道质数分解的题目源代码://HDOJ 1164 AC#include using namespace std;int main(){ int i,b; long in; while(cin>>in){ b=0; for(i=2;in!=1;i++){原创 2011-08-10 16:19:06 · 1283 阅读 · 0 评论 -
HDOJ 1066 Last non-zero Digit in N!
题目链接地址:http://acm.hdu.edu.cn/showproblem.php?pid=1066这个题目就是求N!的最右边的非零位,例如:5!=120 所以结果输出:2可以直接用模板解决掉!源代码://HDOJ1066 AC#include using namespace std;#define MAXN 10000char c[MAXN];//模板原创 2011-08-10 15:43:35 · 1654 阅读 · 1 评论 -
错排原理的应用
错排原理的应用一: HDOJ2048神、上帝以及老天爷题目链接地址:http://acm.hdu.edu.cn/showproblem.php?pid=2048 问题分析:这就是一道典型的错排原理的应用:N张票的所有排列可能自然是Ann = N!种排列方式N张票N个人的错排情况:f(n) = (i - 1) * [f(n - 1) + f(n - 2)]原创 2011-07-22 15:33:39 · 1665 阅读 · 0 评论 -
HDOJ 1047 Integer Inquiry
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1047简单的大数相加问题源代码:import java.math.BigInteger;import java.util.Scanner;//78MS 2976K ACpublic class Main{ public static void main(String[] args原创 2011-08-20 21:09:36 · 1495 阅读 · 0 评论 -
HDOJ 1316 How Many Fibs?
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1316计算给定的区间有多少个FIB数列个数直接用暴力,但暴力也是有技巧的,直接参考代码中有注释源代码:import java.math.BigInteger;import java.util.Scanner;//125MS 3668K ACpublic class Main原创 2011-08-20 20:56:29 · 1527 阅读 · 0 评论 -
HDOJ 1753 大明A+B
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1753 简单的大浮点数的相加源代码:import java.math.BigDecimal;import java.math.BigInteger;import java.util.Scanner;//AC 109MS 3084K public class Main{ pub原创 2011-08-18 11:16:28 · 1572 阅读 · 0 评论 -
在ACM中Java关于大数的一些相关操作
BigInteger和BigDecimal可以说是acmer选择java的首要原因。函数:add, subtract, divide, mod, compareTo等,其中加减乘除模都要求是BigInteger(BigDecimal)和BigInteger(BigDecimal)之间的运算,所以需要把int(double)类型转换为BigInteger(BigDecimal),用函数BigIn原创 2011-08-09 10:24:25 · 2771 阅读 · 1 评论 -
HDOJ 2602 Bone Collector
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2602 这是一道简单的01背包问题的应用,直接用01代码一次性AC源代码://HDOJ 2602 AC#include using namespace std;#define LEN 1001 //刚开始看错了 写成了 10001结果说是超出内存int value[LEN]原创 2011-08-03 11:32:37 · 1239 阅读 · 0 评论 -
HDOJ 1003 Max Sum
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1003题目意思:是求连续的几个数和的最大值,并且要知道从开始位置到结束位置分析测试用例:5 6 -1 5 4 -7 结果是:6+(-1)+5+4=14 是从1加到4所以输出 14 1 4 源代码://HDOJ 1003#include using namespace st原创 2011-08-01 10:29:31 · 1051 阅读 · 0 评论 -
01背包问题
问题描述:有N件物品和一个容量为V的背包。第i件物品的重量是c[i],价值是w[i]。求解将哪些物品装入背包可使这些物品的重量总和不超过背包容量,且价值总和最大。 问题特点:每种物品仅有一件,可以选择放或不放。(0:不放 1:放) 基本思路:这是最基础的背包问题,用子问题定义状态:即f[i][v]表示前i件物品恰放入一个容量为v的背包可以获得的最大价值。则其状态转移方程便原创 2011-08-03 11:28:01 · 1985 阅读 · 1 评论 -
2011阿里巴巴程序设计公开赛 1003 I'll play a trick on you
发现规律题目:各个数的各位相加推出第三个数且注意是大数的问题源代码:#include using namespace std;#define LEN 101char num1[LEN];char num2[LEN];int a[LEN];int b[LEN];int result[LEN];int main(){ int i,j; int t; cin>>t;原创 2011-08-18 20:34:15 · 1461 阅读 · 0 评论 -
湖南省第六届 中信软件教育杯 大学生程序设计大赛试题 第二题 弟弟的作业
弟弟的作业 Time Limit: 1000ms, Special Time Limit:2500ms,Memory Limit:65536KBTotal submit users: 24, Accepted users:22Problem 10931 : No special judgement Proble原创 2011-08-28 10:43:40 · 3969 阅读 · 0 评论 -
阶乘最后非零位 ACM数论模板
//求阶乘最后非零位,复杂度O(nlogn)//返回该位,n以字符串方式传入 5!=120 返回值为2#include using namespace std;#define MAXN 10000char c[MAXN];int lastdigit(char* buf){ const int mod[20]={1,1,2,6,4,2,2,4,2,8,4,4,8,4,6,8,8原创 2011-08-10 15:40:42 · 2773 阅读 · 0 评论