- 博客(32)
- 收藏
- 关注
原创 POJ 1504反转相加再反转
题意:给定两个数,将两个数反过来相加再反过来思路:先算反正过来的数,然后再相加,然后再转过来就行了。水题……不多废话了……代码如下:#include#includeusing namespace std;int main(){ int n; cin>>n; while(n--) { int a,b,p,q,m1=
2013-08-29 13:13:19 698
原创 POJ 1503 大数相加(持续相加)
题意:非两个大数相加,而是连续的大数相加,直到输入0为此。思路:以前我做过一道是两个数的大数相加,所以有些印象,方法也是一样的。设个字符串数组,然后依次相加即可。还是比较容易的,只是我的代码可能有点长,不太简便吧。不过要注意的是,我提交了一次没过,然后找原因才知道,可以输入的字符串第一个字符也可以为0.比如:012345,而不一定输入的是12345,所以只有当字符串长度为1且为0时才退出。
2013-08-29 12:34:02 652
原创 POJ 1493 算空格
题意:有一个25列N行的矩阵,每一行有左边X,和右边X两个X部分,中间只有一个空白部分,如果将所有行的左边X部分同时向右边移动,直到其中某一行与该行的右边X相碰,问这个时候,整个图形中左边X与右边X之间的空格数量。思路:在输入后,统计每一行空格数目,并且找到最少的那个空格数,然后将每一行的空格数去减去最小空格数得到的差之和,就是解。代码如下:#include i
2013-08-29 10:46:15 605
原创 POJ 1450 最短距离
题意:给出一个n×m的矩阵,每个点可以朝上下左右,还有4个斜着的方向走;问从某点出发,走遍所有的点的最短距离,每个点只能经过一次。画下图就知道了。分奇偶讨论。奇数的时候要走斜着的。代码如下:#include using namespace std;int main(){ int n,i=1; cin>>n; while(n--) {
2013-08-28 23:56:25 693
原创 POJ 1423 求n!有多少位数
思路:10^7次方啊,还要算阶乘的位数……没办法,肯定是用别的方法,很自然的,我想到了算log,只要是10为底的不就是位数了嘛,但是算起来还是和得不到正确的答案,所以百度才知道算n!有这么个强大的公式:一种算法stirling:n!=(2*pi*n)^1/2 *(n/e)^n *e^(a/12*n), log10(n!) = log10(sqrt(2 * pi * n)) + n *
2013-08-28 23:20:32 649
原创 POJ 1401 求n!阶乘末尾有多少个0
题意:简练的说,就是给一个小于10亿的数,算出它的阶乘的末尾有多少个零,思路:这么大的数,要算是不可能的。关键在于,末尾的零跟什么有关,可以从10这一因子是怎么得出的入手,10的约数只有2和5,所以看2和5的个数就可以了,首先,从n!里面所有数相乘中能被2整除的数一定比能被5整除的多,所以,问题又简化为n!中有多少个5的倍数了。所得的因子5的个数就是n!的末尾零的个数。代码如下:
2013-08-28 22:58:12 692
原创 POJ 1326 算里程
简单题,但是注意下提示:When calculate bonus ,be sure you rounded x.5 up to x+1,需要四舍五入。代码如下:#include#includeusing namespace std;int main(){ string a; int sum=0; while(cin>>a&&a!="#")
2013-08-28 22:37:13 706
原创 POJ 1316 Self Numbers
题意:先给出一个定义如下: d(75) = 75 + 7 + 5 = 87,称75是87的生成者,没有生成者的数称为Self-Number,如 1、 3、 5、 7、9、20、 31、 42、53、64、75、86、97。要求按递增的顺序输出大于0小于10000的所有Self-Number。思路:这题其实挺简单的,标记下谁是谁不是就行了。代码如下:#include#includ
2013-08-28 18:03:17 624
原创 POJ 1298 解密
简单题。代码如下:#include#includeint main(){char n[205];while(gets(n)){if(strcmp(n,"START")==0||strcmp(n,"END")==0) continue;else if(strcmp(n,"ENDOFINPUT")==0) break;else{ int i,l;
2013-08-28 17:10:09 785
原创 POJ 1256 全排列
题意:重要的是这句话:An upper case letter goes before the corresponding lower case letter. So the right order of letters is 'A'思路:刚开始我确实想用next_permutation(b.begin(),b.end())了,但是发现 'A'代码如下:#include#inc
2013-08-28 16:10:06 973
原创 POJ 1218开关问题
题意:一个监狱看守员喝醉了酒,于是把监狱每扇门都打开(假设有n扇门);然后再从1号门开始,隔一扇关一个门(把2的倍数的门关掉);接着再从1号门开始,隔2扇操作一个门(操作3的倍数的门,原来是开的关掉,关着的则打开)。这样一直操作到n的倍数,问最后有多少扇门是打开的。思路:即可是哪个的位数就取反态,最后统计开着的就得了。代码如下:#include #include using n
2013-08-28 14:38:18 714
原创 POJ 1247
纯粹水题。代码如下:#include #include using namespace std;int main(){ int n; while(cin>>n&&n) { int i,a[31],q=0; for(i=0;i { cin>>a[i];
2013-08-28 12:51:55 664
原创 POJ 1207水题
题意:题目首先给出一个循环公式,对于一个整数n,当n为奇数时,n=3n+1,当n为偶数时,n=n/2,如此循环下去直到n=1时停止。现题目要求对任意输入的两个整数i、j,输出i、j之间(包括i、j)的所有数进行上述循环时的最大循环次数(包括n和1)。思路:水题但是确实中了陷阱了,唉,比较i,j然后交换以后就错了,题目要求原样输出,果断中了陷阱…………改为一输入就输出就对了……难过…………
2013-08-28 12:19:05 743
原创 POJ 3176与1163同一道题,只是n不同而已
改下1163题代码中的数组中的n即可AC。代码如下:#include using namespace std;int a[350][351];int main(){ int i,j,n; cin >> n; for(i=0;i for(j=0;j cin >> a[i][j]; for(i=n-2;i>=0;i--
2013-08-28 11:26:28 632
原创 POJ 1163 最佳路径简单DP
思路:找出最佳路径,使其和值最大,逆向找出最大值,往前推比较简单。此题较为容易,动态规划的简单的题。代码如下:#include using namespace std;int a[101][101];int main(){ int i,j,n; cin >> n; for(i=0;i for(j=0;j cin >> a[
2013-08-28 11:19:43 901
原创 POJ 1146 字符串的下一个全排列
思路:求出字符串的下一个全排列。刚开始想歪了,然后才记得用STL中algorithm库中的next_permutation函数,然后就搞字,很简单。代码如下:#include #include #include using namespace std;int main(){string a;while(cin>>a&&a!="#"){if(next_perm
2013-08-28 00:40:48 791
原创 POJ 1083移动桌子用时最少
题意:有400个房间,现在要搬一些物品,从room a到roomb 一次搬运需要时间是10分钟,且此次搬运期间room a和room b前的走廊是一直占用的,如果其他的搬运也要经过这些走廊,则它们不能同时进行,互不干扰的搬运可以同时进行。给出一组room a 到room b 问如何安排使搬运时间最小。思路:运用结构体,然后排序,从小到大取最优解就可得到答案。但是这题我做了3个小时了,看起来简单
2013-08-27 00:22:37 627
原创 POJ 1068 括号匹配问题
思路:用模拟法,匹配成功的时候就输出就行了。代码如下:#include#includechar s[100];int p[100],r[100],w[100];int main(){int i,n,t,j;scanf("%d",&t);while(t--){scanf("%d",&n);memset(s,'(',sizeof(s));mems
2013-08-26 19:13:13 800
原创 POJ 1047
题意:判断一个数是不是循环数。思路:最大的数为60位,故为高精度的计算,用字符数组做即可。处理这个地方有个小技巧、就是在这个数字的后面再加上一遍。以142857为例子,就是判断乘积数是否在142857142857字串中即可。比较简单;但是我提交了几次都WA,不知道怎么原因,看了错误的原因才知道字符串的倒转函数strrev函数不得用,又自己做了个解决才得AC,总的来说还是比较简单的,但是编程量大
2013-08-26 13:15:56 710
原创 POJ 1046
题意就是找出16个中与之公式最小的那个出来,用结构体数组很容易就可以做出来了,不多说了,水题一道。代码如下:#include#includeusing namespace std;struct abc{ int x,y,z;}a[17];int main(){ int i,j,k,x,y,z,sum; for(i=0;i
2013-08-26 00:05:31 625
原创 POJ 1045
这题纯粹的数学计算,不过我虽然亲自算了一下,刚开始还真是有点困难滴,三角函数换来换去最后算错了;然后对了以后在提交又出问题了,编的内容是一样的,用C++提交就WA,而用C语言提交就AC了,现在还没明白什么回事,晕了,不过还是AC了。代码如下:#include stdio.h>#include math.h>int main(){ int i,n; doubl
2013-08-25 23:43:02 702
原创 POJ 1028
题意:现对浏览器进行4种操作:后退、前进、转到某一网址、退出。要求对退出以外的每种操作,输出该操作执行后浏览器当前网站的网址。其中定义浏览器首页为http://www.acm.org/。思路:用字符串的一维数组即可解决。但是注意每拜访一个网站,此后的网站就作废了,此网站就是最后一个,即在后退与前进操作中时刻改变最后一个网站的下标。在输入网站的操作中,用一个变量标记输入网站的下标,以便在前进中判
2013-08-25 19:45:29 619
原创 POJ 1013 Counterfeit Dollar
题目:有12枚硬币(标记为A-L),其中有1枚是假币,但不知道假币比真币更轻或更重。Sally借助于天平,设计出一种方案,可以恰好三次测量出谁是假币、比真币更轻或更重。要求你帮助Sally,根据她的测量数据,计算出谁是假币、比真币更轻还是更重。例如一组测量数据为:ABCD EFGH evenABCI EFJK upABIJ EFGH even注意:天平左右的硬币数量
2013-08-22 11:21:29 710
原创 POJ 1008 玛雅日历
题目:玛雅使用两种日历,第一种称为Haab,一年为365天,一年分为19个月,前18个月每个月都是20天,第19个月为5天,每一个月都有一个名字,分别为pop, no, zip, zotz, tzec, xul, yoxkin, mol, chen, yax, zac, ceh, mac, kankin, muan, pax, koyab, cumhu和uayet,每个月份中的天数用0到19表
2013-08-22 10:12:54 1156
原创 POJ 1007 DNA 排序
题意:分类DNA字符串(只有ACGT四个字符)。但是分类它们的方法不是字典序,而是逆序数,排序程度从好到差。所有字符串长度相同。解题思路:第一感觉就是用结构体数组,结构体中存字符数组和这个字符数组的逆序数。然后用两个for循环求逆序数即可。刚开始编完提交WA,仔细看题目才记得是稳定排序,所以把sort改为stable_sort即可实现稳定排序。编写一个判断的函数使逆序数从小到大排序,最后从头到
2013-08-21 23:42:08 818
原创 POJ 1006
题意:即求三个同时发生时,即周期。再结合中国剩余定理算法,可求出。比较容易,只要理解中国剩余定理就好解了。代码如下:#include#includeusing namespace std;int main(){ int s,p,e,i,d,num=0; while(scanf("%d%d%d%d",&p,&e,&i,&d)&&p!=-1&&e!=-1&&
2013-08-21 19:32:51 534
原创 POJ 1005
这题容易,所以题意不说了。说说个人感觉吧,刚开始我已经编对了,但是交了多次改了多次,还是WA,我看都快无语了,后面检查了不下10次,才看出输出的时候少了个句号,简直无语完,ORZ……代码如下:#includeusing namespace std;int main(){ int t,i; cin>>t; for(i=0;i {
2013-08-21 11:13:50 561
原创 POJ 1004
题意:这题就是求浮点数的平均值,纯粹数学计算。代码如下:#include#includeusing namespace std;int main(){ double sum=0,n; for(int i=0;i { scanf("%lf",&n); sum+=n; } printf("$%
2013-08-21 00:28:00 583
原创 POJ 1003
题意:纯粹的数学运算,阶加大于所输入的值即可得答案,以前在COJ练这种题目太多了,太容易不累赘讲废话了。代码如下:#include#includeusing namespace std;int main(){ double t; while(scanf("%lf",&t)&&t!=0.00) { int i;
2013-08-21 00:25:43 654
原创 POJ 1002多重映射:map的用法
487-3279Time Limit: 2000MS Memory Limit: 65536KTotal Submissions: 219752 Accepted: 38302DescriptionBusinesses like to have memorable telephone numbers. One way to
2013-08-21 00:21:26 876
原创 假期小结
暑假其实没什么刷题,也不知道刷了多少道,反正记得没刷多少题;因为在学校的时候觉得和别人的C++解题能力相差太大,所以回来专攻C++中的STL,结合算法竞赛入门经典那本书,然后自己做的练习题,因此并没刷题。现在也对STL有了较多的认识与应用,但毕竟STL有很多函数,还没完全的应用完,而且还在攻克中。所以我想学会STL中的函数和所教的算法以后再进行针对性的刷题。 对于以后的发展方向:当然是把
2013-08-19 13:16:11 1113
原创 hdu 1392求凸包(即求包围所有树的最短距离)
1392题意:给出多组数据,每组数据包含横纵坐标,即树的位置,然后求出包围所有树的最短距离。个人心得:由于第一次写博客心得,所以可能格式有太会写。本题最重要的是彻底理解凸包的概念,还有一些实际应用中的处理,因为刚开始没有理解清楚,所以误入歧途,搞了好久才AC,因为刚开始接触较高深的算法,所以理解起来有些困难,但是把算法弄明白也就解决了。思路:在所有点中选取y坐标最小的一点P0。然后按照其它
2013-08-17 23:15:52 991 2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人