这标题好拗口啊Github | Greasy Fork这篇文章主要想讲一下实现的思路,毕竟这是我第一次写油猴脚本,先把完整代码放上:(function () {
'use strict';
let uid = window._feInjection.currentUser.uid; //获取当前用户uid
$('.popup-button').click(func...
题意长度为 $N$ 的小写字母串,要求增加或删除字母使其变成回文串。每个字符的增加和删除有固定的花费,求花费的最小值。$N\le 2000$ 。题解区间DP,用 $[i][j]$ 表示将 $[i,j]$ 变成回文串的最小花费。如果 $S_i=S_j$ ,那么可以直接从 $f[i+1][j-1]$ 转移过来。对于上一个状态 $[i+1,j]$ ,可以删掉 $S_i$ ,也可以在右边添加一个 $...
题意有 $N$ 头奶牛,每头奶牛都有智商和情商,要从中选出一些奶牛参会,要求情商总和 和 智商总和 都不能 $< 0$ 。问情商和智商总和最大是多少。$N\le 400$ ,智商情商 $\le 1000$ 。题解可以把智商当作体积,情商当作价值来做背包,最后答案即为 $\max i+f[i]$ 。因为有负数所以要偏移一下,同时如果当前体积为负数要正序枚举。#include<bit...
双倍经验:洛谷2734 游戏 A Game (还不用滚动数组)题意有 $N$ 个数,两个人轮流取,每次可以取左右两端的数。两个人都绝顶聪明,问第一个人最多能取到多少。$N\le 5000$ 。空间限制 $64M$ 。题解用 $f[i][j]$ 表示在 $[i,j]$ 最多能取到多少,用 $sum[i][j]$ 表示 $[i,j]$ 的和。因为两个人都会取最优方案,所以方程式为:$$f[i][...
A.Important Exam题意有 $N$ 个人考 $M$ 道题 ,给出每个人每道题的答案,求如何安排每道题的正确答案,使得所有人获得的分数总和最大。$N,M\le 1000$ 。题解真理掌握在大多数人手中。#include<bits/stdc++.h>
using namespace std;
inline int read()
{
char ch=getcha...
A.Creating a Character题意有 $T$ 组测试数据,每组测试数据有 $str, int, exp$ 三个参数,可将 $str, int$ 增加, 增加的总和严格等于 $exp$ , 求有多少种方案使得增加后 $str > int$ 。$T\le 100 \ , \ str,int,exp\le 10^8$ 。题解可以算出增加后 $str$ 的最小值,然后给 $str...
题意给出一个数字串,要求用逗号将其分成若干个严格递增的数。如果有多解要求最后一个数最小,如果还有多解要求字典序最大。数字串长度 $\le 500$ 。题解先正着推出最后一个最小的数。用 $f[i]$ 代表以 $i$ 结尾的数的最近的开头,可以逆序枚举 $j$ ,如果 $[f[j-1],j-1] < [j,i]$ ,那么 $f[i]=j$ 。然后反着推一个最大的数。用 $g[i]$ 表示...
题意有形成环形的 $N$ 个机器人工厂,购买机器人的价格为 $V_i$ 。连接 $i\rightarrow i+1$ 的道路编号为 $i$ ,在时间 $j$ 的金币数为 $s[i][j]$ 。每次可以在任意工厂购买一个机器人,机器人最多可以走 $P$ 条边,并收集边上的金币。不能同时存在多个机器人。求 $M$ 的时间内最多能收集多少金币。$N,M\le 1000$ 。题解用 $f[i]$ 表...
题意求 $N\times M$ 的矩阵中最大的 $0/1$ 相间的长方形和正方形面积。$N,M\le 2000$ 。题解悬线法,把是否是障碍物的判断改成相邻格子是否相同即可。#include<bits/stdc++.h>
using namespace std;
inline int read()
{
char ch=getchar(); int f=1,x=0;
...
题意有两个序列 $a,b$ ,可以把 $b$ 中相邻的数交换,使得 $\sum (a_i-b_i)^2$ 最小。问最少要交换几次?题解可以发现最小的情况就是 $a,b$ 中数字的大小顺序相同,所以离散化后建立 $a$ 中大小在 $b$ 的对应关系 $s$ ,求 $s$ 的逆序对个数即可。#include<bits/stdc++.h>
#define ha 99999997
us...
题意给出一个 $N$ 点 $M$ 边的有向图,以及 $K$ 个感兴趣的点,求感兴趣的点两两之间最短路的最小值。$N\le 100000 \ , \ M\le 500000$ 。题解如果建立原点和汇点,把 $K$ 个点分成两组,分别与原点汇点相连,再从原点开始跑到汇点的最短路就是最小值。但这样显然无法涵盖所有情况。所以枚举二进制位,把当前位为 $1$ 的加入第一组,其它的放入第二组。因为两个数...
题意给出一个 $N$ 点 $M$ 边的有向图,并给出最短路径。依次删掉最短路上的每条边,求删边后最短路长度。$N\le 10^5 \ , \ M\le 2\times 10^5$ 。题解朴素的做法可以每删一条边就跑一次 $\text{Spfa}$ ,但这样显然会爆。可以发现不需要每次都更新所有点的最短路。如果删除 $(u,v)$ ,那么最短路一定是 $$1\rightarrow x\righ...
题意给出一个 $N$ 点 $M$ 边的有向图,要从 $1\rightarrow D$ 。每条边上有限速,如果限速为 $0$ 则需要按照上一条边的速度走。求最短用时。$N\le 150$ 。题解给朴素的最短路加上一维,用 $dis[x][s]$ 表示在节点 $x$ ,当前速度为 $s$ 的最短用时。然后跑 $\text{Spfa}$ 即可。tips: 对 double 进行 memset 时最...
题意给出一个 $N$ 点无向图,至少有两个连通块。求连接两个连通块的方案,使得新连通块的直径最小。$N\le 150$ 。题解先用 $\text{Floyd}$ 跑最短路,然后可以算出从每个点出发的最远距离,然后枚举两个不连通的点连上即可得到答案。但有可能出现连接的两个点不是直径两端的情况,这时原来连通块的直径就是这个新连通块的直径,所以需要取最大值。#include<bits/std...
rk800,终于上蓝啦A.Optimal Currency Exchange题意卢布兑美元为 $a:1$ ,兑欧元为 $b:1$ 。美元面值最少为 $1$ ,欧元为 $5$ 。要把 $N$ 卢布尽量兑换出去,求最少剩下多少。$N\le 10^8 \ , \ 30\le a,b\le 100$题解水题,枚举某种货币用了几张即可。我还sb的T了一次。#include<bits/stdc++...