ACMer
计算机的感性面
努力再努力
展开
-
HDU Text Reverse
题目传送门: http://acm.hdu.edu.cn/game/entry/problem/show.php?chapterid=1§ionid=2&problemid=5 本题策略是使用一个字符数组来保存一行的所有字符,然后倒序输出即可。#include<stdio.h>#include<iostream>#include<string.h>using namespace s原创 2016-03-15 18:58:24 · 448 阅读 · 0 评论 -
进制转换
《程序员的数学思维修炼》一书中的进制转换方式,作为一个小技能积累下来。前言进制转换是我们经常需要做的工作,二进制和十六进制用于计算机表示,十进制常用于人类交流,人类熟悉十进制,因此如果要将一个进制数转换为另一个进制数,可以使用十进制进行中间转换,下面归纳B进制与十进制之间的转换方式: 一个B进制的数要转换为十进制乘权展开; 一个十进制的数要转换为B进制使用除模取余法进行;算法我们考虑接受输入为一原创 2016-04-03 11:42:16 · 805 阅读 · 0 评论 -
HDU Digital Roots
HDU Digital Roots题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1013 数根被定义为一个数各位相加和,这个和必须是个位数,如果不是个位数,递归求其各位和。 本题最初的想法是读取数,然后使用一个getRoot函数递归求解数根,毫无疑问直接WA了。题目没有给出input的取值范围,但是根据之前题目的尿性,大数爆掉算法是出题常用的手段原创 2016-03-13 00:07:53 · 369 阅读 · 0 评论 -
HDU Elevator
HDU Elevator题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1008 本题没有什么特别的技巧,唯一值得注意的是两层楼相同时需要处理,不要单纯使用if…else if….else if….,不要少考虑情况,逻辑要严密,就这么多。/*#include<stdio.h>#include<string.h>//#define LOCALus原创 2016-03-13 00:18:41 · 325 阅读 · 0 评论 -
HDU Let the Balloon Rise
HDU Let the Balloon Rise题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1004 本题开二维字符数组用于字符串储存,使用另一个次数数组记录每个单词的出现次数,相同的单词一定有相同的次数,循环N*N次搜索当前单词的出现次数即可。唯一注意的是,比较是否相同的时候,使用strcmp函数,不要使用相等,相等只比较单词首字母。#incl原创 2016-03-13 00:26:25 · 401 阅读 · 0 评论 -
HDU u Calculate e
HDU u Calculate e题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1012 本题开始以为又是大数问题,结果只是输入输出的控制。实现使用一个阶乘函数即可,main函数中输出每一次叠加的结果即可,注意输出格式。#include<stdio.h>#include<string.h>#include<string>#include<io原创 2016-03-13 10:22:00 · 438 阅读 · 0 评论 -
HDU A Mathematical Curiosity
A Mathematical Curiosity题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1017 本题实在恶心,从题目本身到格式控制,首次尝试不足难免,共勉吧。#include<stdio.h>#include<string.h>//#define LOCAL//分析不足,恶心的卡格式的题目,题目本身描述也不清晰using names原创 2016-03-13 12:27:13 · 339 阅读 · 0 评论 -
HDU Least Common Multiple
题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1019 本题应该是唯一的一道一次AC的题目了,使用的数论结论可以参考数论的结论,GCD和LCM以及拓展定理。#include<stdio.h>#include<string.h>//#define LOCALusing namespace std;int gcd(int a,int b){ //原创 2016-03-13 22:25:45 · 268 阅读 · 0 评论 -
CCF 数字排序
内存:256MB 时间:1s 题目描述如下: 问题描述 给定n个整数,请统计出每个整数出现的次数,按出现次数从多到少的顺序输出。 输入格式 输入的第一行包含一个整数n,表示给定数字的个数。 第二行包含n个整数,相邻的整数之间用一个空格分隔,表示所给定的整数。 输出格式 输出多行,每行包含两个整数,分别表示一个给定的整数和它出现的次数。按出现次数递减的顺序输出。如果两原创 2016-03-27 12:06:20 · 748 阅读 · 0 评论 -
二叉树的构造(一)
前言树和图的DFS和BFS是各种算法的基础,很长时间没有接触底层的数据结构,容易对一些细节性的东西有所遗忘。这一部分也是属于数据结构的内容,顺便复习一下。构造二叉树这里的构造二叉树是根据二叉树的中序序列和后序序列来构造一棵二叉树,我们容易发现,在后序序列当中从后往前看就是树的一个个“根”节点,因此我们得到了根节点就可以将中序序列分成两个部分(这也符合二叉树的定义),这样后序序列也相应的被分为除了最后原创 2016-04-04 10:04:19 · 983 阅读 · 0 评论 -
二叉树的构造(二)
前言上次的这篇文章二叉树的构造(一)实现了根据一棵二叉树的后序序列和中序序列来构造出这颗二叉树,我们采取结构体形式构建二叉树,这次我们根据先序和中序序列来构建这个二叉树,写这篇主要是因为之前的代码感觉还是没有理解到位,因此补上。构建过程明确问题开始构建二叉树的时候我们需要明确几个问题: 1. 采用什么方式进行构建? 2. 构建时候如何利用先序和中序序列?算法思路根据我们遍历二叉树的规则,我们采取原创 2016-05-02 20:45:06 · 386 阅读 · 0 评论 -
最小生成树(二)
前言本篇承接最小生成树(一),下面给出使用点集判定的最小生成树。 题目传送门:Freckles题目分析本体大意是给出了所有点的坐标,然后求一棵最小生成树。 这就相当于是说,这是一个完全图,因此我们就会利用到上一篇所讲的构建点集,然后我们根据点集构建边的集合。将问题转化为上一篇的最小生成树的问题。 注意点:这里边的数量需要重新设置变量,不能使用节点变量n进行遍历。#include <cstdio原创 2016-05-04 20:22:55 · 336 阅读 · 0 评论 -
最小生成树(一)
简介在一个无向连通图中,如果存在一个连通子图包含原图中所有的节点和部分边,且这个子图不存在回路,那么我们称这个子图为原图的一棵生成树。在带权图中,所有的生成树中边权最小的一课或者几棵称为最小生成树。Kruskal算法算法思想Kruskal算法比较简单, 实际上是一种贪心的方式。不断从未选的边的集合当中选择权值最小的,并且不和已选的点(初始已选的点的集合是空集)构成回路的边,将边的两个端点加入我们的已原创 2016-05-04 20:15:52 · 427 阅读 · 0 评论 -
动态规划(一)
简介动态规划(DP)是机试当中的一个难点,本次开放日活动的机试第一题很多人使用的就是DP的方式,之前其实也使用过类似的DP方法,今天开始正式开始接触DP的题目。递推求解谈到递推求解必须要说的就是 Fibonacci数列,很多数学递推模型的原型就是Fibonacci数列。 经典题目传送门:N阶楼梯上楼问题 一般我们使用数组F[n]表示第n中情况的解,我们试图寻找这个递推关系来根据小规模的情况(例如原创 2016-05-19 21:02:09 · 294 阅读 · 0 评论 -
动态规划(二)——错位重排
简介错位重排问题是伯努利和欧拉在错装信封时发现的,是比较有意思的发现这两家伙是有多无聊。一般的全错位排列问题研究这样的问题: 1.给所有的容器和等量的物品标号。 2.将物品放到容器中,不允许容器放入自己标号的物品。 基于这样模型的问题就是错位重排问题。模型的递推公式推导为了coding方便,也根据DP的思想,我们设计递推公式来解决这个问题,同样地,我们使用F[n]来表示n个物品的错排个数,下面原创 2016-05-19 21:30:41 · 1723 阅读 · 0 评论 -
PAT1008 数组循环右移
题目传送门PAT1008数组循环右移题解本题使用模运算即可实现。#include<cstdio>#include<iostream>#include<algorithm>#include<cstring>#define N 100using namespace std;int Num[N];int Out[N];int main(){ //freopen("input.txt"原创 2016-07-19 10:27:09 · 349 阅读 · 0 评论 -
PAT1010 一元多项式求导
题目传送门PAT1010 一元多项式求导题解本题注意的是输入为零多项式的时候输出为0 0,对于这种不确定的输入我们可以采取不断读取直接到文件末尾的方式。#include<cstdio>#include<cstring>using namespace std;int main(){ //freopen("input.txt","r",stdin); int a,b; int原创 2016-07-19 11:06:45 · 352 阅读 · 0 评论 -
[湖南省第六届大学生计算机程序设计竞赛]弟弟的作业
题目传送门:http://xcacm.hfut.edu.cn/problem.php?id=1033 本题虽然是水题,不过很好地训练了输入输出的格式,使用scanf函数进行输入的时候,我们可以连续使用%d%c%d=%s来读取形如“12+34=423”这样的式子,最后的结果使用%s是因为可能出现“?”,使用atoi函数就可以将字符串原创 2016-03-21 16:31:29 · 595 阅读 · 0 评论 -
CCF ISBN问题
问题描述 每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括9位数字、1位识别码和3位分隔符,其规定格式如“x-xxx-xxxxx-x”,其中符号“-”是分隔符(键盘上的减号),最后一位是识别码,例如0-670-82162-4就是一个标准的ISBN码。ISBN码的首位数字表示书籍的出版语言,例如0代表英语;第一个分隔符“-”之后的三位数字代表出版社,例如670代表维京出版社;第二原创 2016-04-01 09:55:08 · 578 阅读 · 0 评论 -
HDU Box of Bricks
题目传送门: http://acm.hdu.edu.cn/game/entry/problem/show.php?chapterid=1§ionid=2&problemid=8 本题规律在于将每个砖块的高度与现有高度作差,然后将正数部分想加即可。#include<stdio.h>#include<iostream>using namespace std;//HDU Box of B原创 2016-03-15 19:00:47 · 785 阅读 · 0 评论 -
HDU Buildings
题目传送门: http://acm.hdu.edu.cn/game/entry/problem/show.php?chapterid=1§ionid=2&problemid=13 本题的数组实际上就是用来练习输入输出的,直接使用scanf读取即可。#include<stdio.h>using namespace std;//HDU Buildings 水题,注意输出即可,可以处理一个原创 2016-03-15 19:03:58 · 300 阅读 · 0 评论 -
HDU Higher Math
题目传送门: http://acm.hdu.edu.cn/game/entry/problem/show.php?chapterid=1§ionid=2&problemid=16 本题勾股定理,注意输入没有顺序,排个序。#include<stdio.h>#include<vector>#include<algorithm>//HDU Higher Mathusing namesp原创 2016-03-15 19:05:32 · 474 阅读 · 0 评论 -
HDU Specialized Four_Digit Numbers
题目传送门: http://acm.hdu.edu.cn/game/entry/problem/show.php?chapterid=1§ionid=2&problemid=24 本题核心是基本功是进制转换,分解方法是除模取余法,写三个函数比较清晰。#include<stdio.h>using namespace std;//HDU Specialized Four_Digit Nu原创 2016-03-15 19:07:39 · 237 阅读 · 0 评论 -
HDU AC Me
题目传送门: http://acm.hdu.edu.cn/game/entry/problem/show.php?chapterid=1§ionid=2&problemid=26 由于输入全部都是小写字母a-z(0x61H-0x61+25),因此我们使用数组的时候有个技巧,可以将其减去0x61H映射到0-25的集合中去,而这个集合就作为times(出现次数)数组,剩下的就是输入输出问题了原创 2016-03-15 19:12:41 · 412 阅读 · 0 评论 -
HDU Ignatius and the Princess IV
题目传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1029 看来写这类题目必须要创新的思路,纯粹的写循环很容易被大数据爆掉。下面是一份超时代码,目前还没有发现原因,没有死循环,目测是数据量大的原因?#include<stdio.h>#include<string.h>#include<algorithm>//#define LOCALint原创 2016-03-15 20:15:08 · 312 阅读 · 0 评论 -
HDU The 3n + 1 problem
题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1032 我发现自己理解英文表达的数学类的问题总是有各种各样的偏差,这种偏差不是陌生词汇带来的(0_0)……本题的重点在于ij没有说明大小,因此我们需要排下序,可以使用define也可以使用algorithm头文件。#include<stdio.h>#include<string.h>#includ原创 2016-03-16 09:55:28 · 238 阅读 · 0 评论 -
HDU Fibonacci Again
题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1021 本题找规律,否则BoomShakalaka。#include<stdio.h>#include<string.h>//#define LOCALint Fibonacci[1000000];using namespace std;//大数找规律,不然容易溢出int main(){原创 2016-03-16 10:02:33 · 259 阅读 · 0 评论 -
HDU Keep on Truckin'
题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1037 本题英文阅读理解题目。#include<stdio.h>#include<string.h>#include<algorithm>//#define LOCALusing namespace std;int main(){ #ifdef LOCAL freopen("原创 2016-03-16 10:26:31 · 309 阅读 · 0 评论 -
HDU As Easy As A+B
题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1040 练习输入输出,注意空格。#include<stdio.h>#include<string.h>#include<algorithm>//#define LOCALusing namespace std;int main(){ #ifdef LOCAL freopen(原创 2016-03-16 10:37:17 · 317 阅读 · 0 评论 -
HDU The Hardest Problem Ever
题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1048 本题实际上是一个字符数组的映射问题,因为是将A-Z整体往右边移动了5位,e.x. A对应F,因此我们输入的串整体上-5得到原串,但是mod操作不便于操作负数,因此我采取的策略就是使用一个倒序的字母数组将-5转换为+5操作。#include<stdio.h>#include<string.h>原创 2016-03-16 11:33:47 · 227 阅读 · 0 评论 -
HDU HangOver
本题传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1056 英文阅读理解题,六级难度。#include<stdio.h>#include<string.h>//#define LOCALusing namespace std;int main(){ #ifdef LOCAL freopen("input.txt","r",std原创 2016-03-16 17:17:56 · 307 阅读 · 0 评论 -
HDU Rightmost Digit
题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1061 本题寻找规律即可,0-10的每个数字自身的乘积都是有规律的。#include<cstdio>#include<cstring>#define LOCAL//规律性的题目int cycle[10][6]={{0,0},{0,1},{0,2,4,8,6},{0,3,9,7,1},{0,4,原创 2016-03-16 19:56:38 · 266 阅读 · 0 评论 -
动态规划:从新手到专家
作者:Hawstein 出处:http://hawstein.com/posts/dp-novice-to-advanced.html 声明:本文采用以下协议进行授权: 自由转载-非商用-非衍生-保持署名|Creative Commons BY-NC-ND 3.0 ,转载请注明作者及出处。 特此转一篇文章入门DP。转载 2016-03-16 22:17:32 · 250 阅读 · 0 评论 -
图论 SCC(CCF高速公路)
简介首先需要复习一下图论的一系列知识,理解有向图的强连通分量的定义,求解有向图的强连通分量算法有很多,例如Kosaraju,Gabow和Tarjan算法,其中Gabow和Tarjan算法时间复杂度要优于Kosaraju。在这里我们使用Tarjan求解SCC。 在此之前你可以对SCC有个直观的认识,放图: 然后看一篇浅显的说明性的文字,了解这个算法的思想: http://www.voidcn原创 2016-03-30 17:17:53 · 3374 阅读 · 2 评论 -
HDU Max Sum
题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1003 困了一天多的题目,最长连续子数组问题,也叫作最大连续和的问题,这个问题被提出是在很早的时候(1977),然后kadane解决了这个问题,在O(n)时间内遍历一次数组就可以解决。最初的代码是这样的,暴力枚举每一个子数组,居然TE了。看来本题要求O(n)时间复杂度左右啊。#include<cstd原创 2016-03-19 20:30:39 · 270 阅读 · 0 评论 -
常用数论结论
今天主要温习了数论的常用结论,列在下面供参考,今后将继续补充。唯一分解定理算术基本定理可表述为:任何一个大于1的自然数 N,如果N不为质数,那么N可以唯一分解成有限个质数的乘积 N=P1a1P2a2P3a3……Pnan,这里P1原创 2016-03-13 22:04:44 · 1579 阅读 · 0 评论