![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ACM
hackerain
这个作者很懒,什么都没留下…
展开
-
PUK1016 Numbers That Count 的解法
<br />这是我在网上搜的代码,因为我实在不会写,想了好几天都没有想出来。费了好大劲,终于看懂了人家的代码,看完之后我真的好感动,这么好的代码是谁写出来的啊,思路设计的那么严密又恰到好处,似乎没有一点的多余的代码,程序简洁干脆。我真是佩服!我还处于学习阶段,人家的好代码,我就得向人家学习,吸取其中的精华,加以消化吸收,加上自己的理解,让它变成我自己的东西,以促进我的成长。下面就是我对这段代码的理解,真的很精辟啊!<br /><br />#include<iostream><br />#include<st转载 2010-07-06 22:21:00 · 830 阅读 · 2 评论 -
杭电ACM Steps 第一题,a+b,java实现
开始在杭电上做题了,做ACM的题,不是为了要参加竞赛,纯属练手和锻炼思维。因为想锻炼自己的java水平,所以用java做题,既练习了java语法,又练习了算法。而且那个ACM Steps挺有意思的,就决定在这里闯关!不过做的第一道a+b的题,就遇到点小小的问题,毕竟以前一直用原创 2011-09-03 23:59:28 · 7618 阅读 · 2 评论 -
1270 小希的数表
这道题我做了很久啊,最终还是参照别人的代码,终于AC过了,主要是我理解错误,导致程序总是过不了。还有应该注意的问题就是一定要看清题目中的要求,尤其是输出格式,否则会WA的很惨!思路:是用一个递推的思想,在给出的数据中(假设存储到s数组中),最小的肯定是a1+a2,第二小的是a1+a3,第三小的就不确定了,为了能确定a1,a2,a3的值,我们就对a2+a3进行枚举,它的位置的范围为3~n(0位置不用),则根据方程组能求出a1,a2,a3,然后把这三个数两两之和,在s中去掉,剩下的第一个数是剩下的数中最小的,则原创 2011-04-16 13:43:00 · 3080 阅读 · 1 评论 -
1323 Game Prediction
<br />这个题是用枚举+贪心的思路:<br />1、把自己的牌从大到小进行排序,存储到a数组里,然后把不是自己的牌,也从大到小,进行排序,存储到b数组里。<br />2、对自己的牌从大到小进行枚举,若当前的牌大于b中最大的牌,则这张牌是必赢的。若当前的牌小于b最大的牌,则这张牌不是一定赢的,然后枚举a中下一个元素,和b的下一个元素进行比较,循环下去……<br />源代码:<br />#include "stdio.h"#include "string.h"#include <algorithm>原创 2011-04-14 18:55:00 · 882 阅读 · 0 评论 -
用辗转相除法求两个数的最大公约数
<br /> 早在公元前300年左右,欧几里得就在他的著作《几何原本》中给出了高效的解法--辗转相除法。辗转相除法使用到的原理很聪明也很简单,假设用f(x, y)表示x,y的最大公约数,取k = x/y,b = x%y,则x = ky + b,如果一个数能够同时整除x和y,则必能同时整除b和y;而能够同时整除b和y的数也必能同时整除x和y,即x和y的公约数与b和y的公约数是相同的,其最大公约数也是相同的,则有f(x, y)= f(y, x%y)(y > 0),如此便可把原问题转化为求两个更小数的最原创 2011-04-16 21:56:00 · 1845 阅读 · 0 评论 -
1042 Gone Fishing(枚举+贪心)
<br />思路:枚举湖的个数,然后贪心选择鱼最多的湖。<br />在枚举湖的个数时,先把湖之间“奔走”的时间单独算出来,用总的时间减去“奔走”的时间,就是纯粹钓鱼的时间。然后再算出总的钓鱼的次数,对每次钓鱼选择鱼最多的那个湖钓,这样算出来的就是钓的最多的鱼的方案。<br />注意一些细节:<br />1、题中要求的是当湖中鱼的个数相等时,就在湖的编号小的湖中钓。<br />2、当全部的湖中,鱼都钓完了,就在第一个湖中钓。<br />下面是源代码:<br />#include "stdio.h"#inc原创 2011-04-13 23:25:00 · 753 阅读 · 0 评论 -
3536 Beer Refrigerator
<br />这个题虽然看起来挺简单,但是想做好,但需要一定的功夫积累,才会觉得简单,这个是别人的代码,我觉得挺好的,贴过来,算掌握一种思路:<br />#include <iostream>#include <cmath>using namespace std;int main(){ //freopen("in.txt","r",stdin); int i,j,k,n,m=1000000000; int mi,mj,mk; cin>>n;原创 2011-03-30 21:13:00 · 798 阅读 · 0 评论 -
2028 When Can We Meet?
<br />这个题虽然挺简单的,但是这个题的思路挺好的,有必要记下来。思路是:将每个人的日期记在一个一维数组里,求得每个日期有多少人参加,从该数组中找第一个最大的值,并且该值必须大于q,则该值就是所要求的值,如果没有这样的值,就输出0。代码如下:<br />#include "stdio.h"#include "string.h"int main(){ freopen("in.txt","r",stdin); int n,q; int i,j,k; int m[101]; w原创 2011-03-29 20:41:00 · 1000 阅读 · 0 评论 -
2665 Trees 水题
<br />水题就不多说了:<br />#include "stdio.h"int main(){ //freopen("in.txt","r",stdin); int l,m; int i; int sum; int start,end; while(scanf("%d%d",&l,&m) && (m!=0)) { sum=0; for(i=0;i<m;i++) { scanf("%d%d",&start,&end); sum+=end原创 2011-03-24 19:04:00 · 600 阅读 · 0 评论 -
poj 1018 Communication System(枚举+贪心)
<br />这个题的思路还是在网上看一位学姐的,但稍稍按我的思路改了一下,让循环的次数减少了很多,我以为这样执行的时间会少一点,可是没想到,我把两个程序都提交了一下,那位学姐的代码时间是47ms,而我改之后的竟然是500多ms,我这就不是很理解了,可能是因为我用了一个排序,排序要花去很多时间,所以多了好几百!<br />我的思路:将输入的宽带值,进行升序排序,然后对宽带从小到大一一进行枚举,对宽带的每一个值,在价格里贪心的选择最小的(注意:选最小的价格,要先满足和该价格相对应的宽带值,比当前的宽带值大或等于原创 2011-03-23 19:55:00 · 797 阅读 · 1 评论 -
JAVA在ACM中的使用
<br /><br />Chapter I.<br />Java的优缺点各种书上都有,这里只说说用Java做ACM-ICPC的特点:<br />(1) 最明显的好处是,学会Java,可以参加Java Challenge <br />(2) 对于熟悉C/C++的程序员来说,Java 并不难学,找本书,一两周业余时间就可以搞定了。当然,这里只是指一般编程,想熟悉所有的Java库还是需要些时间的。事实上,Java 只相当于C++的一个改进版,所有的语法都几乎是C++的,很少有变动。 <br />(3) 在一般转载 2011-03-20 17:16:00 · 867 阅读 · 1 评论 -
2182 Lost Cows
<br />这个题比较简单,关键是找到思路,问题便迎刃而解。下面是思路:<br />我们应该根据所给的数据,从后往前找牛,假如最后一头牛的前面有a个编号比它小的,那么它的编号就肯定是a+1。然后把找到的牛从原先的“牛队”中删去。再找倒数第二头牛,假如它前面有b个编号比它小的,那么,它的编号肯定就是剩下的牛的牛的第b+1个,然后再把该牛删除,以此类推……<br />下面是代码:<br />#include <iostream>using namespace std;#define N 8000in原创 2011-03-19 14:43:00 · 710 阅读 · 0 评论 -
1321 棋盘问题 对深度优先遍历(DFS)的初步理解
这是一个深度优先遍历的问题,运用到递归,递归这个东西啊,真的是说简单也简单,说复杂也复杂,关于DFS的应用是很广的,我理解的不是很深,以前学数据结构时,对图的深度优先遍历是理解了,我以为DFS就这样用,甚至以为,DFS只能再图里用,现在碰到很多DFS的题,我却一筹莫展,才明白了,DFS这么有用,而且不止在图里用,之所以我对别的题型不会做,是因为对DFS理解不深,不会灵活应用,在这里,借助这个题,对DFS的思路做一次比较清晰的“理顺”。题意就不说了,直接借助一个具体的例子,说一下遍历的思路和过程。例子:4 2原创 2011-03-17 00:50:00 · 1383 阅读 · 0 评论 -
1664 放苹果
解题思路:我们不妨令f(m,n)表示m个苹果放到n个盘子里有多少种放法,下面对不同的情况给予讨论:(1):当盘子数为1的时候,只有一种放法就是把所有苹果放到一个盘子里。(2):当苹果数为1的时候,也只有一种放法,注意题目中说明,盘子之间并无顺序,所以不管这个苹果放在哪个盘子里,结果都算一个。(3):当m=n时,也分两种情况讨论,一种是至少有一个盘子里不放苹果,这样子就相当于f(m,n-1),第二种是,先取出n个苹果一个盘子里放一个,再将剩下的m-n个苹果放到n个盘子里去,即f(m-n,n);综上所述:得到原创 2011-03-14 13:12:00 · 1330 阅读 · 2 评论 -
1046 Color Me Less
<br />这个题挺简单的,就是题意不是很好理解,该题就是说白了就是:给你(16+n)组颜色值(我的意思是一组颜色值即一个RGB),让你为后n组颜色值的每一组颜色,在前16组中,找一个和它最相近的颜色值。我的代码如下:<br />#include <iostream>#include <cmath>using namespace std;int PosOfMin(double b[],int n){//求数组中,最小的数值所在的位置 int i,pos=0; double min=b原创 2011-03-05 21:47:00 · 916 阅读 · 0 评论 -
1008 Maya Calendar
<br />这道题貌似看上去很难,可是却是纸老虎。只要想到一点,问题便迎刃而解:把Haab日历,转换成天数,再根据天数,来求Tzolkin日历的日期,转换成的天数,是两个日历的纽带,代码如下:<br />#include <iostream>#include <string>using namespace std;int main(){ //freopen("in.txt","r",stdin); string c[19]={"pop", "no", "zip", "zotz", "原创 2011-03-04 23:21:00 · 848 阅读 · 0 评论 -
POJ 1308 Is It A Tree?
这是我做出来的第一道有含量的ACM题,应该好好总结一下!这道1308的题,其实很简单,只要抓住了树的特征,就可以解出来。我的解法的思想是这样的:树的分支数m和树的结点数n有一个关系:n==m+1,只要抓住了这个特征,问题便可迎刃而解!源代码:#include#includeint a,b,m=0,n=0,k=0;int i;int main(){int jd[10000];memset(jd,-1,40000);//将数组jd[]所有元素,初始化为-1。while(scanf("%d%d",&a,&b)){原创 2010-07-21 02:06:00 · 825 阅读 · 0 评论 -
1477 Box of Bricks
水题,如果说做这个题有什么目的的话,可能就是告诉你要仔细读题,看清楚题目的要求,否则会白白的WA几次啊:#include "stdio.h"int main(){ //freopen("in.txt","r",stdin); int t,num=0,sum,ave,r原创 2011-03-24 19:07:00 · 1036 阅读 · 0 评论