模拟
方哲Beans
一只小蒟蒻
展开
-
Diane
给一个数n,要求一个字符串,要求满足所有相同的子串的数量都是奇数,输出这个字符串。不难发现只要字符串不存在对称结构即可。原创 2023-05-25 19:35:54 · 52 阅读 · 0 评论 -
Add One
给一个数n, 有m次操作,每次操作把n的每一位加一,例如1912操作一次后变成21023.问操作m次后,数字的位数。(k<=m),然后把n的每一位操作后的长度加起来即可。可以初始化0~9每一个数字操作k次后的位数f[i]原创 2023-05-25 19:33:42 · 79 阅读 · 0 评论 -
Ira and Flamenco
先记录每个数出现的次数,再用set给数组排序去重一下。对于合法的m个数,其选择方案数就是每个数的数量乘起来。然后枚举每个合法区间即可,求区间方案数,可以用前缀和来求,具体看代码。给一个数组,你要选m个数,且其中最大-最小要小于m,求方案数mod1e9+7。原创 2023-05-20 12:13:08 · 145 阅读 · 2 评论 -
Flipper
因为n <= 2000 ,所以可以暴力,因为字典序要最大,所以得找到最大的数,把它放到最前面,因此,选择的区间右端点r得固定在最大数前面,因为必须要进行一次操作,所以最大数因该从i==2开始找,找到右端点后,枚举左端点l即可。给一个排列,要求做一次操作,选择一个区间,翻转区间中的数,同时区间前面的数全部挪到后面去,区间后面的数全部挪到前面去。求操作后的最大字典序,输出最大字典序的排列,n <= 2000。原创 2023-05-20 12:12:24 · 53 阅读 · 0 评论 -
Range Sorting (Easy Version)
随后对于每个位置i,找到它前面的合法区间和后面的合法区间,ans减去前面的合法区间*后面的合法区间。先初始化答案,即对于每个i,ans += (i - 1) * ((i - 1) + 1) / 2。即等差数列求和,把所有合法不合法的花费都加起来,后面再把合法的减去。合法即升序,不合法为非升序。给出一个数组,对所有子数组,找到其中的非升序区间r,l。其花费为r - l。原创 2023-05-15 13:34:41 · 204 阅读 · 0 评论 -
Counting Orders
对于a[i],在b中找到第一个大于等于它的数,前面的小于它的位置都可以放a[i], 但是得减去前面已经放了数的位置。给出两个数组a和b,求a数组有多少中排列使得a[i]>b[i],输出排序方案数mod (1e9 + 7)。即把所有位置的方案数都求出来,相乘即可。先对a和b按从小到大排序。原创 2023-05-15 13:33:01 · 134 阅读 · 0 评论 -
Red-Blue Operations (Hard Version)
如果k小于n就直接加,如果k大于n就把加放在后面,后面全部加,前面的分组每一组为+cnt,-(cnt+1)如果k-n是偶数,那就要减(k-n)/2,如果是奇数,就减(k-n+1)/2。选一个数,如果它是红色,则+cnt,如果是蓝色,则-cnt,然后cnt++,如果当前是红色,变成蓝色,否则变成红色。设当前操作次数为cnt;原创 2023-05-13 12:54:24 · 157 阅读 · 2 评论 -
Range Update Point Query
先预处理出每个数的所以操作结果,然后再用树状数组维护每个位置的操作数即可。原创 2023-05-12 17:11:47 · 184 阅读 · 0 评论 -
Bouncy Ball
给一个n * m 的矩形和一个小球,小球的初始位置为(sx,sy),如果小球撞到墙壁,会以反弹。因为每个点有四种方向可以走,所以小球最多走4 * n * m次,所以只要模拟4 * n * m次运动即可。其中D代表向下,U代表向上,R代表向右。的运动状态为"UR",那么下一步小球的位置为(sx - 1, sy + 1)。举个栗子,“DR"撞到下边界会反弹为"UR”,如果当前。问小球经过多少次反弹能到达(ex,ey)。如果不能到达,输出-1。原创 2023-05-12 13:34:04 · 88 阅读 · 0 评论