
算法设计——简单模拟
文章平均质量分 75
XDU_Skyline
Everything is over, everything is just beginning.
展开
-
hihoCoder 1242 MX Loves Game
1.题目描述:点击打开链接2.解题思路:本题要求用最少的次数将A矩阵变成B矩阵,每次操作可以选择2行或2列进行交换。如果无解,输出-1。注意到题目中提到的性质:每一行或每一列都是1~n的一个排列。因此无论怎么交换,最终仍然是每行每列都是1~n的一个排列。那么,我们可以考虑先把第一行变得完全相同。首先,交换操作可以不必真的进行,可以实现用row[i]表示第i行实际对应的行编号,最初时候row原创 2015-10-11 22:40:45 · 703 阅读 · 0 评论 -
#298 (div.2) D. Handshakes
1.题目描述:点击打开链接2.解题思路:本题是一道模拟题。要求找出一个队列,使得队列中的每个人的握手次数符合输入的情况,如果不存在输出无解。其中每三个人可以在任何时刻组成一个队伍开始比赛,后面的人不能再与他们握手。通过手动操作与观察可以发现,如果把队列中的人的握手次数均取除以3后的余数。那么正好形成0 1 2 0 1 2....的循环序列。所以可以通过这个来模拟该过程。事先用map保存握手次数原创 2015-04-13 19:10:26 · 493 阅读 · 0 评论 -
#308 (div.2) A. Vanya and Table
1.题目描述:点击打开链接2.解题思路:本题是一道简单的模拟题,每次扫描一个输入的长方形,然后将内部所有点都+1,最终统计数组所有元素的和即可。3.代码:#define _CRT_SECURE_NO_WARNINGS#include#include#include#include#include#include#include#include#include#inc原创 2015-06-29 13:02:10 · 793 阅读 · 0 评论 -
#305 (div.2) C. Mike and Frog
1.题目描述:点击打开链接2.解题思路:本题是一道模拟题,虽然看上去像数学,但实际上只需要模拟一下这个过程就好了。首先,我们先让h1变为a1,设需要k1步才可以,如果h2经过k1步也变为a2,那么直接输出答案。否则,我们接下来找h1变化的循环节cycle,即每经过一个cycle,就可以再到达a1。那么我们看h2需要几个cycle才可以从当前位置(即第k1步时候的位置)到达a2,假设只需要k2步原创 2015-05-28 20:17:02 · 664 阅读 · 0 评论 -
#301 (div.2) A. Combination Lock
1.题目描述:点击打开链接 2.解题思路:本题要求当前的密码经过最少的转动后和最终的密码一样。可以利用贪心法解决。考虑第i位,假设当前位a,目标为b,那么有两种转动方式,所需的步数分别为abs(a-b)和10-abs(a,b),取较小者即可。累加后即为最小的步数。 3.代码:#define _CRT_SECURE_NO_WARNINGS #include<iostream>#include<原创 2015-05-01 11:53:12 · 582 阅读 · 0 评论 -
亮亮做加法 XDU1003
1.题目描述:点击打开链接2.解题思路:本题要求输入两个b进制整数X,Y,输出他们相加后的b进制的结果。本题据说可以直接用Java的特性很方便的解决。但这里还是介绍如何利用C++来解决。其实思路很简单,模拟b进制数相加的过程即可。先把输入的X,Y转化为十进制整数,相加得到十进制的和后再转化为b进制即可。不过其中有一些要注意的地方:(1)注意结果是0的时候。(2)由于题目中说答案的最大范围不超过原创 2015-04-24 22:05:52 · 682 阅读 · 0 评论 -
2015编程之美初赛第一场 A 彩色的树
时间限制:2000ms单点时限:1000ms内存限制:256MB描述给定一棵n个节点的树,节点编号为1, 2, …, n。树中有n - 1条边,任意两个节点间恰好有一条路径。这是一棵彩色的树,每个节点恰好可以染一种颜色。初始时,所有节点的颜色都为0。现在需要实现两种操作:1. 改变节点x的颜色为y;2. 询问整棵树被划分成了多少棵颜色相同的子树。即每棵子树内原创 2015-04-25 17:42:47 · 1209 阅读 · 4 评论 -
#299 (div.2) A. Tavas and Nafas
1.题目描述:点击打开链接2.解题思路:本题是一道简单的模拟题,要求将小于100的每个数的英文单词输出,提前打表即可。注意0,11~19要特殊处理。3.代码:#define _CRT_SECURE_NO_WARNINGS #include#include#include#include#include#include#include#include#include#原创 2015-04-15 12:45:56 · 737 阅读 · 0 评论 -
2015编程之美资格赛 A 2月29日
时间限制:2000ms单点时限:1000ms内存限制:256MB描述给定两个日期,计算这两个日期之间有多少个2月29日(包括起始日期)。只有闰年有2月29日,满足以下一个条件的年份为闰年:1. 年份能被4整除但不能被100整除2. 年份能被400整除输入第一行为一个整数T,表示数据组数。之后每组数据包含两行。每一行格式为"mo原创 2015-04-20 12:06:18 · 867 阅读 · 0 评论 -
#298 (div.2) A. Exam
1.题目描述:点击打开链接2.解题思路:本题利用构造法解决。一开始想着暴力枚举,但n的范围太大,显然是不可取的。于是就观察给的样例,看如何构造出符合题意的排列。不幸的是,这道题在比赛结束前也没有弄对==。今天补题的时候又琢磨了一会儿终于过了。真是思维捉急的无话可说。下面回归正题。本题可以先预处理n≤3的情况,对于之后的情况,分奇偶两种情况来处理。如果是偶数,那么首尾配对,每次交替前后顺序即原创 2015-04-13 11:57:32 · 551 阅读 · 0 评论 -
#111 (div.2) A. Twins
1.题目描述:点击打开链接2.解题思路:排序后从大到小选取,当take>sum-take时候停止。3.代码:#define _CRT_SECURE_NO_WARNINGS#include#include#include#include#include#include#include#include#include#include#include#include原创 2015-07-29 12:50:15 · 552 阅读 · 0 评论 -
#197 (div.2) A. Helpful Maths
1.题目描述:点击打开链接2.解题思路:抽取出所有的数字,排序后输出即可。3.代码:#define _CRT_SECURE_NO_WARNINGS#include#include#include#include#include#include#include#include#include#include#include#include#include#in原创 2015-07-29 12:37:23 · 662 阅读 · 0 评论 -
#101 (div.2) A. Amusing Joke
1.题目描述:点击打开链接2.解题思路:先将s1,s2拼接在一起,然后检查拼接后的字符串长度len是否与s的长度len2相同,若相同,则对两字符串按照字典序排序,逐个比较,若每一位都相同,输出YES。3.代码:#define _CRT_SECURE_NO_WARNINGS#include#include#include#include#include#include#in原创 2015-07-29 13:04:49 · 723 阅读 · 0 评论 -
1002 Mission Impossible 6 (2015年北京赛区网络赛B题)
1.题目描述:点击打开链接2.解题思路:本题要求模拟一个文本编辑器。功能就是题目中描述的那样。为了方便支持插入,删除,替换操作,可以直接使用string来模拟。不过这种题目一般重难点在于对细节的把握。稍微考虑不周就会陷入WARush中。这道题我上来就被这几处细节给坑到了:(1)新输入的字符,如果在caret右侧没有字符时候,可以看做是insert,而不是忽略它。(2)对于已经被忽略的字原创 2015-09-23 00:03:52 · 929 阅读 · 0 评论 -
ZOJ 3819 Average Score (2014年牡丹江赛区现场赛A题)
1.题目描述:点击打开链接2.解题思路:本题属于签到题,直接统计总和,求每个班的平均分。Bob的成绩上界小于第一个班的平均分,成绩下界大于第二班的平均分3.代码:#define _CRT_SECURE_NO_WARNINGS #include#include#include#include#include#include#include#include#include原创 2015-02-07 16:29:57 · 652 阅读 · 0 评论 -
HDU 5353 Average (2015年多校比赛第6场)
1.题目描述:点击打开链接2.解题思路:本题属于一个简单的模拟题,然而在比赛时候考虑不周WA了。本题要求相邻的两个人可以交换一个糖果,且仅能交换一次。首先计算所有糖果的个数sum,如果sum不能整除n,那么肯定无解。否则,计算出平均值mean,然后让a[i]-=mean得到差值。此时可以利用贪心法来解决本题。令第i个人只和第i+1个人之间进行糖果交换:如果差值为-1,则第i+1个人给第i个原创 2015-08-06 22:49:02 · 915 阅读 · 0 评论 -
HDU 4462 Scaring the Birds (2012年杭州赛区现场赛J题)
1.题目描述:点击打开链接2.解题思路:本题是一道简单模拟题。不过重点还是对于题目细节的理解。容易犯2个理解错误:(1)误以为是每个稻草人有不同的scaring range,实际上scaring range是由不同的vacant intersection决定的,跟稻草人毫无关系。(2)误以为所有点都需要被覆盖,实际上题目要求的是只要所有corn被保护就行,插稻草人的地方本来就是空地,有没有被保原创 2015-08-30 15:43:35 · 625 阅读 · 0 评论 -
HDU 5374 Tetris (2015年多校比赛第7场)
1.题目描述:点击打开链接2.解题思路:本题要求模拟俄罗斯方块游戏,然而比赛时候写了好久还是没过。后来补题发现原来是第四步的逻辑实现写错了。。。题目中要求如果一整行可以消除,那么仍然执行该步,否则才回到第一步。但是我的代码却是不论是否可以消除,都回到第一步。。。补题时候还发现一个地方我的理解出错了。。(可能是我脑洞真的有点大),题目中说如果一整行可以消除,那么它上面的方格要下落。我的理解是下落原创 2015-08-11 22:03:47 · 902 阅读 · 0 评论 -
HDU 5003 Osu! (2014年鞍山赛区网络赛G题)
1.题目描述:点击打开链接2.解题思路:本题是一道简单的排序题,按照题意排序计算即可。3.代码:#define _CRT_SECURE_NO_WARNINGS#include#include#include#include#include#include#include#include#include#include#include#include#inclu原创 2015-08-07 11:43:11 · 830 阅读 · 0 评论 -
HDU 4422 The Little Girl who Picks Mushrooms (2012年长春赛区现场赛C题)
1.题目描述:点击打开链接2.解题思路:本题是一道简单模拟题,然而,自己的方法不对WA了很多次==。最后不得不弃用自己的思路了。首先用-1表示还没有使用过的位置。可以每次枚举3个位置,如果发现这3个位置中没有-1且他们的和不能被1024整除,那么return 0,否则,找到没有被标记的另外2个位置,如果这2个位置其中一个为-1,那么直接返回1024,因为我们已经交了三个袋子了,剩下的袋子中如果原创 2015-08-26 22:00:57 · 754 阅读 · 0 评论 -
HDU 4119 Isabella's Message (2011年成都赛区现场赛I题)
1.题目描述:点击打开链接2.解题思路:本题是一道模拟题,要求模拟一个解密的过程,练习这么久第一次做模拟题1Y了,内心还是很激动的~。只需要根据题意,记录* 所在的位置即可,然后每次都是先解密,后顺时针旋转90度。把每次解密的信息放到一个vector里,接下来就是连接它们,得到解密后的字符串,在map中查找这些单词是否存在即可。如果都存在,就把这条解密信息放到ans中,最后对ans排序,输出a原创 2015-08-26 00:29:38 · 1358 阅读 · 0 评论 -
#238 (div.2) A. Gravity Flip
1.题目描述:点击打开链接2.解题思路:等价于对数组由小到大排序。3.代码:#define _CRT_SECURE_NO_WARNINGS#include#include#include#include#include#include#include#include#include#include#include#include#include#includ原创 2015-07-29 13:18:44 · 579 阅读 · 0 评论 -
习题10-2 勤劳的蜜蜂 UVa808
1.题目描述:点击打开链接2.解题思路:本题利用构造法解决。本题我思考了很久,但迟迟没有很好的思路。最后才意识到只需要按照蜂巢的构造在xOy坐标系中画出这些点即可求解了。。蜂巢的画法不难通过观察发现,类似于螺旋结构。把(0,0)安排为第一个点,纵向距离和横向距离都为2个单位距离。这样便可以将图形中所有的店全部画出来。经过计算不难知道,只需要循环60次即可将10000以内的点表示出来。这样输原创 2015-04-22 15:23:47 · 1413 阅读 · 0 评论 -
习题4-3 黑白棋 UVa220
1.题目描述:点击打开链接2.解题思路:本题是一道模拟题,要求模拟黑白棋的三种操作。对于这类题,肯定是分情况编写相应的函数处理。不过本题的难点在于如何方便地寻找到合法位置。思考了一会儿,可以枚举每一个空位置,同时利用一个向量数组方便来后续讨论,由于实现的细节较多,详细过程见代码注释。本题还有一个细节:在执行M命令时记得要更换当前的游戏者,题目中说了是两个人轮流下棋。3.代码:#defi原创 2015-03-23 22:58:56 · 1084 阅读 · 1 评论 -
习题5-7 打印队列 UVa12100
1.题目描述:2.解题思路原创 2014-08-13 21:12:09 · 1137 阅读 · 2 评论 -
例题8-13 环形跑道 UVa11093
1.题目描述:点击打开链接2.解题思路:本题属于简单模拟题,只需要从第一个加油站开始模拟,如果有解,直接输出;否则假设走到加油站p(p>0)时走不下去了,那么可以证明2,3…p都不是解(因为从1到其中任何一个点时油量≥0,情况不比直接从这一点出发坏)因此下一次可以直接从p+1开始模拟。注意每次重新模拟时gas要置零(我在这个地方被坑得好惨==)3.代码:#define _CRT_SEC原创 2015-02-07 14:06:10 · 766 阅读 · 0 评论 -
习题5-3 卡片游戏 UVa10935
#define _CRT_SECURE_NO_WARNINGS#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;queuecard;int n;int main()原创 2014-08-12 11:52:08 · 840 阅读 · 0 评论 -
习题5-4 交换学生 UVa10763
其实我的思路想复杂了,AC了之后看了别人的代码才发现如此简单原创 2014-08-12 14:24:51 · 766 阅读 · 0 评论 -
习题3-3 数数字 UVa1225
#include#include#include#define max 40000+10char s[max];int main(){ int T; scanf("%d", &T); while (T--) { int n; int first = 1; scanf("%d", &n); char*p = s; for (int i = 1; i <= n;原创 2014-06-20 17:28:55 · 1105 阅读 · 0 评论 -
习题4-8 特别困的学生 UVa12108
#define _CRT_SECURE_NO_WARNINGS#include#include#include#include#include#define N 1000000int n;int a[15], b[15], c[15];int main(){ int rnd = 0; while (scanf("%d",&n),n) { for (int i = 0原创 2014-08-06 21:35:18 · 3092 阅读 · 5 评论 -
习题5-2 Ducci序列 UVa1594
1.题目描述:点击打开链接2.解题思路:模拟题意原创 2014-08-12 16:31:31 · 960 阅读 · 0 评论 -
习题5-6 对称轴 UVa1595
1.题目描述:2.解题思路:判断是否对称只需要看x坐标,因此可以先将原创 2014-08-13 15:02:19 · 830 阅读 · 0 评论 -
习题5-8 图书管理系统 UVa230
1.题目描述:2.解题思路原创 2014-08-14 18:51:22 · 968 阅读 · 0 评论 -
例题1.19 计算器谜题 UVa11549
1.题目描述:点击打开链接2.解题思路:本题是一道普通的模拟题,根据题意易知计算器显示的数将会出现循环,因为显示的n位数一共就有限种情况,而平方的次数是无限多的。所以不妨一个个的模拟,每次都看新得到的数是否以前出现过,如果出现过就跳出循环。但如何判断是否出现过呢?第一种方法是利用STL中的set,同时写一个Next函数求出下一个k值。下面一共给出三个不同的代码,来分别体会一下效率上的巨大差异。原创 2015-03-15 12:06:51 · 694 阅读 · 0 评论 -
例题3.1 猜猜数据结构 UVa11995
1.题目描述:点击打开链接2.解题思路:本题要求根据输入的数据和输出的数据来猜测一种可能的数据结构,备选答案有“栈,队列,优先队列”,结果也可能都不是或者不确定。STL中已经有这三种数据结构了,因此直接模拟题意,输出时判断是否对应即可。注意:弹出时要判断一下是否已经为空。3.代码:#define _CRT_SECURE_NO_WARNINGS #include#include#i原创 2015-03-16 17:11:20 · 956 阅读 · 0 评论 -
习题5-10 在Web中搜索 UVa1597
1.题目描述:点击打开链接2.解题思路:本题要求模拟一个搜索引擎,该引擎可以处理四种搜索方式:term,term1 AND term2,term1 OR term2,NOT term。在题目描述部分已经介绍了搜索引擎的搭建方式,理论上只需要按照题意搭建即可,不过这样的话,代码会很长,由于中间还要输出一些分隔符来区分文章或者询问,代码长度至少快300行了。这样的代码难以维护,而且在比赛中也不切实原创 2015-03-25 17:56:12 · 1844 阅读 · 3 评论 -
习题3-5 谜题 UVa227
1.题目描述:点击打开链接2.解题思路:本题是一道模拟题,只需要根据题意的四种命令模拟这些过程即可。不过在字符串处理上要小心。由于本题把‘Z'当做结束标志,因此可以认为网格中不存在字符’Z'。为了提高效率,不必提前存好所有的命令,只需要一个个读即可。如果遇到非法命令,令判断标志ok=0,后续的命令直接忽略即可。3.代码:#define _CRT_SECURE_NO_WARNINGS原创 2015-03-22 22:17:05 · 883 阅读 · 0 评论 -
习题5-16 医院设备利用 UVa212
1.题目描述:点击打开链接2.状态及可能原因:WA;可能是输出格式不对,个人认为逻辑上应该没有大的问题。3.代码:#define _CRT_SECURE_NO_WARNINGS #include#include#include#include#include#include#include#include#include#include#include#incl原创 2015-03-28 18:19:37 · 1881 阅读 · 0 评论 -
例题1.17 年龄排序 UVa11462
1.题目描述:点击打开链接2.解题思路:一道纸老虎题。。。难以置信,很直白的排序题,第一感觉直接用sort,看这题数据能否hack我,看来是我想多了。。。3.代码:#define _CRT_SECURE_NO_WARNINGS #include#include#include#include#include#include#include#include#includ原创 2015-03-12 21:42:10 · 612 阅读 · 0 评论 -
例题1.10 正整数序列 UVa11384
1.题目描述:点击打开链接·2.解题思路:本题属于找规律题。通过多次尝试,可以发现,我们可以每次让所有大于n/2都减去n/2,这样得到的结果等价于序列1~n/2,令f(n)表示序列1~n的操作次数,那么f(n)=f(n/2)+1。边界是f(1)=1。3.代码:#define _CRT_SECURE_NO_WARNINGS #include#include#include#inc原创 2015-03-12 18:11:44 · 761 阅读 · 0 评论