摘要: 解题报告:题目大意:现有一个十进制的数n,问n的二进制表示应该是多少。简单题,直接暴力的方法,输入一个n ,每次n--,同时保存结果的数组第一位加一,然后再暴力判断是否要进位。最后将储存结果的那个数组倒着输出就是了。View Code 1 #include<stdio.h> 2 #include<string.h> 3 int main() { 4 int n,ans[55]; 5 while(scanf("%d",&n)!=EOF) { 6 memset(ans,0,sizeof(ans)); 7 while(n--) { 8 ... 阅读全文
posted @ 2013-05-12 22:24 xiaxiaosheng 阅读(163) 评论(0) 推荐(0) 编辑
摘要: 解题报告:题目大意:用n条折线最多可以将平面分成多少个部分。动态规划,当把第n条折线添加到拥有n-1条折线的图里面时,为了尽可能多的分割平面,所以这条折线要与原有的n-1条折线都有交点,交点总数就是2*(n-1),交叉之后总的线段数为4*(n-1),和两条射线,所以得到新增加的区域数目就是4*(n-1)+1,其中4*(n-1)是通过线段增加的区域,而1是通过两条射线增加的区域数目。得到递推公式就是DP[n]=DP[n-1]+4*(n-1)+1。View Code 1 #include<stdio.h> 2 __int64 DP[10000+5]; 3 void dabiao(voi 阅读全文
posted @ 2013-05-12 21:56 xiaxiaosheng 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 解题报告:题目大意:现有一个蜜蜂房如右图所示,每一个蜜蜂房都有编号,现在一只蜜蜂要从a号蜜房爬到b号蜜蜂房,问一共有多少条不同的路线。又是一道动态规划题,由于整个蜂房是按照一定的周期排列的,所以我们可以不管a和b到底是多少,只要知道b-a的值就可以了,为了方便,令n=b-a,即要求蜜蜂从1号蜂房走到n号蜂房一共有多少种不同的路线,我们可以将1到n转化为1到n-1和1到n-2的子问题来求出我们所要的解,可以理解为当现在要从一号房爬到n号房,可以假设蜜蜂现在在n-1号房,那么蜜蜂从n-1号房爬到n号房可以有一种走法,另一种是假设蜜蜂现在就在n-2号房,那么从n-2号房走到n号房也是只有一种走法所以 阅读全文
posted @ 2013-05-12 21:07 xiaxiaosheng 阅读(225) 评论(0) 推荐(0) 编辑
摘要: 解题报告:题目大意:给你一个n,表示有n个排成一条直线的方格,现在有红、粉、绿三种颜色,用着三种颜色将这个n个方格涂满,涂色的规则是相邻的两个方格的颜色不能相同,并且最后一格跟第一格的颜色不能相同,要求一共有多少涂色的方法。也是一道动态规划题,若现在要求有n个方格时有多少种涂色方法,可以把它化为两个子问题来 求解,第一,当第n-1个方格涂的颜色与第一格的颜色相同时,而第n-1格的颜色与第一格颜色相同的情况可以由n-2格的结果得到,因为当有n-2个方格的情况的时候,要求的就是最后一格不能与第一格的颜色相同,于是就可以看成是将n-2的情况直接在后面加上一种与第一格相同的颜色,就得到了当第n-1格的 阅读全文
posted @ 2013-05-12 19:58 xiaxiaosheng 阅读(137) 评论(0) 推荐(0) 编辑
摘要: 解题报告:题目大意:给你一个n ,表示有2*n规格的方格,现在又若干个1*2规格的骨牌,要用骨牌将2*n 规格的方格铺满,问有多少种铺法。动态规划题,要求有n格时铺的方法种数,就可以通过有n-1跟n-2个方格的结果来递推出来,思想就是当要求有n个方格时铺的方法种数就可以理解为在n-1格的情况下,多了一个格,那么着多出的一个就可以直接将一块骨牌竖直放好就可以填满了,然而还要加上有将两块骨牌横着放的情况,这时就需要有两个空的方格,于是我们可以由n-2个方格的情况递推过来,也就是加上一个n-2的情况,可以定义一个数组DP【55】,首先将数组DP初始化为DP[1]=1;DP[2]=2;DP[3]=3; 阅读全文
posted @ 2013-05-12 19:40 xiaxiaosheng 阅读(223) 评论(0) 推荐(0) 编辑
摘要: 解题报告:题目大意:现要跨上一个结束为M 的台阶,每次可以选择一次跨一级台阶或者一次跨上两级台阶,问跨上这个M级的台阶有多少种跨法。最简单的动态规划题,假设我现在在第n级台阶上,要跨上级数为M的台阶可以将问题转化为要从第n 级台阶一步跨只跨一级台阶跨到n+1级台阶上,也可以选着一次一步跨两级台阶直接跨到n+2级台阶上,所以从第n级台阶跨上M级台阶的方法种数就是从第n级台阶一步跨一级跟一步跨两级的和就为从第n级台阶跨上M级台阶的方法种数。View Code 1 #include<stdio.h> 2 int DP[45]; 3 void dabiao(void) { 4 DP[1]= 阅读全文
posted @ 2013-05-12 16:57 xiaxiaosheng 阅读(145) 评论(0) 推荐(0) 编辑
摘要: Problem DescriptionIgnatius was born in a leap year, so he want to know when he could hold his birthday party. Can you tell him? Given a positive integers Y which indicate the start year, and a positive integer N, your task is to tell the Nth leap year from year Y. Note: if year Y is a leap year, th 阅读全文
posted @ 2013-05-12 10:42 xiaxiaosheng 阅读(165) 评论(0) 推荐(0) 编辑
摘要: Problem DescriptionACboy has N courses this term, and he plans to spend at most M days on study.Of course,the profit he will gain from different course depending on the days he spend on it.How to arrange the M days for the N courses to maximize the profit?InputThe input consists of multiple data set 阅读全文
posted @ 2013-05-12 10:40 xiaxiaosheng 阅读(160) 评论(0) 推荐(0) 编辑
摘要: Description有N个顶点,每个顶点有一个权值,初始值皆为0。接下来有M次操作,操作内容为 [a,b) or [b,a),将区间内顶点i 权值置为1,求最后顶点权值为0的数量。Input多组测试数据。第一行为两个整数n, m,n(1<=n<=20000)表示顶点, m(1<=m<=50000)表示操作次数。接下来包含m行,每行包含两个正整数 a,b属于区间[1,n] ,意义如上所述。Output每组测试输出一行,包含一个整数,表示顶点值为0的数量。Sample Input3 11 23 11 3Sample Output21解题思路: 一看到这题可能就会容易想到应 阅读全文
posted @ 2013-05-12 10:39 xiaxiaosheng 阅读(238) 评论(0) 推荐(0) 编辑
摘要: Problem Description参加过上个月月赛的同学一定还记得其中的一个最简单的题目,就是{A}+{B},那个题目求的是两个集合的并集,今天我们这个A-B求的是两个集合的差,就是做集合的减法运算。(当然,大家都知道集合的定义,就是同一个集合中不会有两个相同的元素,这里还是提醒大家一下) 呵呵,很简单吧?Input每组输入数据占1行,每行数据的开始是2个整数n(0<=n<=100)和m(0<=m<=100),分别表示集合A和集合B的元素个数,然后紧跟着n+m个元素,前面n个元素属于集合A,其余的属于集合B. 每个元素为不超出int范围的整数,元素之间有一个空格隔开 阅读全文
posted @ 2013-05-12 10:34 xiaxiaosheng 阅读(157) 评论(0) 推荐(0) 编辑
摘要: Problem Description假设一个班有n(n<=50)个学生,每人考m(m<=5)门课,求每个学生的平均成绩和每门课的平均成绩,并输出各科成绩均大于等于平均成绩的学生数量。Input输入数据有多个测试实例,每个测试实例的第一行包括两个整数n和m,分别表示学生数和课程数。然后是n行数据,每行包括m个整数(即:考试分数)。Output对于每个测试实例,输出3行数据,第一行包含n个数据,表示n个学生的平均成绩,结果保留两位小数;第二行包含m个数据,表示m门课的平均成绩,结果保留两位小数;第三行是一个整数,表示该班级中各科成绩均大于等于平均成绩的学生数量。 每个测试实例后面跟一 阅读全文
posted @ 2013-05-12 10:33 xiaxiaosheng 阅读(177) 评论(0) 推荐(0) 编辑
摘要: Problem Description求A^B的最后三位数表示的整数。 说明:A^B的含义是“A的B次方”Input输入数据包含多个测试实例,每个实例占一行,由两个正整数A和B组成(1<=A,B<=10000),如果A=0, B=0,则表示输入数据的结束,不做处理。Output对于每个测试实例,请输出A^B的最后三位表示的整数,每个输出占一行。Sample Input2 3 12 6 6789 10000 0 0Sample Output8 984 1View Code 1 #include<stdio.h> 2 int A,B; 3 int main() { 4 wh 阅读全文
posted @ 2013-05-12 10:32 xiaxiaosheng 阅读(106) 评论(0) 推荐(0) 编辑
摘要: Problem DescriptionAs we know, Big Number is always troublesome. But it's really important in our ACM. And today, your task is to write a program to calculate A mod B. To make the problem easier, I promise that B will be smaller than 100000. Is it too hard? No, I work it out in 10 minutes, and m 阅读全文
posted @ 2013-05-12 10:31 xiaxiaosheng 阅读(115) 评论(0) 推荐(0) 编辑
摘要: Problem Description把一个字符三角形掏空,就能节省材料成本,减轻重量,但关键是为了追求另一种视觉效果。在设计的过程中,需要给出各种花纹的材料和大小尺寸的三角形样板,通过电脑临时做出来,以便看看效果。Input每行包含一个字符和一个整数n(0<n<41),不同的字符表示不同的花纹,整数n表示等腰三角形的高。显然其底边长为2n-1。如果遇到@字符,则表示所做出来的样板三角形已经够了。Output每个样板三角形之间应空上一行,三角形的中间为空。显然行末没有多余的空格。Sample InputX 2 A 7 @Sample OutputX XXX A A A A A A 阅读全文
posted @ 2013-05-12 10:29 xiaxiaosheng 阅读(385) 评论(0) 推荐(0) 编辑
摘要: Problem DescriptionGive you the width and height of the rectangle,darw it.InputInput contains a number of test cases.For each case ,there are two numbers n and m (0 < n,m < 75)indicate the width and height of the rectangle.Iuput ends of EOF.OutputFor each case,you should draw a rectangle with 阅读全文
posted @ 2013-05-12 10:27 xiaxiaosheng 阅读(148) 评论(0) 推荐(0) 编辑
摘要: Problem Description作为杭电的老师,最盼望的日子就是每月的8号了,因为这一天是发工资的日子,养家糊口就靠它了,呵呵 但是对于学校财务处的工作人员来说,这一天则是很忙碌的一天,财务处的小胡老师最近就在考虑一个问题:如果每个老师的工资额都知道,最少需要准备多少张人民币,才能在给每位老师发工资的时候都不用老师找零呢? 这里假设老师的工资都是正整数,单位元,人民币一共有100元、50元、10元、5元、2元和1元六种。Input输入数据包含多个测试实例,每个测试实例的第一行是一个整数n(n<100),表示老师的人数,然后是n个老师的工资。 n=0表示输入的结束,不做处理。Outp 阅读全文
posted @ 2013-05-12 10:24 xiaxiaosheng 阅读(155) 评论(0) 推荐(0) 编辑
摘要: 解题报告:题目大意:现有E、O、F三个字符,给出一个n,n表示有n个位置,这个n个位置都要摆放这三个字符里面的其中的一个字符,摆放的要求是任意两个相邻的位置不能同时出现两个O,问一共有多少种摆法。此题一看就是一道典型的DP题,假设现在给定了一个n,要求n个位置有多少种摆法则可以通过n-1和n-2来得到,具体的方法是先定义的数组DP[45],还是先给出递推公式吧,DP[n]=DP[n-1]*2+DP[n-2]*2,这里分为两个部分,第一个部分表示若第n个位置只放E和F这两种情况的时候,可以直接用n-1个位置的摆放方法直接乘以二便得到当n位置只放E和F的情况数,接下来就要加上当n位置放O时的情况种 阅读全文
posted @ 2013-05-12 10:16 xiaxiaosheng 阅读(153) 评论(0) 推荐(0) 编辑
摘要: 解题报告: 题目大意是输入一个数n,然后输入n个整数,求这n个整数的最小公倍数。此题可以用GCD,即最大公约数,从输入的第一个输入开始,将结果保存,每输入一个整数就将其乘以保存的结果,然后除以保存的结果跟输入的这个输入的最大公约数。附上17行代码。View Code 1 #include 2 in... 阅读全文
posted @ 2013-05-12 02:30 xiaxiaosheng 阅读(104) 评论(0) 推荐(0) 编辑