GPC 2024
A. Reborn and HearthStone
time limit per test
1 second
memory limit per test
1024 megabytes
input
standard input
output
standard output

Reborn 今天又在上班摸鱼玩酒馆战棋,即便现在场上只有 Reborn 的一个随从和敌方的一个随从,但是她仍然猪脑过载了。现在告诉你场上两个随从的信息,请你判断 Reborn 是否能获胜。

Reborn 随从初始的血量为 $$$HP_r$$$,攻击力为 $$$ATK_r$$$;敌方随从初始的血量为 $$$HP_x$$$,攻击力为 $$$ATK_x$$$,战斗开始的每回合 Reborn 的随从都会攻击敌方随从,会减少 $$$ATK_r$$$ 点敌方随从的血量,同时己方随从的血量也会减少 $$$ATK_x$$$ 点,当至少一方随从的血量小于等于零时分出胜负,此时若 Reborn 的随从的血量大于零则获胜。

Input

输入第一行包含两个整数 $$$HP_r \ (1 \le HP_r \le 10000)$$$ 和 $$$ATK_r \ (1 \le ATK_r \le 10000)$$$ ,表示 Reborn 随从的血量和攻击力。

输入第二行包含两个整数 $$$HP_x \ (1 \le HP_x \le 10000)$$$ 和 $$$ATK_x \ (1 \le ATK_x \le 10000)$$$ ,表示敌方随从的血量和攻击力。

Output

若 Reborn 能获胜,输出一行 'Yes',否则输出一行 'No'。

Examples
Input
3 2
1 2
Output
Yes
Input
114 514
19 1919
Output
No

B. Hile and Fx
time limit per test
2 seconds
memory limit per test
1024 megabytes
input
standard input
output
standard output

Hile 突然向你扔出了一个函数 $$$f(x)\ (x \ge 0)$$$ ,其值等于 $$$x$$$ 的每个数位值的和,例如 $$$f(5) = 5$$$ ,$$$f(14) = 1 + 4 = 5$$$。

现在 Hile 又给了你一个数 $$$y$$$ ,你需要找出一个非负整数 $$$x$$$ 满足 $$$x + f(x) = y$$$,若不存在这样的 $$$x$$$ ,输出一行 $$$-1$$$。

Input

输入第一行包含一个整数 $$$T\ (1 \le T \le 2\times 10^5)$$$ ,代表测试组数。

对于每组测试用例,第一行包含一个数 $$$y\ (0 \le y \le 10^9)$$$ 。

Output

对于每组数据输出一行一个非负整数 $$$x$$$ 满足 $$$x + f(x) = y$$$,若存在多个满足条件的 $$$x$$$,任意输出其一即可。若一个都不存在,输出 $$$-1$$$。

Example
Input
6
11
45
14
19
19810
1
Output
10
36
7
14
19778
-1

C. Reborn and SegmentTree
time limit per test
1.5 seconds
memory limit per test
1024 megabytes
input
standard input
output
standard output

Reborn 最近做了一道有关 RMQ(Range Min/Max Query)的题目,她反手扔了一颗线段树上去但却得到了时间超限的反馈。于是她想看看她的代码究竟递归了多少次,写下了如下的代码:

#include <bits/stdc++.h>

using namespace std;
const int N = 2e5 + 10, inf = 0x3f3f3f3f;

#define min(a, b) ((a) < (b) ? (a) : (b))
int tot = 0;
int a[N];

struct SegmentTree{
int f[N << 2];
void build(int p, int l, int r){
if(l == r){
f[p] = a[l];
return;
}
int mid = (l + r) >> 1;
build(p << 1, l, mid);
build(p << 1 | 1, mid + 1, r);
f[p] = min(f[p << 1], f[p << 1 | 1]);
}
int query(int p, int l, int r, int ql, int qr){
tot += 1;
if(l > qr || r < ql) return inf;
if(l >= ql && r <= qr){
return f[p];
}
int mid = (l + r) >> 1;
return min(query(p << 1, l, mid, ql, qr), query(p << 1 | 1, mid + 1, r, ql, qr));
}
}seg;


int main(){
int n, q;
cin >> n >> q;
for(int i = 1; i <= n; i++){
cin >> a[i];
}
seg.build(1, 1, n);
while(q > 0){
int l, r;
tot = 0;
cin >> l >> r;
seg.query(1, 1, n, l, r);
cout << tot << endl;
q -= 1;
}
return 0;
}

但是问题又出现了,她等待了半天依旧没有得到运行的结果。现在请你帮助她得到测试数据下上述代码的运行结果。

Input

输入第一行包含两个整数 $$$n, q$$$ $$$(1 \le n, q \le 2 \times 10^5)$$$。

输入第二行包含 $$$n$$$ 个整数 $$$a_1, a_2, ..., a_n$$$ $$$(1 \le a_i \le 10^9)$$$。

接下来 $$$q$$$ 行每行包含两个整数 $$$l, r$$$ $$$(1 \le l \le r \le n)$$$,表示一组询问。

Output

输出 $$$q$$$ 行,第 $$$i$$$ 行表示第 $$$i$$$ 个询问后 $$$tot$$$ 的值。

Example
Input
3 6
5 1 4
1 1
1 2
1 3
2 2
2 3
3 3
Output
10
4
1
10
10
4
Note

使用宏定义时请多加注意。

D. Piza Removes the Letters
time limit per test
1.5 seconds
memory limit per test
1024 megabytes
input
standard input
output
standard output

Piza 扔给了你仅包含小写字母的字符串 $$$S$$$ ,请你先删除一个长为 $$$m$$$ 的子串,再任选 $$$k$$$ 个字符串中未删除的字符删除,求 $$$\sum_{i=0}^{25} (\text{cnt}(S,'a'+i))^2$$$ 的最小值。

其中 $$$\text{cnt}(S,x)$$$ 代表字符串 $$$S$$$ 中 $$$x$$$ 的出现次数。

如果从字符串 $$$S$$$ 的前面和后面删去任意个字母(可以为0)后得到字符串 $$$T$$$ ,则 $$$T$$$ 被称为 $$$S$$$ 的子串。

例如 "zbc" 是 "zbceyond" 的子串,"ntr"是"country"的子串,"piza"是"piza"的子串。

Input

输入第一行包含一个整数 $$$T\ (1 \le T \le 2\times 10^5)$$$ ,代表测试组数。

对于每组测试用例,第一行包含三个整数 $$$n,m,k$$$ $$$(1\le{n}\le{2\times{10^5}},0\le{m}\le{n},0\le{k}\le{n-m})$$$ ,分别代表字符串 $$$S$$$ 的长度,需要删除的子串长度和要删除的字母个数。

第二行包含一个长为 $$$n$$$ 的仅包含小写字母的字符串 $$$S$$$ 。

确保 $$$\sum n\le{5\times{10^5}}$$$ 。

Output

对于每组数据输出一个整数代表 $$$\sum_{i=0}^{25} (\text{cnt}(S,'a'+i))^2$$$ 的最小值。

Example
Input
1
11 3 4
abcaabcbbaa
Output
6

E. Piza Removes Nothing
time limit per test
3 seconds
memory limit per test
1024 megabytes
input
standard input
output
standard output

Piza 扔给了你一颗树( $$$n$$$ 个点 $$$n - 1$$$ 条边的无向联通图),并且给树上的每条边标上了一个权值(可能有负值),现在他想知道有多少条 $$$u$$$ 到 $$$v$$$ $$$(1 \le u, v \le n, u \ne v)$$$ 的最短路满足两点的路径上的边权和是正数。

Input

输入第一行包含一个正整数 $$$n$$$ $$$(2\le{n}\le{2\times{10^5}})$$$ ,代表树的节点个数。

随后 $$$n-1$$$ 行,每行包含三个整数 $$$u,v,w$$$ $$$(1\le{u,v}\le{n},\lvert w \rvert \le{10^9},u\neq{v})$$$ ,代表 $$$u,v$$$ 直接存在一条边权为 $$$w$$$ 的边。

Output

输出一个整数代表权值和为正的路径数。

Example
Input
5
1 2 -3
2 3 4
2 4 1
4 5 6
Output
8

F. Reborn and TFT
time limit per test
3 seconds
memory limit per test
1024 megabytes
input
standard input
output
standard output

Reborn 最近沉迷云顶无法自拔。

她现在有 $$$n$$$ 个人口,牌库里总共有 $$$m$$$ 个棋子,每个棋子拥有若干个不同的羁绊,其中羁绊一共有 $$$k$$$ 种,每个羁绊至少需要 $$$x$$$ 个拥有该羁绊的不同棋子同时上场将其激活。

现在 Reborn 告诉你每个羁绊激活所需的棋子数量,以及牌库中每个棋子所拥有的羁绊,她只能从牌库中选择至多 $$$n$$$ 个棋子上场用于激活羁绊,请你告诉她最多能激活几个羁绊。

Input

第一行包含三个整数 $$$n, m, k\ (1 \le n, m \le 28, 1 \le k \le 14)$$$。

第二行包含 $$$k$$$ 个整数 $$$x_1, x_2, ..., x_k\ (1\le x_i \le 2)$$$,其中第 $$$i$$$ 个整数 $$$x_i$$$ 表示第 $$$i$$$ 个羁绊需要 $$$x_i$$$ 个不同棋子同时上场才可以激活。

接下来 $$$m$$$ 行每行包含一个字符串 $$$s\ (|s| = k, s_i \in \{'0', '1'\})$$$ 表示该棋子所拥有的羁绊,其中 $$$|s|$$$ 表示字符串的长度,若 $$$s_i = '1'$$$ 说明该棋子拥有第 $$$i$$$ 个羁绊。

Output

输出一行包含一个整数,表示所能激活的最多羁绊数量。

Example
Input
1 2 4
1 1 2 2
0011
1100
Output
2

G. Geos Likes Shopping
time limit per test
1.5 seconds
memory limit per test
1024 megabytes
input
standard input
output
standard output

有 $$$n$$$ 种物品,每种物品有 $$$a_{i}$$$ 个,现在要拿走 $$$m$$$ 个物品,每种物品的收益与其被拿走的数量有关,假如第 $$$i$$$ 种物品被拿走了 $$$b_{i}$$$ 个,那么每个物品的收益为 $$$w_{i}-b_{i}$$$ 总的收益为 $$$\sum_{i=1}^{n} b_i \times (w_{i}-b_{i})$$$ 问最大收益是多少 (保证 $$$w_{i} \geq a_{i}$$$ ) 。

同时,保证 $$$m \le \sum{a_i}$$$。

Input

输入第一行包含两个正整数 $$$n,m$$$ $$$(1\le{n}\le{10^5},1\le{m}\le{10^9})$$$ ,分别代表物品的种类数和需要拿走的物品数。

第二行包含 $$$n$$$ 个整数 $$$w_1,w_2,...,w_n$$$ $$$(1\le{w_i}\le{10^9})$$$ 。

第三行包含 $$$n$$$ 个整数 $$$a_1,a_2,...,a_n$$$ $$$(1\le{a_i}\le{w_i})$$$ 。

Output

输出一个整数代表最大收益。

Example
Input
5 6
1 2 3 4 5
1 2 3 4 5
Output
13

H. Kyooma Loves Tree
time limit per test
1.5 seconds
memory limit per test
1024 megabytes
input
standard input
output
standard output

Kyooma 给了你一颗深度为 $$$n$$$ 的满 $$$k$$$ 叉树,其中每条边都有 $$$p$$$ 的概率消失,Kyooma 想知道最后留下的森林中树的个数的期望是多少?

对于只有一个点存在的树,我们认为它的深度为 $$$1$$$ 。

满 $$$k$$$ 叉树:除了叶节点外,每个节点都有恰好$$$k$$$个儿子,且所有叶节点深度相同。

Input

输入第一行包含一个正整数 $$$T$$$ $$$(1\le{T}\le{10^5})$$$ ,代表测试组数。

随后 $$$T$$$ 行每行包含三个整数 $$$n,k,p$$$ $$$(1\le{n,k}\le{10^{18}},0\le{p} \lt {998244353})$$$,分别代表满 $$$k$$$ 叉树的深度,树上每个节点的儿子的个数和边消失的概率对 $$$998244353$$$ 取模的结果。

Output

对于每个测试输出一行,代表答案对 $$$998244353$$$ 取模后的结果。

Example
Input
2
2 2 499122177
114514 1919810 0
Output
2
1

I. Hile and Array
time limit per test
1 second
memory limit per test
1024 megabytes
input
standard input
output
standard output

给定一个长为 $$$n$$$ 的操作序列,第 $$$i$$$ 个位置有 $$$op_{i},w_{i}$$$ 代表 加/减/乘 一个数 $$$w_{i}$$$ ,一共有 $$$q$$$ 次询问,每次询问给定三个整数 $$$x,l,r$$$ ,求初始值为 $$$x$$$ 时,依次经过位置 $$$l$$$ 到位置 $$$r$$$ 共 $$$r-l+1$$$ 个运算操作后得到的结果,考虑到这个数可能很大,请对 $$$1000000007$$$ 取模。

注意:在本题中,所有操作都是按照先后顺序严格依次序执行的;换言之,靠前的加减法操作比靠后的乘法操作拥有更高的运算优先级。

Input

输入第一行包含一个正整数 $$$T$$$ $$$(1\le{T}\le{10^4})$$$ ,代表测试组数。

对于每组测试用例,输入第一行包含一个正整数 $$$n$$$ $$$(1\le{n}\le{10^5})$$$ ,代表操作序列长度。

随后 $$$n$$$ 行每行包含两个正整数 $$$op_i,w_i$$$ $$$(1\le{op_i}\le{3},1\le{w_i}\le{10^9})$$$,其中 $$$op_i=1$$$ 代表操作为加法,$$$op_i=2$$$ 代表操作为减法,$$$op_i=3$$$ 代表操作为乘法。

第 $$$n+2$$$ 行包含一个正整数 $$$q$$$ ,代表询问次数。

随后 $$$q$$$ 行每行包含三个正整数 $$$x,l,r$$$ $$$(1\le{x}\le{10^9},1\le{l}\le{r}\le{n})$$$ 。

确保 $$$\sum n\le{10^5}$$$ 。

Output

对于每组测试用例,输出 $$$q$$$ 行代表 $$$x$$$ 在操作后对 $$$1000000007$$$ 取模的结果。

Example
Input
1
6
1 1
2 1
3 4
1 5
2 1
3 4
2
1 1 6
100 3 4
Output
32
405

J. Boboge and Card Shuffle
time limit per test
1 second
memory limit per test
1024 megabytes
input
standard input
output
standard output

Boboge 手上有一副牌,这副牌由 HZCU 四种花色组成,每种花色的牌恰好 $$$n$$$ 张,编号 $$$1$$$ 到 $$$n$$$ ,一共 $$$4n$$$ 张。现在他想通过若干次操作,将这副牌重新洗牌,使得每种花色的牌形成的子序列其编号递增,且最后 $$$n$$$ 张牌的花色均为 U

一次操作中, Boboge 可以将一张牌抽出并重新插入任意位置(可以是任意两张牌之间,第一张牌前面或最后一张牌后面)。

问 Boboge 最少需要几次操作来洗牌?

一个序列的子序列指的是删去序列中任意个元素(可以一个不删,删去的元素不一定要连续),形成的新序列。

Input

输入第一行包含一个整数 $$$T\ (1 \le T \le 10^4)$$$ ,代表测试组数。

对于每组测试用例,第一行包含一个数 $$$n\ (1 \le n \le 10^5)$$$ ,代表每种花色牌的数量。

接下来一行由 $$$4n$$$ 个字符串组成,每个字符串代表一张牌,第一个字符为一个大写字母,代表花色,后面紧跟一个数字代表对应的编号。例如, H114 代表 H 花色编号为 $$$114$$$ 的牌。

确保 $$$\sum n\le{10^5}$$$ 。

Output

对于每组测试点,输出一个整数代表最少需要的操作次数。

Example
Input
3
2
H1 Z1 C1 C2 Z2 H2 U1 U2
2
H1 Z1 C1 U1 H2 Z2 C2 U2
10
C10 C2 Z3 H7 C8 Z7 U1 C3 C5 H10 U2 U4 Z6 H9 Z4 Z2 U3 H5 U8 Z5 H8 C7 C6 C4 Z9 U6 C1 H4 U5 Z8 H3 U9 H2 H1 U10 H6 Z1 Z10 C9 U7
Output
0
1
27
Note

需要注意的是,同种花色 ( U 除外) 不一定要排在相邻的位置,比如 H1 Z1 C1 H2 C2 Z2 U1 U2 是一种合法的排序方式。

题面样例中第3组测试用例有由于数据太长导致换行的情况,仅作展示作用,实际测试数据中无换行。

K. Hile counts the Qi
time limit per test
3 seconds
memory limit per test
1024 megabytes
input
standard input
output
standard output

虎口指的是在下完这手棋后,与这手棋相连的这块棋恰只有一口气。

一块棋指的是横纵相连的同色棋子(同色四联通块)

气指的是棋子的上下左右四个方向尚未有棋子的点的个数,棋盘外不算作气,一块棋共享气。

请分别计算黑白子的虎口个数。

P.S. 棋盘上黑棋和白棋的个数不一定相等。

Input

输入第一行包含一个正整数 $$$n$$$ $$$(2\le{n}\le{1000})$$$ ,代表棋盘的大小。

随后 $$$n$$$ 行,每行包含 $$$n$$$ 个字符,描述一个 $$$n \times n$$$ 大小的棋盘的状态,其中 $$$\textbf{E}$$$ 代表为空, $$$\textbf{W}$$$ 代表此处下了白棋, $$$\textbf{B}$$$ 代表此处下了黑棋。

Output

输出两个整数 $$$x,y$$$ ,代表黑棋的虎口个数和白棋的虎口个数。

Examples
Input
5
BWEEW
BBEWE
WEEBW
BBWEE
WBWBE
Output
1 2
Input
5
WBEEW
EWBBB
BEWBE
EEWBB
BBEBE
Output
0 4
Note

在样例一中,如果以位于左上角的第一手的黑棋位置为坐标 $$$(1,1)$$$ ,第三手的黑棋位置为坐标 $$$(2,1)$$$ ,则黑棋的虎口位于 $$$(1,4)$$$;白棋的虎口位于 $$$(3,2)$$$ 和 $$$(5,5)$$$ 。

位于 $$$(1,1),(2,1),(2,2)$$$ 的三颗棋子为一块棋,它们都有 $$$(2,3),(3,2)$$$ 这两口气。

样例1棋盘.

L. Kyooma Loves Numbers
time limit per test
1 second
memory limit per test
1024 megabytes
input
standard input
output
standard output

Kyooma 喜欢可以被 $$$9$$$ 整除的数字,所以她想最大化这类数的数量。你将得到几个 $$$15$$$ 进制的数字。我们用 $$$A, B, C, D, E$$$ 来代表 $$$10, 11, 12, 13, 14$$$ 。

你可以执行以下操作$$$\textbf{零次或一次}$$$:选择给定数字的两个$$$\textbf{不同位}$$$,交换对应位置上的两个数字。

例如,我们有一个 $$$15$$$ 进制数 $$$C08$$$ ,可以生成的所有数字是: $$$C08, C80, 0C8, 80C$$$ 。

Input

每个测试点包含多组测试。

输入第一行包含一个正整数 $$$t$$$ $$$({1}\le{t}\le{20})$$$ — 测试的数量。

每个测试仅包含一行,行内包括一个$$$15$$$进制整数 $$$n$$$ $$$({0}\le{n}\le{15^{500^{2}}})$$$.

Output

对于每个测试,输出 "YES" 或 "NO" 代表对应 $$$15$$$ 进制数能不能在至多一次操作后变得能被 $$$9$$$ 整除。

Example
Input
6
9
DD
109
36
53
17
Output
YES
NO
YES
NO
NO
NO

M. Kyooma Loves Numbers Ⅱ
time limit per test
1 second
memory limit per test
1024 megabytes
input
standard input
output
standard output

对于给定值 $$$n$$$ ,要求给出一组关于含有$$$\textbf{五个}$$$不大于 $$${10}^{18}$$$ 的正整数的数组$$$a$$$的解,满足 $$$$$$\sum_{i=1}^5 \frac{1}{a_i}=\frac{4}{n};a_{i}\neq a_{i+1} (1\le{i}\le4);a_2 \neq a_4$$$$$$

如果存在多个解,请输出任意一个,如解不存在,输出 $$$-1$$$ 。

Input

第一行包括一个正整数 $$$t$$$ $$$(1\le{t}\le{5000})$$$ ,代表测试组数。

随后 $$$t$$$ 行每行有一个正整数 $$$n$$$ $$$(1 \lt {n}\le{10^7})$$$ 。

Output

输出 $$$t$$$ 行,若解不存在,输出 $$$-1$$$ ,否则输出五个正整数 $$$a_1,a_2,a_3,a_4,a_5$$$ 。

Example
Input
2
3
5
Output
2 3 7 42 3
5 16 3 5 240