ACM
静-静的雪
想要不一定得到一定要则必成功。注:此博客已年久,是自己早年的笔记,不在维护状态,不能回复大家的评论。博文内容,或有错误之处,仅供大家参考,不提供源码。
展开
-
HDU题目分类
hdu题目分类1001 整数求和 水题1002 C语言实验题——两个数比较 水题1003 1、2、3、4、5... 简单题1004 渊子赛马 排序+贪心的方法归并1005 Hero In Maze 广度搜索1006 Redraiment猜想 数论:容斥定理1007 童年生活二三事 递推题1008 University 简单hash1009 目标柏林 简单转载 2014-08-21 12:49:37 · 2163 阅读 · 0 评论 -
NYOJ 455题 黑色帽子
如此怪异的题目!当n = 1时,A见所有人都是白色帽子,知道自己是黑色的,第一次关灯后自己打自己;当n = 2时,A见B戴黑色帽子,B见A戴黑色帽子,所以,第一次关灯AB都不会自己打自己,再开灯后,AB都没有听到耳光声,就会知道,自己也戴了黑色帽子,所以第二次关灯后,AB都自己打自己;当n = 3时,ABC,A见BC都带黑色帽子(BC也是同样的想法),第一次关灯,没有耳光声,开灯后,A原创 2013-08-18 09:50:54 · 920 阅读 · 0 评论 -
NYOJ 414题 Sky number
输入是10进制四位正整数,很好操作,分别将其转化为16进制,12进制。如果10 ,16, 12,进制,各个位上的数字之和相等,是sky number;否则,不是。原创 2013-08-18 09:17:53 · 552 阅读 · 0 评论 -
关于浮点数
浮点数:在计算机中用以近似表示任意实数,是一个近似值,也就是一个值可能表示一个范围区间,这种表达方式使得对于浮点型采用相等的判断方式进行判断可能不合理,只有通过比较一个数是否在这个较小的范围。参考链接:点击打开链接原创 2013-08-18 13:55:05 · 609 阅读 · 0 评论 -
NYOJ 594题 还是A+B
如果利用一个scanf函数输入多个字符串,则以空格分隔。char str[13];scanf("%s", str);输入: How are you?输出:How以加号“+”为界(未完)原创 2013-08-28 21:01:00 · 1234 阅读 · 0 评论 -
NYOJ 400题 I'll play a trick on you
比较坑的一道题,一定要把图看完!!!看完图后,在草稿纸上把所有的数都列出来,就会发现,第三个数是前两个数各个位之和。但是0 同时,还要注意,getchar。(1)错误代码:(2)AC代码:原创 2013-08-18 08:09:12 · 708 阅读 · 0 评论 -
NYOJ 312题 20岁生日
题意弄不清不好做。1.没有20岁生日:指在2月29号出生,但20年后的那一年是平年,即2月没有29号,所以没有20岁生日。2.分段计算。[y + 1,y + 19]第y年 :(m,12]第(y + 20)年:[1,m)m 月的天数。对第y年和第y + 20年分开判断。若m是1,3,4,5,6,7,8,9,10,11,12,很好判断,只需知道y,y + 20分别是闰年还是原创 2013-08-18 21:26:14 · 936 阅读 · 0 评论 -
NYOJ 464题 Cookies
memset(n, 0, sizeof(n));结构体,竟然可以,哦吼吼!struct number{int num;//记录pre的个数;int jo;//记录奇偶性;int pre;//记录a[i]中的元素;}n[110] = {0};先排序,并求出所有元素的总和;然后,再存入数组n中,同时记录n中元素的属性(元素,元素的个数,元素的奇偶性)‘;最后原创 2013-08-18 12:57:06 · 550 阅读 · 0 评论 -
NYOJ 463题 九九乘法表
原创 2013-08-18 10:39:32 · 822 阅读 · 0 评论 -
NYOJ 354题 Stripies
思路:1.对所有输入的数排序;2.利用题目的公式:r = 2 * sqrt ( m1 * m2),每两个碰撞后产生一个,再与下一个碰撞。其中,r = 2 * sqrt(2 * sqrt(a * b) * c),当c是a,b中的最小数时,r最小。原创 2013-08-17 19:42:24 · 817 阅读 · 0 评论 -
NYOJ 399题 整除个数
原创 2013-08-17 17:31:39 · 737 阅读 · 0 评论 -
NYOJ 283题 对称排序
理解这道题的意思本身不难,知道要先排序,再对称输出。但题目上说,对于相同长度的要按照原来的顺序输出,由于开始时我用了选择排序,而选择排序具有不稳定性,导致相同长度的顺序有时会发生改变,所以没有AC,后来改成冒泡排序(是稳定排序)之后,就AC了。在对称输出的时候,先是每隔一个输出一个,然后再根据奇偶数,倒着输出。(1)错误代码:(2)修改后的代码:原创 2013-08-17 09:58:26 · 703 阅读 · 0 评论 -
NYOJ 590题 相同的和
题目上是连续字符串,但要注意的是,比如数列:6 6 1 2 3 3 4 2,连续字符串是{1,2,3},{3,3},{4,2},也就是说,前一个用了的,后面的还可以用,允许有交集。错误代码:正确代码:用两个循环(模仿选择排序的循环)来控制;s > m和s ==m要注意跳出循环。原创 2013-08-28 15:38:18 · 763 阅读 · 0 评论 -
NYOJ 371题 机器人二
思路:1.计算总的'L','R',的个数,确定方向;2.每循环一次时,若有字符'M',计算一次‘L’,'R'的个数,来确定x,y,坐标的变化。原创 2013-08-17 18:23:52 · 552 阅读 · 0 评论 -
NYOJ 278题 排队
使用链表。1.循环链表;2.删除结点。需要知道:1.如何创建链表?要定义三个指针变量,head,待插入指针,尾指针;先置指针为空;再添加结点。2如何删除结点?定位要删除的结点;改变前一个结点,从而使它“绕过删除”结点;调用free函数收回删除结点所占用的内存空间。原创 2013-08-16 19:51:38 · 589 阅读 · 0 评论 -
NYOJ 275题 对花的烦恼一
辗转相除原创 2013-08-16 10:38:44 · 470 阅读 · 0 评论 -
NYOJ 270题 数分解
思路:1.“0”,输出“10”(开始时就错在这个地方了);2.“1-9”,直接输出;3.N >= 10时的所有素数:输出“-1”;4.N>=10时除素数之外的数:拆“N”,找出2,3,5,7的个数。只计算2,3的个数的特殊情况即可(5,7无法组合,直接输出即可)2-23-32,3-62,2-43,3-92,2,3-262,3,3-292,2,3,原创 2013-08-16 10:21:30 · 585 阅读 · 0 评论 -
NYOJ 276 题 比较字母大小
做差比较。注意回车键,空格键。回车键要用getchar接收来抵消掉。另外,还要注意比较大小的规则。原创 2013-08-16 11:00:17 · 549 阅读 · 0 评论 -
NYOJ 458题 小光棍数
__int64输出格式:%I64d, I是大写的i;long long输出格式是:%lld, l是小写的L。题目上m 只要是后三位是471结尾的数,都是光棍数。(1)AC的代码:(2)VC6.0通过的代码:原创 2013-08-18 10:25:06 · 1139 阅读 · 0 评论 -
NYOJ 477题 A+B Problem III
错误代码:正确代码:原创 2013-08-18 13:44:12 · 567 阅读 · 0 评论 -
NYOJ 128 前缀式计算
#include#include#include#include#define MAXSIZE 1010typedef struct stack{ double data[MAXSIZE]; int top;}Stack;void init_stack(Stack *s);int stack_full(Stack *s);int stack_empt原创 2013-10-01 10:21:28 · 753 阅读 · 0 评论 -
(转)sort && qsort
qsort功 能: 使用快速排序例程进行排序 用 法: void qsort(void *base, int nelem, int width, int (*fcmp)(const void *,const void *)); 参数:1、待排序数组首地址; 2、数组中待排序元素数量; 3、各元素的占用空间大小; 4、指向函数的指针,用于确定排序的顺序 比如:原创 2014-07-22 20:13:51 · 647 阅读 · 1 评论 -
NYOJ103 A+BProblemII(大整数加法)
NYOJ103特别值得注意的一点:在求本位和进位位时的顺序问题。因为要计算一个大数的位数,所以max的计算影响了他们的顺序。 #include#include#includechar A[1005],B[1005];int N;int a[1005], b[1005], sum[1005];void bigmulty_add();//char A[], ch原创 2014-03-21 19:52:40 · 869 阅读 · 0 评论 -
快速幂&&取余(NYOJ420、105、205)
快速幂&&分解取余&&对用字符串表示的数字取余核心问题:如何解决大数取余?首先了解模运算的性质(详细见:http://baike.baidu.com/view/2385246.htm?noadapt=1)(a + b) % p = (a % p + b % p) % p (1)(a - b) % p = (a % p - b % p) % p (2)(a * b原创 2014-03-21 19:50:27 · 728 阅读 · 0 评论 -
NYOJ 488 素数环
题目:http://acm.nyist.net/JudgeOnline/problem.php?pid=488思路:“全排列”思想。以“6”为例,1 4 3 2 5 61 6 5 2 3 41.上面两组可以构成素数环,所谓“环”, 即循环,只取出全排列中以1开头的那部分就可以,换句话说,对2-6进行全排列就可以了。2.“素数”,每两个的和必须是素数,注意素数的原创 2013-11-11 00:40:03 · 895 阅读 · 0 评论 -
N皇后
全排列思想先以八皇后为例来说:在棋盘上放置八个皇后,使得他们互不攻击,此时每个皇后的攻击范围为同行同列和对角线,要求找出所有的解。分析:8行8列,以行来看,每行必有一个皇后,去看将每行的那个皇后放在哪个位置不会有列冲突和对角线冲突。因为每一列有且仅有一个,所以可以生成关于一个“列”的全排列。分析一下坐标(i, j)的关系:右对角线的范围,即: j - i,是-7~7;原创 2013-11-11 01:15:41 · 705 阅读 · 0 评论 -
NYOJ 325zb的生日
#include#include#include//#includeint N;double a[25];double min, total;void arrange(int cur, double sum);int main(void){ while(scanf("%d", &N) != EOF) { int i; memset(a, 0, sizeof(a))原创 2013-11-14 11:36:02 · 531 阅读 · 0 评论 -
NYOJ 21题 三个水杯
http://acm.nyist.net/JudgeOnline/problem.php?pid=21这是一道广搜的题目, 也是我做的第二道广搜题目。广搜要记住两点:1.扩展的节点2.扩展规则构建解答树, 用队列实现。1.三个水杯,是大小不一的,初始状态,0号杯子满的,1号2号是空的。2.0->1, 0->2; 1->0, 1->2; 2->0, 2->1;原创 2013-11-29 01:01:31 · 715 阅读 · 0 评论 -
HDU 1548 AStrangeLift
http://acm.hdu.edu.cn/showproblem.php?pid=1548这是一道广搜的题目。刚开始的时候,还在犹豫深搜可不可以,后来注意到“If you can't reach floor B,printf "-1".”,并且,深搜使用递归寻找递归的边界也不好找,所以,就决定使用广搜了。在写广搜的时候,出现了几个错误:1.误认为,这个电梯可以“来回”,而实际上,电梯原创 2013-11-30 00:58:31 · 659 阅读 · 0 评论 -
NYOJ 2 括号配对问题
#include#include#include#define MAXSIZE 10005typedef struct stack{ char c[MAXSIZE]; int top;}Stack;void init_stack(Stack *s);int stackfull(Stack *s);int stackempty(Stack *s);vo原创 2013-10-01 11:00:52 · 580 阅读 · 0 评论 -
HDU 2046骨牌铺方格
http://acm.hdu.edu.cn/showproblem.php?pid=2046画图,找规律, 发现是:斐波那契注意类型用的是__int64, 输出格式:大写的i后面加上64d, __int64是2的63次方 - 1;longlong类型,输出格式是lld,小写的L;使用递推的方法计算斐波那契数列;#include#include#include__int原创 2013-11-30 01:07:05 · 629 阅读 · 0 评论 -
重建二叉树NYOJ221题 && NYOJ756题
(一)前序中序求后序:思路:结点 getRoot(前序 中序){c = 前序第一个字符;pos = 在中序的位置;len1 = 中序pos左半部分长度;len2 = 中序pos右半部分长度;新建结点 r,令r的元素等于c;r 的左儿子 = getRoot(前序位置开始的len1长度部分,中序pos位置左半部分)r 的 右儿子 = getRoot(前序位置l原创 2013-11-23 23:18:01 · 666 阅读 · 0 评论 -
NYOJ 58 最少步数
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=58(一)深搜法:1.递归的边界:走到终点坐标, 即(x == x2 && y == y2);2.递归进行的条件:for循环的 4个方向(定义了一个方向数组move)进行递归:判断条件:若为路 && 未标记 && 不越界, 则继续递归;即(A[x][y] == 0 &原创 2013-11-14 11:03:54 · 703 阅读 · 0 评论 -
漫谈斐波那契数列与黄金分割比
(一)斐波那契数列:1, 1, 2, 3, 5, 8, 13, 21, 34, 55,89,,144......即前两项是1, 1,后面的每一项是前面两项的和。1.自然中的斐波那契数:花瓣的数目,树杈, 菜花,松子, 向日葵里面的对数线原创 2014-01-28 22:56:48 · 12292 阅读 · 0 评论 -
NYOJ 169题 素数
#include#includeint isprime(int m);//方法一int main(){ int T; scanf("%d", &T); while(T --) { int X, i, j; scanf("%d", &X); if(isprime(X)) printf("%原创 2013-08-02 18:28:44 · 854 阅读 · 0 评论 -
由“K尾相等数”引出来的k的m次方取余(大整数取余)&& 快速幂
这几天真是愁死我了~~~唉!废话少说,先整理下思路吧:先说一句“积的取余 = 取余的积的取余”,后面也许会用得到。1.我的想法开始于两个数相乘取余。27*45 % 7=1215%7=4。27*45%7=(3 * 7+6)*45 %7=(3*7*45+6*45)% 7=[ 3*7*45+6*(6*7+3)] % 7=(3*7*45+6*6*7+6*3) % 7=6*3%7=4原创 2013-08-05 12:45:38 · 1023 阅读 · 0 评论 -
NYOJ 112题 指数运算
一波三折。开始,很高兴,以为会用到刚学的快速幂,后来发现不对,乘积太大会溢出,把类型改成__int64之后提交,出现编译错误,也就是NYOJ不识别这个类型,学长建议,换成long long,输出格式:%lld,两个小写的L;注意,__int64的输出格式:%I64d,是大写的i.关于这个的具体的一些介绍,网址链接:http://blog.csdn.net/shiwei408/article/det原创 2013-08-06 00:24:00 · 778 阅读 · 0 评论 -
NYOJ 155题 求高精度幂
这道题,是我目前写的行数最多的一道题(本人水平有限,写得比较菜),第一次超过100行了,哈哈,有点自嘲的意味。首先,总体上要有一个思路,从样例中看出,位数很多,正常的一些类型肯定不能表示出来,我选择了字符串来接收所谓的R,将它的每一位在放到数组里面。想想,乘法怎么去实现。实数,考虑到有小数点,那么就要确定小数有多少位;#include#include#includeint ma原创 2013-08-08 17:36:24 · 792 阅读 · 0 评论 -
NYOJ 277题 车牌号
思路:1.比较字符串的大小,strcmp;2.字符串之间赋值,strcpy;3.输出一个字符串:printf("%s", str);或者puts(str);(在输出时将字符串结束的标志‘\0’转换成'\n',即输出完字符后换行)。原创 2013-08-16 11:50:44 · 1107 阅读 · 0 评论 -
NYOJ 268题 荷兰国旗问题
主要利用了字符串,用一个字符数组接收整个字符串,然后每个字符串分别去判断“R”“W”“B”,再分别存到3个字符数组中去,最后分别输出。原创 2013-08-13 17:52:12 · 1047 阅读 · 0 评论