
模拟
xyc1719
努力会说谎,但努力不会是白费
展开
-
NOIP第二轮模拟 Day2 小明搬家
【问题描述】小明要搬家了,大家都来帮忙。 小明现在住在第N楼,总共K个人要把X个大箱子搬上N楼。 最开始X个箱子都在1楼,但是经过一段混乱的搬运已经乱掉了。最后大家发现这样混乱地搬运过程效率太低了,于是总结出了提高效率的方法。大家的速度都是每分钟上(或下)一层楼。所有向上走的人手中都拿一个箱子,所有向下走的人手中都不拿箱子。到达第N层立刻放下箱子向下走,到达第1层立刻拿起箱子向上走。当...原创 2018-07-08 14:26:15 · 386 阅读 · 0 评论 -
锁 lock.cpp
【一句话题意】现在有n个人,每个人有一个重要值。一扇门有k把锁,每把锁可以有1-n把钥匙,每个人可以有1-k把钥匙。要求:所有重要值之和小于m的人聚在一起不能打开门,所有重要值之和大于等于m的人聚在一起一定能打开门。问最小的k有多大。n<=20,m<=1e9【分析】这个房东的数学一定学的很好这是一道标准的数学证明题,目前来看联赛应该不会出这一类的题。毕竟做得出来和做不出来只有两...原创 2018-11-01 18:04:34 · 243 阅读 · 0 评论 -
准备 【破环成链】、【差分】
【一句话题意】有一个环形的序列标号从1到n,每个元素有一个随机值ai,现在允许环形序列每个点同时顺时针转x圈,求使Σi=1n∣ai−i∣\Sigma^n_{i=1} |ai-i|Σi=1n∣ai−i∣最小的方案,输出最小值。n&amp;lt;=1e6【分析】由于元素是随机的,但是标号十分有规律的,所以我们转而考虑固定序列,旋转标号。显然当标号i大于ai时,右移i,那么ai会对答案做减一的贡献;当...原创 2018-11-06 15:31:36 · 508 阅读 · 0 评论 -
排名【二分答案】【数据结构+模拟】
【一句话题意】给定n个人的初始位置,再给出每个人的速度,问在无限长的跑道上前m次“追赶事件”(一个人超过另一个人)n,m<=1e5【分析】这道题二分答案乱搞,先二分时间,再归并排序求逆序对,然后有个不强和另一个超强的剪枝。(弱)如果二分出的mid,求得的逆序对个数等于m,则跳出循环。(强)如果逆序对个数已经大于m了,则结束归并排序。std是说,用链表模拟(或者说维护?)相对位置,再用优...原创 2018-11-06 16:03:48 · 179 阅读 · 0 评论 -
地砖设计 贪心、字符串
话说原题目是叫地砖铺设?【题意】用任意边长任意颜色的正方形相接形成一个nm的矩形,求nm的字典序最小的矩形。【分析】贪心+乱搞?枚举每个点,并找到这个点可以染的最小颜色(只考虑不和上方、右方重复),如果和左边颜色相同,就合并成一个更大的正方形。这一定比在这个点填其他颜色要小。【code】#include <cstdio>#include <cstring>#in...原创 2018-11-04 14:13:57 · 201 阅读 · 0 评论 -
集合划分 partition.cpp
【一句话题意】给定一个包含N 个非负整数的集合A,请将A 分成两个子集P、Q,且使得gcd(ΠPiΠQi)==1gcd(\Pi P_i \Pi Q_i)==1gcd(ΠPiΠQi)==1。请计算这样的划分方法总数mod1000000007 后的值。 n<=1e6【分析】一道可做的数论题。按质因数划分,P和Q中不能有相同的质因数,拥有相同质因数的数必须放在同一个集合。将每个数分解质因数后...原创 2018-11-02 15:08:43 · 415 阅读 · 0 评论 -
作画鬼才
【题意】给出一幅原图,接下来有k幅图,每一幅都是在原图上选取一个矩形将他们改为同一个颜色,问以那幅画为标准的差异值最小【分析】大致思路是“在一个二维平面有大量修改,求修改后的统计结果“。既然有大量修改,又可以离线回答统计结果,何不用差分呢(抱歉,这里是二维的)。差分表示到(i,j)颜色为k的修改有几个,nm跑一遍就可得到(i,j)有几个点修改为颜色k,加上原图中未被修改的部分就是(i,j)颜色为...原创 2018-11-04 16:06:41 · 195 阅读 · 0 评论 -
俄罗斯方块 game.cpp
【一句话题意】给定一种俄罗斯方块和游戏底部的方块状态,求方块全触底的放置方案数(方块可旋转,相同形状算一种)【分析】简单模拟题,注意七类分类讨论时理清思路。【code】#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace...原创 2018-11-07 13:30:44 · 282 阅读 · 0 评论 -
数独 soduku.cpp
额,这是一道关于数独的纯模拟题,每一位选手都拿到满分。。。。。。【code】#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;int T,x,y,k;char s[30];int g[110][10][1...原创 2018-11-05 14:24:30 · 376 阅读 · 1 评论 -
最大序列 seq.cpp
【一句话题意】给定入队序列,求字典序最大的出队序列。【分析】显然,这是一道模拟题;显然,满足字典序最大,贪心即可。然后喷一下出题人,没有设置Θ(n)\Theta(n)Θ(n)的点,Θ(nlog2n)∗STL\Theta(nlog_2n)*STLΘ(nlog2n)∗STL乱搞也可以轻松卡过。【code】#include<cstdio>#include<cstring&g...原创 2018-11-05 14:35:51 · 288 阅读 · 0 评论 -
思考熊的马拉松 running.cpp
【一句话题意】给n个点,每个点速度不一地在长为A圆形跑道上跑步,当最快点跑完L圈时,问发生了多少次套圈。【分析】可以根据最快点,算出所有点的跑的圈数和不到一圈的部分。先根据每个人跑的圈数求出大致意义上的套圈数。又考虑到有可能在剩余部分中也存在套圈,求剩余部分比第i小的点的个数加上就是答案,查询时用离散化后的树状数组(或线段树),总复杂的为O(nlog2n)O(nlog_2n)O(nlog2n)...原创 2018-11-05 15:01:15 · 427 阅读 · 0 评论 -
搬桌子 move.cpp
【简化题意】n个搬桌子的路径在一条[1,200]坐标轴上,路径不重合的搬运可以同时进行,求最小搬运时间。n<=1e7【分析】相信各位大佬们都看出来了,这是一道显然的差分题。求区间重叠的状况,数据范围又奇大无比,还不要求强制在线,实在是一道练差分的模板题。(如果n<=1e6,没准还有可能会想用树状数组,逃)【code】#include<cstdio>#incl...原创 2019-01-26 14:59:38 · 497 阅读 · 0 评论 -
数列
【简要题意】有两个数列{x},{y},满足x0=y0=1x_0=y_0=1x0=y0=1数论递推式:xn=xn−12+xn−1,yn=yn−121+2yn−1,(n≥1)x_n=\frac{x_{n-1}}{2+x_{n-1}},y_n=\frac{y^2_{n-1}}{1+2y_{n-1}},(n≥1)xn=2+xn−1xn−1,yn=1+2yn−1yn−12,(n≥1)...原创 2019-02-16 15:09:37 · 188 阅读 · 0 评论 -
百万小小兵
【简要题意】求1-n中与n不互质的数的个数。 n<=1e8【分析】当然是求φ(n)\varphi(n)φ(n)然后相减啦。。。。利用公式φ(n)=n(1−1p1)(1−1p2)(1−1p3)⋅⋅⋅⋅⋅⋅\varphi(n)=n(1-\frac{1}{p_1})(1-\frac{1}{p_2})(1-\frac{1}{p_3})······φ(n)=n(1−p11)(1−p21)...原创 2019-02-17 13:27:54 · 181 阅读 · 0 评论 -
序列 sequence.cpp
【一句话题意】有一个序列,定义f(x)为x在十进制下的位数,特别地,求对于序列Σ1≤i&lt;j≤nf(ai+aj)\Sigma_{1≤i&lt;j≤n}f(a_i+a_j)Σ1≤i<j≤nf(ai+aj)【分析】先将序列从小到大排序。枚举i点,再二分i点左边最小的使aia_iai进位的点。时间复杂度O(nlog2n)O(nlog_2n)O(nlog2n)【c...原创 2018-11-01 16:59:58 · 348 阅读 · 0 评论 -
数列编辑器 editor.cpp
【简要题意】有五种操作大致是1、在光标前插入一个数2、在光标前删除一个数3、光标左移4、光标右移5、询问从1到k的最大前缀和,保证k个元素在光标前操作数小于等于1e6【分析】此题如果直接模拟,就可以获得80分的好成绩。但是如果再采用延迟更新,也就是向左移和删除时不更新,向右和插入时把元素塞入一个栈中,并对栈进行一顿操作。询问时只要询问栈前k个前缀和中的最大值就可以了,这也是可以...原创 2018-10-30 14:17:50 · 438 阅读 · 0 评论 -
打印费用 Printer
【题意】如同一家正常的打印店一样,当打印的张数大于等于ai时每张打印件的费用为bi。保证ai递增,bi递减。有m&amp;amp;lt;=1e5个询问,问当打印张数为qi时,最小费用是多少。【分析】最小费用应该是按张数打印,或者是额外打印一定张数以减小总体费用。关键在于应该额外打印多少张。我们可以利用bi递减的这个性质。如果定义d=费用*限制张数,如果di&amp;amp;amp;lt;=di+1d_i &amp;amp;amp;lt;=...原创 2018-10-26 16:09:57 · 232 阅读 · 0 评论 -
NOIP2012 Day1 vigenere密码
【问题描述】有一位法国外交家发明了一种神奇的算法明文是M,密钥是k,密文是C。加密规则如下:c[i]=m[i]@k[i] 加密注意点; 1、加密时忽略明文和密钥的大小写,并在密文中保持明文的大小写 2、当明文M的长度大于密钥K的长度时,K可以被循环使用。 例如,明文 M=HelloworldM=Helloworld ,密钥 k=abck=abc 时,密文 C=...原创 2018-07-05 17:58:31 · 477 阅读 · 0 评论 -
【NOIP2015】Day1神奇的幻方
【题目描述】 幻方是一种很神奇的 N*N 矩阵:它由数字 1,2,3, ,N×N 构成,且每行、每列及两条对角线上的数字之和都相同。当N 为奇数时,我们可以通过下方法构建一个幻方:首先将 1 写在第一行的中间。之后,按如下方式从小到大依次填写每个数 K(K=2,3,⋯,N×N) :若 (K-1) 在第一行但不在最后一列,则将 K 填在最后一行, (K-1)所在列的右一列; 若 ...原创 2018-07-24 18:44:37 · 265 阅读 · 0 评论 -
【NOIP2015】Day1 信息传递
题目描述 有 n 个同学(编号为 1 到 n )正在玩一个信息传递的游戏。在游戏里每人都有一个固定的信息传递对象,其中,编号为 i 的同学的信息传递对象是编号为 T_i 的同学。游戏开始时,每人都只知道自己的生日。之后每一轮中,所有人会同时将自己当前所知的生日信息告诉各自的信息传递对象(注意:可能有人可以从若干人那里获取信息, 但是每人只会把信息告诉一个人,即自己的信息传递对象)。当有人从别...原创 2018-07-24 19:02:54 · 313 阅读 · 0 评论 -
【NOIP2015】Day1 斗地主
这里是洛谷的传送门【分析】 强烈建议做一下luoguP2540斗地主增强版,人不能只满足于随机数据,因为出题人往往都会出一些神奇数据来满足你被卡的愿望。这里讲一下我看见的某位大神的思路:先用f[i][j][k][l]表示当有i个炸弹,有j个三,有k个对子,有l个单牌时最少的出牌数(不考虑顺子),用动归求出每个数值,留作后用。(其实就是预处理,逃)。然后dfs顺子(单顺子、双顺子、三顺...转载 2018-07-24 19:28:29 · 178 阅读 · 0 评论 -
荒诞 (absurdity)
【分析】恩,这是一道结论题。恩,没错。 发现无论我们构造一个怎样的字符串,均有Pi=i。 于是我们的问题就变成了求前n项的平方和。鉴于n只有1e6,所以可以直接手摸。也可以使用通项公式:s(n)=n(n+1)(2*n+1)/6。注意每次取模,防止爆零。更不要像我一样手残的输出n。 求通项公式的六种解法 这里是手动模拟的代码:#include<cstdio>...原创 2018-08-12 17:01:50 · 575 阅读 · 0 评论 -
ISIJ 2018 奇怪的字符串
ISIJ 2018 奇怪的字符串(Training Round D6T1)题目名称:奇怪的字符串文件名称:strange.in / strange.out题目描述考虑字符串 s 仅由小写字母组成,例如 “abba”。定义 W(s) 为 s 所有本质不同的连续子串的集合,例如 W(“abba”) = { “a”,”b”,”ab”,”ba”,”bb”,”abb”,”bba”,”...原创 2018-08-16 18:30:31 · 631 阅读 · 0 评论 -
Codeforces 359A 矩阵涂色(Table)
CF359A 题面大概是说,给你一个矩阵。矩阵中有一些特殊点,用1表示。你可以从某个一点出发任选一个点把两者之间的矩阵染色,问最多需要染色几次。保证四个角不会是1.任选一点,为使染色的矩阵面积最大,我们只应该选四角。任选一个点,最多四次就可以将全图染色。如果有点在矩阵的四条边上我们可以两次完成染色。(不接受任何反驳,有兴趣的同志可以自己手推一下)垃圾算法:#include<...原创 2018-08-17 18:55:13 · 937 阅读 · 0 评论 -
国庆七连测(二)多段线性函数
【冗长的题目描述】目标是使得f(y)尽可能的小,并求出y的取值范围。【算法1】根据数学证明,f(y)应该是成u形或者平底锅形,所以二分或者三分求“谷底”就可以了。复杂度为O(n* log2n)【算法2】rt,我们考虑多段的线性函数。对于每一个绝对值函数。y<li时,等于-y+li;li<=y<=ri时,(最小)等于0;y>ri时,等于yi-ri;将这n个函数...原创 2018-10-02 16:45:26 · 234 阅读 · 0 评论 -
国庆七连测(六)德克萨斯扑克
【简化题目描述】简化德州扑克的规则,从七张牌中选取五张牌。在忽略花色的情况下,我们把牌型分为七类,大小依次递减。1、四带一 2、三带对 3、顺子 4、三带二(两张牌不要求相同)5、两对带一张单牌 6、只有一对 7、什么也不是。牌型相同则输出最大的排序。注意通常情况下A>K>Q>J>10>9>8>7>6>5>4>3>2。只...原创 2018-10-06 15:44:04 · 351 阅读 · 0 评论 -
Jingle.cpp
【一句话题意】给你若干段字符串用‘/’分隔,分别用WHQESTX表示1、12、14、18、116、132、1641、\frac{1}{2}、\frac{1}{4}、\frac{1}{8}、\frac{1}{16}、\frac{1}{32}、\frac{1}{64}1、21、41、81、161、321、641问有多少个字符串的长度和为1。【分析】纯模拟,把所有数乘64就可以整数处理。由...原创 2018-10-28 14:33:56 · 130 阅读 · 0 评论 -
进制 base.cpp
【一句话题意】给数p、q、r,已知p、q为十进制数,求最小的b使得在b进制下p*q的值等于r。令t为t在b进制下的值。p、q、t<=1018。有1e4个询问。2<=b<=16,保证有解。【分析】最直观的算法当然是高精度运算,每次从2~16枚举b的值,直接暴力即可。但这样编程复杂度奇高,想我这种既懒,又差错能力低下的人是很不适合的。再对题面进行分析,因为t小于1e18且保证有...原创 2018-10-29 13:53:36 · 201 阅读 · 0 评论 -
置换 perm.cpp
【一句话题意】定义置换a∗b=c为,cbi=ai(1⩽i⩽n)a*b = c为,c_{b_i}=a_i(1 ⩽ i ⩽ n)a∗b=c为,cbi=ai(1⩽i⩽n)现在有一个长度为n的置换p。求大于0的最小的k使得[1…n]pk=[1…n]。k对19184192取模。n<=1e5【分析】刚开始没有看懂题意,在打了一个暴力模拟置换的程序之后才大致明白。无外乎是重复按照p的方式进行置换,...原创 2018-10-29 14:19:20 · 215 阅读 · 0 评论 -
24 点 card.cpp
【题目】求解n个n能否组合形成24点。能则输出详细方案。n<=200。有多组询问。【分析】因为只有询问,所以考虑预处理出对于所有的n询问。又因为要输出详细的方案,更加坚定了我们打表的想法。只不过这张表的打法有一点特殊。因为dfs枚举打表只能骗到30分,到n<=15时,就不得不花大时间离线打表了,而且貌似没有规律可循。关键在于我们在找规律的过程中过度依赖程序本身而缺少手推和构造的能...原创 2018-10-29 16:14:53 · 134 阅读 · 0 评论 -
字符串(p)review学习笔记
目前会持续填充一些字符串的模板,后续会对有关题目进行进一步展开。【Hash】一个比较万能的算法,在Θ(n)\Theta(n)Θ(n)的预处理之后,就可以对两个字符串进行Θ(常数)\Theta(常数)Θ(常数)的比较了。其基本思想是将一串字符串映射成一个数字,通过比较数字来比较字符串。具体上是将每位字母映射成一个值,每加进来一个值,就把前面的值乘上一个位数。这些数用前缀和存起来,需要比较时移...原创 2019-04-06 11:10:45 · 416 阅读 · 0 评论