![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
模拟
Rancho__
这个作者很懒,什么都没留下…
展开
-
PAT 1014 Waiting in Line (30分) 一个简单的思路
这题写了有一点时间,最开始想着优化一下时间,用优先队列去做,但是发现有锅,因为忽略了队的长度。 然后思考过后,觉得用时间线来模拟最好做,先把窗口前的队列填满,这样保证了队列的长度是统一的,这样的话如果到某个时间,队首的人已经服务完了,这样这个队列的长度就减少一,这就变成了所有队列中长度最短的队列,所以直接向这个队列里面添加一个人就可以了。 按照从小到大轮询窗口的话,这样正好符合题中的要求,就是队列...原创 2019-12-20 09:50:56 · 113 阅读 · 0 评论 -
试题编号: 201903-3 试题名称: 损坏的RAID5
这题的数据未免也太水了,题目的意思好像默认是每块磁盘装载数据的长度是相等的。我写了判断每次取数据是否会超过每块磁盘存的数据的长度,然而并没有什么卵用。交上去20分,写了个数据测了下,如果要求的块太大的话,这样下面计算得出的对应磁盘号会太大,然后就会runtime error,所以求出最大块号,如果查询的块超过最大块号,就输出错误就可以了。 #include <bits/stdc++.h>...原创 2019-12-11 16:37:21 · 172 阅读 · 0 评论 -
CCF 试题编号: 201909-4 试题名称: 推荐系统
这题是stl的综合应用,map要想快,直接上unordered_map,这样查询接近O(1),是不是很嗨皮。 思路其实还是很简单的,type+id做个Hash,由于set.insert的第一个返回值是指向该插入元素的迭代器,所以,对于每一个type+id我们都可以存下它对应的迭代器,这样删除不就很快了吗,省去查找。 这题是我第一次用c++11的语法, 原谅我的low,嘻嘻,auto还挺好用。 #i...原创 2019-12-08 17:46:56 · 250 阅读 · 0 评论 -
HDU 1237 简单计算器(栈+stringstream)
提供几份代码,这题的输入可以用stringsteam处理,先处理乘除后处理加减,正常思路,但是后面统计加减法的时候,对栈的运用相当于加了几个括号就错了。 正确的简单解法就是,加法,就让正数入栈,减法就让该数的相反数入栈,之后的操作也不会影响该数的正负,这样处理最简单。 单栈 #include <iostream> #include <sstream> #include &l...原创 2019-09-23 19:40:07 · 127 阅读 · 0 评论 -
UVa-12096-集合栈计算机
这题的话,我们读入操作之后,首先对于空集就是初始化为空。 我们可以使用typedef 对于 set 重命名为Set,这样就可以直接用Set()的语法进行空集的初始化了。 这题主要是对于集合的处理,我们可以给集合一个映射函数,这个函数对于已知集合就返回该ID,让主函数进行相应的操作。 对于未知集合就按序存入暂存区,并给该集合分配一个ID。 对于查询这个操作,我们使用map就可以判断。 最后我们输出的...原创 2019-02-03 13:04:19 · 117 阅读 · 0 评论 -
UVa-101-木块问题
这题用vector比较好写,我们设置对应的几个函数,然后进行相应的操作来简化代码,这样才不易出错。 对于输入和操作来说我们经分析之后,可以看到最后一个操作时最原始的操作也就是不需要还原任意一个堆任意高度的操作,只需进行移动位置就可以了。 对于其它的操作经观察得知,如果含有onto操作,那就要还原b之上的块,如果含有move,那就需要还原a之上的木块。 所以我们对应对输入的操作也就出来了,我们只需要...原创 2019-02-02 16:59:21 · 165 阅读 · 0 评论 -
ZOJ Monthly, January 2019-Little Sub and Pascal's Triangle
这个题的话,它每行奇数的个数等于该行行号,如果是0开始的,就该数的二进制中的1的个数,设为k,以它作为次数,2k就是了。 #include <stdio.h> int main() { int t; long long k; scanf("%d",&t); getchar(); while (t--) { scanf("%lld",&k); long ...原创 2019-01-19 18:14:46 · 137 阅读 · 0 评论 -
Comet OJ 热身赛-principal
这题的话,我们分析一下,入栈的操作是: 栈空 栈顶元素和当前操作元素不属于同一类括号 栈顶元素和当前操作元素属于同一类括号,但是并不是左括号在前,右括号在后 上面三个条件有任意一个满足都应该入栈,如果三个都不满足,那就弹出栈顶元素,因为这时肯定是匹配的括号。 我们不必考虑栈内究竟是什么情况,我们要考虑的是,每个对应的元素,进行操作之后,栈顶的元素是谁,我们用序号入栈,代替原本的元素。 我们可以...原创 2019-01-19 11:08:53 · 248 阅读 · 0 评论 -
UVa-133-救济金发放
这题的话,我们首先对于移动函数可以知道,因为只是顺逆的关系,也就是加一或者减一,所以我们每次移动的时候,都补上一个小于n的最大整数,然后取模,这样就不会有负数,而且加之后的结果不会超过2*n,所以我们取模的结果就是0到n-1,然后加上1就可以得到原位置了。 题目中的逆时针就是加一,顺时针就是减一。 #include <stdio.h> #define maxn 25 int a[...原创 2018-12-26 21:50:37 · 117 阅读 · 0 评论 -
哈理工(HUST)第八届程序设计竞赛--小乐乐的组合数
这道题目是一道数学题,我们可以假设n为7,m为14。 这样的话我们就可以很清晰地看到7和7可以拼接在一起,这是一对,然后是7和14拼接在一起,第二对。 我们可以直接让n/7,m/7,这样就是1*2,就得到了二。 我们还可以知道,1可以和6拼,1可以和13拼,我们可以用循环从一找到六,查看 n和m里面总共有几对。 然后就是n和m模7之后的 余数了,每一个余数,都可以和n和m中的1~6循环拼接...原创 2018-12-02 14:03:14 · 104 阅读 · 0 评论 -
UVa-10881-蚂蚁
这题目需要思考一下,我们其实不必纠结于蚂蚁的掉头问题,因为我们直接可以把蚂蚁看做擦肩而过,而不必对它进行调头之类的修改操作。 因为即使把蚂蚁看做擦肩而过,它们每个蚂蚁每个时刻所处的位置其实和掉头的结果是一样的,你们可以想一下是不是。 虽然每只蚂蚁的真实位置改变了,但是它们的相对位置其实并没有改变,我们依旧看一下蚂蚁擦肩而过之后的序列,可以很明显地发现,这个序列它们之间的相对位置其实并没有发生什...原创 2018-12-12 21:22:55 · 129 阅读 · 0 评论