自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 收藏
  • 关注

原创 AtCoder Beginner Contest 215 G - Colorful Candies 2

AtCoder Beginner Contest 215 G - Colorful Candies 2有n个糖果,每个糖果有着一个颜色a[i],每次拿k个糖果期望拿到E(x)个不同颜色的糖果,求出k从1~n分别得到的E(x)。最终答案mod998244353。数据范围n <= 5e4看到这个问题首先反应是答案和颜色的具体值以及出现的顺序无关,所以离散化之后用一个cnt数组记录他们分别的出现次数之后就可以不用去管a[i]了。之后可以发现,要求出选k个糖果后不同颜色的糖果的期望值,就是求出每一

2021-08-24 13:45:30 322

原创 AtCoder Beginner Contest 215 F - Dist Max 2

AtCoder Beginner Contest 215 F - Dist Max 2平面上有一系列的点(xi,yi)(x_i,y_i)(xi​,yi​),定义两点(xi,yi),(xj,yj)(x_i,y_i),(x_j,y_j)(xi​,yi​),(xj​,yj​)的距离为min(∣xi−xj∣,∣yi−yj∣)min(|x_i-x_j|,|y_i-y_j|)min(∣xi​−xj​∣,∣yi​−yj​∣),求出最远的两个点的距离想过用二分答案,但是没有想到怎么check,赛后看到题解发现其实很

2021-08-22 14:14:13 202

原创 AtCoder Beginner Contest 215 E - Chain Contestant

AtCoder Beginner Contest 215 E - Chain Contestant给出一个只包括A~J的字符串,定义一种子序列为:在这个子序列中,相同的字符必定连续出现,求出这样的子序列有多少个。数据范围:字符串长度1 <= n <= 1000看起来就是一道状压dp,但是写得不是很顺利,所以在这里回顾一下。定义dpi,j,kdp_{i,j,k}dpi,j,k​为,到字符串的第i位,出现过j种类的字符(j是状态压缩),目前最后的一位为k。状态转移的时候,我们可以认为当

2021-08-22 14:03:40 170

原创 牛客九 J-Jam

牛客九 J-Jam题意大概是一个十字路口,从每一个方向来的车会驶入其余的三个方向,总共有12种方向。给定每个方向车流的数量ci,jc_{i,j}ci,j​,问需要多少的单位时间可以使所有车辆驶过这个路口,并且要满足车流不能交错(如不能一边W->E一边N->S)。数据范围:0<=ci,j<=1000<=c_{i,j}<=1000<=ci,j​<=100题意不是很好理解,但是如果平时对于十字路口的信号灯有观察的话还是会大致明白这个题需要做什么。在剔除了

2021-08-22 13:45:03 121

原创 牛客一 K-Knowledge Test about Match

牛客一 K-Knowledge Test about Match给出一组bi,将其顺序进行变换,使得min∑i=1n∣bi−i∣min\sum_{i=1}^n\sqrt{|b_i-i|}min∑i=1n​∣bi​−i∣​,将变换顺序的数组输出。要求与正确的答案的差值在4%以内。数据范围:一共T组数据,100 <= T <= 500,10 <= n <= 1000,sum n <= 4e4开始是想写随机算法的,不过数据量有点大,随机数生成与取模所带来的时间消耗没法在规定

2021-08-05 14:21:07 74

原创 牛客一 G-Game of Swapping Numbers

牛客一 G-Game of Swapping Numbers给出n个数ai和n个数bi,每一次可以交换两个数ai和aj,最后求出max∑i=1n∣ai−bi∣max\sum_{i=1}^n|a_i-b_i|max∑i=1n​∣ai​−bi​∣数据范围:2 <= n <= 5e5, -1e8 <= a, b <= 1e8, 0 <= k <= 1e8贪心,先处理出来初始状态的ans的值,然后每次交换要最大化自己的答案。我们考虑应该如何去使答案增大。对于(ai,

2021-08-05 01:35:24 91

原创 牛客第六场 H-Hopping Rabbit

牛客第六场 H-Hopping Rabbit给出平面上的n个矩形,一只兔子从(x0+0.5,y0+0.5)(x_0+0.5,y_0+0.5)(x0​+0.5,y0​+0.5)出发,每一次可以平行于x轴或y轴跳跃d的距离,求出一个初始位置使得不管怎么跳都不会跳入到矩形中。数据范围n,d<=1e5,平面坐标在-1e9到1e9当中容易想到转化,变为了这样的问题:在一个d*d的矩阵当中进行矩形覆盖,求出最后有没有点没有被覆盖到,如果存在则求出它。但是这个问题卡住了,最后没有想出来做法。后面听说了线

2021-08-03 19:00:46 225

原创 AtCoder Beginner Contest 204 F Hanjo 2

AtCoder Beginner Contest 204H宽,W长的二维平面上,用1 * 1或者2 * 1的地砖来铺,要求铺满,求出方案数。数据范围H <= 6, W <= 1e12看到W的范围就可以想到是一个矩阵快速幂优化的dp转移,问题的关键是如何写出dp的方程以及矩阵的构造。这里题解的巧妙在于状态的定义,因为不好处理1 * 2的地砖横着摆的情况,因为这会跨两行,我开始以为会有2^12,也就是枚举两行的状态。不过这里状态的定义是当前行的二进制状态压缩,并且要保证前一行是已经塞满的

2021-07-31 00:03:00 351 1

原创 牛客多校三 B Black and white

牛客多校三 B Black and white在n*m的棋盘上,每个格子有一个数,初始可以选一定的格子标记为黑色,在任意2 * 2的格子当中,如果有三个格子已经是黑色的了,那么剩下的一个可以自动染黑。问选哪些格子初始标记为黑色,可以使最终整个棋盘变为黑色的同时,选择的格子数字之和最小。数据范围n, m <= 5000, a, b, c, d, p用于格子中的数字生成。也是一个思维题,转化成一个最小生成树。在拿到题时候可以发现,至少要选择一行和一列,可以让整个棋盘都变为黑色。不过不一定是要一

2021-07-25 19:55:35 121

原创 codeforces 7.22 F Pairwise Modulo

codeforces 7.22 F Pairwise Modulo给出n个数的数列a,每个数互不相同且都小于3e5,求出qk=∑1<=i,j<=kai mod ajq_k=\sum_{1<=i, j<=k}a_i~mod~a_jqk​=∑1<=i,j<=k​ai​ mod aj​其中n <= 2e5题意很简单,就是求出前1到n个数两两之间相互取mod之后的和,但是拿到题的时候一点思路都没有,靠着题解过活。分析qkq

2021-07-25 01:49:52 150

原创 codeforces 7.22 E Permutation Shift

codeforces 7.22 E Permutation Shift给出一个1到n的排列,每次可以交换两个数,问在交换最多m次(m <= n/3)之后能不能得到由1 2 3 … n循环右移所得到的的排列,输出所有能得到的排列和循环右移的次数。数据范围:n <= 3e5有点脑洞的一道题。由于最多交换m次,那么最多会有2m个数交换位置,而剩下的n - 2m个数是在原位置不变的。也即是,在循环右移k位之后,有至少n - 2m个数是与给出的排列对应位置的数相同的。而在循环右移的过程中,对

2021-07-24 23:46:20 141

原创 [NOI2009] 植物大战僵尸

[NOI2009] 植物大战僵尸在n*m的地图当中,每个位置都有一个植物,每个植物有一个价值,这个价值可能是正数也可能是负数。每个植物可能有几个攻击的位置,只有在除掉这个植物之后才可以到那几个位置去。作为僵尸,只能从右往左攻击,每次可以除掉一个植物,找到方案使除掉的植物总价值最大。数据范围n<=20 m<=30最大权闭合子图入门题,用最小割来解决。如果我们要除掉一个植物的话,那么首先我们需要除掉的是在这个植物右边的所有植物以及所有可以攻击到这个位置的植物,也就是,如果选择了这个植物,

2021-07-21 19:21:24 173

原创 方格取数问题

方格取数问题有一个m行n列的方格图,每个方格中都有一个正整数。现要从方格中取数,使任意两个数所在方格没有公共边,且取出的数的总和最大,请求出最大的和。数据范围1<=n,m<=100把这个最小割的题补了网络流的题最难的还是在于建模。在这个题目中,首先我们假设所有的数都取出来了,然后放弃一部分数来使其合法。因为相邻的两个点不能同时取,所以它们之前的边容量应该是inf,根据行与列之和的奇偶性,可以将原图转化为一个二分图,源点向其中一边的点连接容量为a[i][j]的边,另一边向汇点连接容量为

2021-07-21 16:12:16 373

原创 2021中超1 1010 zoto

平面上有n个点,坐标分别为(i, f[i]),有m个询问,每一次询问求出在(xl, yl, xr, yr)的区间当中有多少个y坐标不同的点。数据范围:1<=n, m<=1e5, 0<=f[i]<=1e5莫队+分块(O(1)O(1)O(1)修改,O(n)O(\sqrt{n})O(n​)查询)询问可以离线出来,因为x的坐标是1到n互不相同的,所以将x当做第一维来进行莫队的询问排序。接下来就是对y坐标的处理,有两个操作,一个是在f[i]的位置上进行单点修改(+1或者-1),另一.

2021-07-21 15:02:12 179

原创 21上海省赛 F-鸡哥的限币令

21上海省赛 F-鸡哥的限币令n个点m条单向边的图中,边上有边权,要求选择一个边的集合使得每一个点有至少一条连入的边和一条连出的边,且这个集合的边权和最小。如果不能找到,输出-1;如果找到了,输出边权和、选择了几条边以及是哪些边。数据范围2<=n<=300, 1<=m<=n(n-1)看数据范围大概可以猜测是一个网络流,可以通过这道题学习一下上下界网络流怎么写。我们把n个点拆成2n个,每个点由一个入点和一个出点所构成,初始的每一条边都由出点向入点连接,边的容量为1,费用为w

2021-07-20 23:48:33 365

原创 2021中超1 1006 xor sum

2021杭电1 1006 xor sum给定n个数和一个数k,求出最短的连续的一段数,使得它们的异或和大于等于k,如果没有则输出-1。其中1<=n<=1e5,0<=k, ai<=2^30之前还没有做过这个类型的题,队友给我说可以用trie来搞,存个前缀和,然后就不会了。沿着这个想法乱搞了一下,发现还可以做,写了出来发现还真能过样例,调了一下(init忘了调用)就过了。大致思路是这样的:trie上有0,1两个分支,从左到右枚举n个数,求出前缀异或和,转二进制塞到trie里面

2021-07-20 17:45:26 567 10

原创 最大01子矩阵

最大01子矩阵n*m构成的01矩阵当中求出最大的全1矩阵,n,m<=2e3哈哈,想不到写挂了,虽然知道是单调栈,但是写了一下居然写错了错误写法: for (int i = 1; i <= n; i ++) { stack <node> s; for (int j = 1; j <= m; j ++) { while (!s.empty() &am

2021-07-20 15:14:34 325

原创 [AHOI2014/JSOI2014]支线剧情

[AHOI2014/JSOI2014]支线剧情有n个剧情点,对于第i个剧情点有ki个分支,分别通往tij剧情点,耗费时间为bij。从1号点开始,可以从任何节点返回1号点,要遍历所有的边的最少耗费时间为多少上下界网络流板子题,每一条边的下界为1,除了起点外每一个点都可以是终点,所以建第n+1个点为汇点,这样就是一个有源有汇的上下界网络流,由汇点向源点建一条容量为inf的边。这个题没有上界,所以一定可以保证有可行流。初始每条边都默认flow为1,先加入答案,然后建立平衡网络,跑出可行流加入答案即可。

2021-07-19 18:30:46 156

原创 重构算法大赛 D zeal

重构算法大赛 D zeal给出n个数,q次询问,每次询问求区间(l, r)当中出现k次的数有多少个0 < a, k <= n <= 4e4, q <= 1e4, l <= r一个莫队的板子题,通过这道题学到了对于可以离线的询问,且可以O(1)O(1)O(1)时间从ans(l, r)转移到ans(l - 1, r), ans(l + 1, r), ans(l, r + 1)和ans(l, r - 1),就可以用莫队算法具体的算法流程大致是分块排序,然后暴力区间转移,

2021-07-19 01:12:35 245

原创 AGC002E Candy Piles

AGC002E Candy Piles有n堆石子,每堆石子有aia_iai​个,两人轮流操作。要么取走石子最多的一堆,要么将每堆石子取走1个。谁取走最后1个石子,谁就输了。假设两人都足够聪明,求先手必胜还是后手必胜。对于两种操作:1.每一次去除最大的数 2.每一次将所有的数减一,那么可以按照从小到大排序,化为一个网格图,那么最后得到的图中,每一次操作相当于从(0, 0)点开始每一次向上移动一格或者向右移动一格:边界上都为必败点,其余点就按照必败和必胜点的方法转移即可。将边缘点里面一格求出来就

2021-07-19 00:58:36 127

原创 codeforces educational round110 e

codeforces educational round110 e给一颗初始只有根节点0的树,规定一个节点有数量aia_iai​,单位价格为cic_ici​的矿物。q个操作,一是往某一个节点下增加一个节点,保证增加的节点的单位价格比这个节点高;二是选择某个节点,从根节点到当前节点路径上购买www个货物,要求价格和最小,如果不够就能买多少买多少。做这个题的时候少看了一个条件,没看到保证比父亲节点价格高,所以不会。后面发现别人写的代码都是树上倍增,才知道题读错了。不过反正树上倍增也不熟……const

2021-07-18 13:42:29 104

原创 SDOI 2009 E&D

SDOI 2009 E&D小E与小W进行一项名为 EDE DED 游戏。游戏的规则如下:桌子上有 2n2n2n堆石子,编号为 1∼2n1 \sim 2n1∼2n。其中,为了方便起见,我们将第 2k−12k-12k−1堆与第 2k2k2k 堆(1≤k≤n1≤k≤n)(1 \le k \le n1≤k≤n)(1≤k≤n1≤k≤n)视为同一组。第iii 堆的石子个数用一个正整数SiS_iSi​表示。一次分割操作指的是,从桌子上任取一堆石子,将其移走。然后分割它同一组的另一堆石子,从中取出若干个石子

2021-07-18 13:40:59 115

原创 21-5-22校赛J 下围棋

21-5-22校赛J 下围棋给出一个节点个数为n的树,其根节点为1,两个人轮流操作,每一次操作可以选择一个非根节点,删除这个节点及其子树,当一个人无法进行操作的时候,他就输掉了。问后手是必胜还是必败。一个树上的博弈问题,只能说自己的sg函数生疏了,也可能是根本没有掌握好(可以考虑刷点博弈的题了)。对于一个节点来说,其子节点所对应的每一个子树都可以看做nim游戏当中的一个石堆,所以相当于每一个节点的sg函数的计算就是一个nim模型然后就是一个树上删边博弈问题,主要是为了证明一个结论:SGA=SGB

2021-07-18 13:36:22 89

原创 21-5-22校赛G 自行车调度

21-5-22校赛G 自行车调度n个点,m条边的无向带正权图(编号1到n)。每个点初始有a[i](0<=a[i]<=1e5,1<=i<=n)辆自行车,自行车管理员可以花费一个边权的代价移动一辆自行车从边的一端到另一端。求自行车管理员所需的最小的代价使每个点自行车数量相等(无解输出-1)。调度问题,百分之九十都是网络流,这个题是图上的费用流直接在原图跑费用流就好了啊,我在干什么,还建了个完全二分图。。const int N = 510, inf = 1e9;int a[N

2021-07-18 13:33:55 107

原创 luogu p3515 Lightning Conductor

luogu p3515 Lightning Conductor给定一个长度为n的序列,对于每一个i∈[1,n]i∈[1,n]i∈[1,n],求出一个最小的非负整数p,使得对于所有的j∈[1,n]j∈[1,n]j∈[1,n],都有aj<=ai+p−∣i−j∣a_j<=a_i+p-\sqrt{|i-j|}aj​<=ai​+p−∣i−j∣​通过这个题学习到两点,一个是用分治的方法解决1D1D类型的四边形优化dp问题,另一个是根据凸性来得到四边形不等式。稍微对于原来的式子做一点变化,可以

2021-07-18 13:32:16 56

原创 Yinchuan-B The Great Wall

yinchuan-B The Great Wall给出n个数,将其划分为k个区间,要求每个区间当中的最大数和最小数的差值之和最大。求k从1到n的答案。n <= 1e4因为这个题开始学四边形优化,其实会了之和回头看感觉还是蛮简单的,w(i,j)w(i,j)w(i,j)的四边形不等式很好证明,然后用个ST表来实现O(1)O(1)O(1)的查询,1e8的空间还是有点大,所以学着写了滚动数组。这个代码是按照印象中的题意随便糊的,就过了一下样例,没有在oj上进行测试。const int N = 1

2021-07-18 13:29:20 152

原创 codeforces round721 div2. E

给n(n<=35000)个数,要求分成k(k<=100)个区间。每个区间当中如果有多个相同的数,那么答案就会加上这个数最后一个减去最前一个的位置。要求划分后答案最小的值是多少。最近四边形优化做的有点多,下意识觉得可以用决策单调性,但是想想好像不太能够存的下(可能要用一些比较高级的数据结构),看了其他人的代码,发现都是用的线段树。首先写出dp方程:,然后我们考虑a[j]对于答案的贡献,假设a[j]上一次出现的位置是pre[j]:1.a[j]在区间(pre[j]+1...

2021-07-18 13:24:48 63

原创 luogu p4767 邮局

给定V个村庄的位置xi,建P个邮局,使每个村庄到最近的邮局的距离之和最小。P<=300,P<=V<=3000,1<=xi<=10000这是个类2D1D的dp,状态由转移得到,依次推出以下结论:时,并且从而得到从而有决策单调性最后,当我们需要求出的时候,只需要枚举作为决策区间即可。注意到需要的值,所以需要倒着枚举。const int N = 3010, M = 310, inf = 1e9;int a[N], w[...

2021-07-18 13:19:03 152

原创 51nod 1022 石子合并v2

就是石子合并的数据范围变为了1e3经典四边形优化区间dpconst int N = 2e3 + 10;const long long inf = 1e18;long long dp[N][N], sum[N];int m[N][N], a[N];int main(){ int T = 1; //T = read(); while (T --) { int n; n = read(); for (int i = 1; i <= 2 * n; i ++) ..

2021-07-18 13:08:12 71

原创 Hello world

之前某个博客现在已经寄了,补题之后不写点什么东西就像白补了一样直接搞忘,所以新挖一个坑。打算先把之前的本地保留的东西移植过来,之后补题就直接写在这上面了。希望这一次不是三分钟热度。...

2021-07-18 13:05:27 120

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除