模拟
Zolrk
这个作者很懒,什么都没留下…
展开
-
Codeforces 1A 【模拟】
拿张纸YY一下就看出来了 ans=⌈n/a⌉∗⌈m/a⌉ans=\lceil n/a\rceil*\lceil m/a \rceil 注意要开longlong#include <cstdio>#include <iostream>#include <cmath>int main() { long long n,m,a; std::cin >> n >> m >> a;原创 2017-09-25 08:53:07 · 275 阅读 · 0 评论 -
洛谷P1014 Cantor表 - 模拟
#include <cstdio>#include <algorithm>#include <iostream>#include <map>#include <queue>using namespace std;struct G{ int up, down;}g[10001][1001];int d[10001][1001];int ansx, ansy;int n, x原创 2017-10-25 19:24:48 · 344 阅读 · 0 评论 -
Noip 2016 组合数问题 - 矩阵前缀和
Cnm=Cn−1m−1+Cnm−1C_{m}^{n} = C_{m-1}^{n-1}+C_{m-1}^{n} 类似杨辉三角,只不过需要注意C1m=mC_m^1=m这题主要的难度并不在组合数上,而是如何优化查询因为t十分大,我们不能每查询一次就跑一次数组,但是我们可以先做一个预处理,令f(i,j)f(i,j)为第i行的前j个能整除k的组合数数量之和,这样就可以查询每一行f(i,i)f(i,i)的值,原创 2017-10-26 15:04:08 · 474 阅读 · 0 评论 -
Codevs 1160 蛇形矩阵 - 模拟
只会有四种拐法:左上 上右 右下 下左 每次走的时候判断拐弯条件,如果条件都不满足,就接着上次的方向走。 PS:好难调啊Orz#include <cstdio>#include <algorithm>#include <iostream>#include <map>#include <queue>using namespace std;#define debug(x) cerr <<原创 2017-10-25 20:25:35 · 386 阅读 · 0 评论 -
Codeforces 887A Div. 64
题目大意:给定一个01字符串,可以任意删除其中的字符,问是否通过一定操作后可以使最终字符串所表示的二进制数为64的倍数64的倍数也可以看作2的6次方的倍数,所以将任意数左移6位,这个数就成为64的倍数,于是只要检查字符串中第一个1的后面是否有6个0即可#include <algorithm>#include <iostream>#include <cstring>#include <cstdi原创 2017-11-04 09:18:59 · 525 阅读 · 0 评论 -
Noip 2011 选择客栈 - 模拟
当出现了一个消费小于p的咖啡店时,这个客栈之前所有与他相同颜色的客栈都可以组成答案。 用last[]表示某个颜色的最后出现位置,用tot[]表示某个颜色一共有多少个客栈,sum[]表示对于某个颜色,目前可选的客栈数量,now表示目前消费小于p的最后一个咖啡店当出现了一个咖啡店,消费小于p,并且位置比最后一个i颜色咖啡店靠后,就可以把这个咖啡店前面所有的i颜色客栈都算到sum数组中,即sum[i]原创 2017-11-06 16:52:33 · 332 阅读 · 0 评论 -
POJ3185 The water bowls - 模拟
假设一个方块是1, 为了使其变为0而不使已经变白的序列受到影响,只能反转其后面的方块 所以这个序列的第一个数是1还是0就决定了整个序列的反转,但是从左边开始翻和从右边开始翻是不一样的(感觉是这样就行,不需要证明),所以我们要扫两遍这个序列#include <algorithm>#include <iostream>#include <cstdio>u...原创 2018-03-17 10:04:53 · 203 阅读 · 0 评论 -
NOIP2007 树网的核 - 模拟 - 贪心
有个引理是从任何一条直径上求得的最小偏心距都相同 贪心的话,核肯定是越大越好的 然后我们在一条直径上枚举长度不超过s的一段路径,作为核,求一下偏心距,最后求出最小值即可 注意,是路径长度,长度!不是点的数量!#include <algorithm>#include <iostream>#include <cstring>#include <...原创 2018-05-30 20:21:37 · 251 阅读 · 0 评论 -
HNOI2003 激光炸弹 - 矩阵前缀和
作为蒟蒻还是要写一下这个“边界上的不会被摧毁”的做法在输入时直接把坐标往右上移动1个 x+1, y+1 然后按r找正方形,注意枚举到5001因为我再按原来的方式枚举正方形的时候,那些现在,位于正方形右边和上边两条边上的点,其实都在里面,那些位于下边和左边的,我在处理矩阵前缀和的时候已经删去了,因为我是g[i][j] - g[i-r][j] - g[i][j-r] + g[i-r][j-r...原创 2018-07-22 16:51:32 · 278 阅读 · 0 评论 -
洛谷P1147 连续自然数的和 - 双指针扫描
双指针扫描适用于有序数组,两个指针或同向或反向 对于这道题,若sum &gt; m 则移动左指针,若sum &lt; m,说明总和小了,移动右指针 当左端点超过m/2时,之后的连续自然数的和一定大于m#include &lt;algorithm&gt;#include &lt;iostream&gt;#include &lt;cstring&gt;#include原创 2018-08-06 16:41:41 · 352 阅读 · 0 评论 -
洛谷P1168 中位数 - 堆
这题本来应该是主席树模板的。。。因为只需要求中位数,并且数据不是特别大,我们可以考虑维护一个大根堆,一个小根堆。这两个堆总大小为当前区间长度,我们维护两个性质: 1.小根堆总比大根堆多一个元素 2.小根堆所有元素都大于大根堆元素这样小根堆的堆顶就是区间中位数。当需要加入一个新元素时,如果这个元素比小根堆堆顶要大,就加入小根堆中,反之则加入大根堆,这样可以维护性质2...原创 2017-10-25 14:57:10 · 389 阅读 · 0 评论 -
Noip 2013 火柴排队 - 逆序对 - 转化思想
当a列火柴和对应的每一个b列火柴差值最小时,答案最小也就是说,需要a列的第i高火柴与b列的第i高火柴在位置上相对应但是这个操作比较难想,我们不妨设f(x)为a列第x高火柴的位置在b列中的位置(注意,x指a列第x高火柴在a列的位置,而f(x)是位置与位置的映射)。而目标转化为使f[x] = x,也就是说把f(x)转换为一个递增序列,那么转换的操作次数就是f(x)的逆序对数,并且,对f(x)的操作即对b原创 2017-11-01 17:12:36 · 270 阅读 · 0 评论 -
CodeForces 816A Karen and Morning
CodeForces很良心,每个点都给数据,我已经不知道交了多少次了Orz 这题就是看错误点,慢慢加特判,一个一个加,最后总会A的(笑#include <cstdio>#include <iostream>#include <algorithm>#include <cstring>#include <string>using namespace std;const int maxn =原创 2017-09-26 20:56:09 · 297 阅读 · 0 评论 -
Codeforces 853A Planning 【贪心】
题目大意 由于不可抗力什么的所有航班都要推迟k分钟,啊但是每架飞机都已经计划好原来的起飞计划了Orz(输入顺序就是原起飞计划),于是Helen就需要搞一个新的起飞计划。 飞机C每推迟一分钟(相对于原计划)就会花费C_i块钱,并且新的计划中,不允许某架飞机的起飞时间比原计划还要早,而且而且不允许同一分钟内起飞两架飞机 现在求一个最优方案使得花费最少,并且打出这个方案来。原创 2017-09-26 21:34:02 · 325 阅读 · 0 评论 -
POJ3279 Fliptile 【暴力】
这是一个带状压的暴力Orz 对于每个点,有效的反转次数不会超过2,所以只要求出每个点的反转次数,加上其本身的0/1,再对2取模,就是这个点现在的颜色问题来了,如何求某个点的反转次数呢?可以逆向思维,先把每个点的反转次数存在数组fli中,某个点的反转次数等于其本身反转次数以及上下左右四个点的反转次数之和(能对这个点有影响的只能是其上下左右的点),再加上其本身的颜色编号(0/1)把全部区域变...原创 2017-09-27 16:19:40 · 307 阅读 · 0 评论 -
Codeforces 778A String Game
题目大意给定一个基础字符串和一个匹配字符串,以及一个**删除索引**求按照删除索引的顺序,最多删几个字母,使得剩下的字符串中依然包含那个匹配字符串。注意,一个字符被删除后,其他字母的位置不会改变原创 2017-09-29 15:34:36 · 516 阅读 · 0 评论 -
Noip 2016 蚯蚓 - 队列
AC需要O(M)O(M)算法 我们先想一个O(MlogN)O(MlogN)的算法,然后想办法优化掉logN需要做的就是不断地找最长蚯蚓,然后切一切,再给这次没有被切的蚯蚓加上一个长度q自然可以想到堆来动态维护最大值,然后需要考虑每次切割后蚯蚓的增长该怎么操作。不能去每切一次就扫一边数组,需要找到一种差分的方法,把区间操作改为端点操作。重点是差分,我们发现,如果一个蚯蚓被切,其他蚯蚓增长p,可以用一原创 2017-10-10 21:21:05 · 513 阅读 · 0 评论 -
POJ3190 Stall Reservations - 模拟 - 贪心 (差分)
题意可以去洛谷上看 https://www.luogu.org/problem/show?pid=2859我们首先想,不同奶牛使用同一台的时间,需要在不冲突的情况下尽量接近,使每台机器搁置时间最短,最后总机器数量应该是最小的我们需要一个动态的数据结构,能够找到可使用时间最早的机器,并且在另一头奶牛接手这台机器的时候,需要弹出这台机器曾经的可使用时间,而且还要logn的复杂度,那堆应该是最适合的在这原创 2017-10-28 18:42:30 · 310 阅读 · 0 评论 -
Noip 2012 借教室 - 二分 - 差分
刚看到题的时候秒打了个差分上去,然后发现要输出第一个不满足条件的合同。。。当时以为这是差分的子任务,就觉得这个东西随便找找就好了吧,然后就怎么也找不出来Orz事实证明,差分确实难打方案。。。后来才知道找订单才是主要的。。。需要二分答案来着。。。因为题目强制给你单调性了(完成订单的顺序必须满足输入顺序)所以我们可以二分一个最开始不能完成的订单,然后检查这个订单是不是真的不满足就可以了。若这个订单满足,原创 2017-10-28 20:09:46 · 535 阅读 · 0 评论 -
Noip 2013 转圈游戏 - 快速幂模板
x+m∗10kmod(n)x+m*10^kmod(n)#include <algorithm>#include <iostream>#include <cstdio>using namespace std;#define debug(x) cerr << #x << "=" << x << endl;int n,m,k,x;int fpower(int a, int b) { i原创 2017-10-28 20:30:59 · 310 阅读 · 0 评论 -
Noip 1998 洛谷P1011 车站 - 模拟
挺好玩的一道题。。。需要知道第二站到底上了多少人,可以枚举这个人数,然后模拟过去,看最后一站下车的人数是否等于m,求出这个人数后再模拟一次就好了#include <algorithm>#include <iostream>#include <cstring>#include <cstdio>using namespace std;#define debug(x) cerr << #x <<原创 2017-10-31 17:12:47 · 474 阅读 · 0 评论 -
CYJian的水题大赛[第二弹] U34202 JerryC Loves Driving
开long long 开long long 开long long !!! 太有可能爆int了 事实证明用程序打表又快又对又整洁 自己手写的表太小,写的不“整齐” 看不出什么来 用程序打了个表 输入3 15 发现一点规律 但最上面的那几行不好处理 又打了2 15 发现和3 15的有点关系 然后打了1 15 发现 3 15的表是1 15的一部分 按1 15求出减去上面那点即可(这大概算得上十...原创 2018-08-17 17:20:00 · 226 阅读 · 0 评论