分类:算法竞赛

题意有一个只有 $-1,0,1$ 的序列,每次操作可以使 s[i]+=s[i-1] ,求最少要操作几次使得序列单调不降。无解输出 BARK序列长度 $N\le 1000000$ 。题解用 $f[i][j]$ 表示前 $i$ 个数,$s[i]=j-1$ 时的最少操作次数。然后对于每一位的值分类讨论即可。代码里很显然了,我懒得再写一遍了。#include<bits/stdc++.h>...
题意有一个序列,要求修改尽可能少的数,使得这个序列变成单调上升序列。输出最少需要修改多少个数,以及在修改最少的前提下,每个数改变的绝对值之和的最小值。序列长度 $N\le 35000$ 。题解子问题1如果只是单调不降就很简单,但这题要求单调上升。假设可以保留 $S_i,S_j \ (i < j)$ ,则需要满足 $S_j - S_i \geq j-i$ ,即 $S_j - j\geq ...
题意有 $A,B$ 两个字符串,要从 $A$ 中选出 $k$ 个子串,按原顺序排列后形成 $B$ 。求方案数。$A,B$ 的长度为 $N,M$ ,$N\le 1000 \ , \ M\le 200$ 。题解用 $f[i][j][k]$ 表示取到 $A_i,B_j$ ,选了 $k$ 个子串的方案数。可以枚举当前子串的长度 $l$ ,这样要求 $A_{[i-l+1,i]}$ 和 $B_{[j-l...
双倍经验:洛谷1868 饥饿的奶牛题意从 $N$ 个区间中选取一些不重叠的区间,使得总长度最大。$N\le 10000 \ \ L,R\le 30000$ 。题解用 $f[i]$ 表示前 $i$ 个数选取区间的最大总长度,答案即为 $f[n]$ 。如果存在一个区间 $[y,x]$ ,那么 $f[x]$ 就可以从 $f[y]$ 转移过来。方程式为:$$f[x] = \max \begin{ca...
题意自动刷题机每秒会增加或删除 $x$ 行代码。存在一个长度 $N > 0$ ,当 某一秒后累积的代码长度 $\geq N$ ,就会提交这个程序,并新建文件。已知刷题机交了 $K$ 道题,求 $N$ 的最值。秒数 $L\le 100000$ 。题解显然 $N$ 越小,交的题目就会越多,所以可以通过二分验证,不过只有刚好 $K$ 道的时候更新答案。唯一麻烦的就是最小值最大值都要求,而 最...
算法竞赛 算法-二分/三分
题意有 $N$ 天,每天剩余教室为 $R_i$ 个。有 $M$ 个人要借教室,从 $S_i$ 借到 $T_i$ 。问能否满足所有人,如果不行则输出第一个不满足的人。$N,M\le 10^6$ 。题解本来还想写线段树查询最小值的,然后发现二分+差分就能解决。做法就是二分答案,然后差分修改后验证是否有 $<0$ 的。#include<bits/stdc++.h> using ...
题意有 $N$ 个矿石,价值和重量为 $V_i,W_i$ 。需要选择一个值 $W$ ,对于区间 $[l,r]$ ,校验值为$$\sum_j 1 \times \sum_j V_j \ \ (j\in [l,r] \ , \ W_j > W) $$总校验值为 $M$ 个区间校验值的总和。求最小总校验值。$N,M\le 200000$ 。题解我纠结了半天 $\sum_j 1$ 到底是啥,直...
算法竞赛 算法-二分/三分
这次我只过了三道,D题因为最后统计答案时越界而 Wrong answer on pretest 12 ,结束后把两个 n 改成 n-k+1 就过了,我真是傻逼。代码都是考场代码,所以很丑,凑合看吧。A. Hotelier题意有 $10$ 个房间,客人可能从左边或右边进来,进来后给客人安排最近的房间。可能有人离开。给出 $N$ 个操作,要求输出操作后每个房间是否有人。$N\le 10^5$题解...
算法竞赛 比赛-Codeforces
题意把 $N$ 个数分成 $M$ 段,要求每段和的方差尽可能小,求最小值。$N\le 3000$ 。题解我这个辣鸡的错误解法方程还是比较容易想到的,用 $f[i][j]$ 表示当前是第 $i$ 段,分到第 $j$ 个数的最优解,方程为:$$f[i][j] = \min_{k=0}^{j-1} (f[i-1][k] + \sum_{p=k+1}^j M\times (X_p - \overli...
题意有 $N$ 个工厂,每个工厂与第 $1$ 个工厂的距离为 $X_i$,有成品 $P_i$ 件。需要修建一些仓库,在每个工厂修建的成本为 $C_i$ 。修建完成后要将成品全部运到仓库里,且只能往序号较大的工厂里运输。运输的成本为 $P_i\times (X_j-X_i)$ 。求成本的最小值。$N\le 10^6$ 。题解用 $f[i]$ 表示最后在 $i$ 修仓库的最小成本,枚举上一次修仓...
题意农场主养了 $M$ 只猫,它们会到 $N$ 座山上去玩,在 $T_i$ 的时候下山。农场主雇了 $P$ 个员工,员工可以在不同的时刻从第 $1$ 座山出发去接猫。求所有猫等待时间和的最小值。$N,M\le 10^5 \ , \ P\le 100$ 。题解用 $t_i$ 表示接第 $i$ 只猫的最早出发时间,显然 $t_i = T_i - D_{H_i}$ ,然后将所有猫按照 $t_i$ ...
2021.11.18更新:“最长路径 $+1$ 就是答案”有误,因为对于 $M_2$ 的情况,两点间的距离其实可以是无穷大的。但强连通分量中就不会有这种情况,因为点之间两两互通,所以它们之间的距离也就有上限。题意有 $N$ 个数和 $M_1+M_2$ 种关系。前 $M_1$ 种关系 $(x,y)$ 表示 $S_x+1=S_y$ ,后 $M_2$ 种关系表示 $S_x\le S_y$ 。求最多...
题意有 $N$ 个重量为 $1,2,3$ 的砝码,以知部分砝码之间的重量关系。给出砝码 $A,B$ ,要求另外选出两个砝码 $C,D$,使得 $A+B > , = , < C+D$ ,求三种情况的方案数。$4\le N\le 50$ 。题解可以先预处理出砝码之间差值的范围。令 $S_i$ 为 $i$ 砝码的重量,用 $mx[i][j]$ 表示 $S_i-S_j$ 的最大值,$mn...
算法竞赛 图论-差分约束
题意在 $N$ 点 $M$ 边的有向无环图中选出最多的点,要求这些点两两之间不能有路径相连。$N\le 200$ ,$M\le 30000$ 。题解路径可达的关系可以通过 $\text{Floyd}$ 传递闭包处理。剩下的问题即转化为:选出最多的点,要求这些点两两没有连边。如果把每个点分裂成两个点,形成二分图,就是标准的最大独立集问题。最大独立集 $= N - $ 最小点覆盖(最大匹配)。#...
算法竞赛 图论-二分图
题意给出一个 $N\times N$ 的矩形,每个格子染有 $0..5$ 这 $6$ 种颜色。每次操作可以把左上角格子所在的同色联通块全部染成一种颜色,求把所有格子染成一种颜色至少需要多少种操作?$N\le 8$ 。多组数据,组数 $T\le 20$ 。题解朴素的搜索为每次枚举要染的颜色,染色后继续搜索直到染完。退出的条件为某次染色没有新增的格子。期望得分30。#include<bit...
算法竞赛 算法-搜索
标签
其它-Firefox1 其它-pbds1 其它-pjax1 其它-Ubuntu1 其它-VSCode1 其它-网易云音乐1 动态规划52 动态规划-区间DP9 动态规划-单调队列优化DP5 动态规划-图上DP1 动态规划-斜率优化DP5 动态规划-树形DP16 动态规划-状压DP16 动态规划-线性DP10 动态规划-背包DP3 图论4 图论-LCA4 图论-Tarjan11 图论-二分图1 图论-割点3 图论-基环树1 图论-差分约束4 图论-强连通分量2 图论-最小环1 图论-最小生成树6 图论-最短/最长路19 图论-树上差分2 图论-树的直径4 图论-桥1 图论-缩点5 图论-负环4 字符串3 字符串-kmp2 思维题3 数学26 数学-bsgs2 数学-exgcd4 数学-gcd2 数学-中国剩余定理2 数学-卡特兰数1 数学-卢卡斯定理4 数学-快速幂4 数学-扩展中国剩余定理1 数学-扩展卢卡斯定理3 数学-矩阵5 数学-约数1 数学-组合数3 数学-质数1 数据结构-动态开点线段树1 数据结构-单调栈1 数据结构-单调队列2 数据结构-可持久化字典树2 数据结构-堆4 数据结构-字典树2 数据结构-并查集2 数据结构-栈1 数据结构-树状数组6 数据结构-树链剖分10 数据结构-线段树5 数据结构-队列1 比赛-Codeforces21 比赛-JX Round1 比赛-NOIp/CSP5 算法-KM算法1 算法-二分/三分12 算法-位运算1 算法-倍增4 算法-分块2 算法-分治3 算法-哈希2 算法-多叉树转二叉树2 算法-差分4 算法-悬线法1 算法-拓扑排序2 算法-排序3 算法-搜索21 算法-模拟5 算法-状态压缩4 算法-贪心10 算法-高精度3 问题-逆序对2 题目-一本通5 题目-网络流24题2