ICPC/CCPC好题精选

Problem J. Xingqiu’s Joke

你有一个两个正整数构成的二元组\((a,b),a,b\in[1,10^9]\),你可以进行如下操作:

  • \((a,b)->(a-1,b-1)\)
  • \((a,b)->(a+1,b+1)\)
  • \(g\)\(\gcd (a,b)\)的某个质因子\((a,b)->({a\over g},{b\over g})\)

最少需要多少操作,可以使得\(a=1\)或者\(b=1\),多组询问\(T\le 300\)

\(f(a,x)\)表示\((a,a+x)\)的答案,从\(f(\lfloor \frac a g \rfloor,\frac x g)\),\(f(\lceil \frac a g \rceil,\frac x g)\)转移过来,第二维状态很少,第一维状态在于上下取整的选择。而不管怎么选择,除出来的数总在全向下除和全向上除之间。因此状态数很少。

Problem I. Cloud Retainer’s Game

现在有一个高度为\(H\),长度无限的空间。你有一个小球,初始位置在\((0,0)\),初始速度为\((1,1)\)。然而在\(y=0\)\(y=H\)\((x_1,y_1)...(x_n,y_n),n\le 10^5\)有挡板,小球遇到挡板会\((v'_x,v'_y)=(v_x,-v_y)\)。此外,在\((x'_1,y'_1)...(x'_m,y'_m)\)有金币。小球碰到金币就得到这个金币。

你现在可以去除\((x_1,y_1)...(x_n,y_n)\)中任意多个, 问你最多可以得到多少金币?

Problem K. Circle of Life

有一个长度为\(n \le 10^7\)的01串,服从“生命游戏”规则,即:

  • 某个0,如果相邻的位置恰好有一个1下一轮变为1

  • 其他情况,无论\(1\)还是\(0\),下一轮都是\(0\)

给定\(n\),请你构造一个串,使得这个串无穷轮也不是全\(0\)

Problem H. Crystalfly

给定一棵\(n\le 10^6\)个节点的树,树的节点\(i\)上有萤火虫\(a_i\)只,你到达这个节点就可以获得其所有萤火虫。现在你在根节点,你可以沿着树边移动,每秒钟移动一条边。然而萤火虫十分滴珍贵,你到达任何一个节点,他所有相邻的节点\(u\)将被扰动,\(u\)节点的萤火虫(如果还有)将在\(t_u\le 3\)秒后消失。请问最多可以得到多少萤火虫?

J. Two Binary Strings Problem

给定\(n\le50000\)\(a_i\)\(b_i\),定义:

\[f(l,r)=\begin{cases} 1,& \text{if}\;\sum\limits_{i=l}^r a_i > \frac{r-l+1}{2} \\ 0,&\text{otherwise} \end{cases} \]

定义一个\(k\)是“十分珍贵的”,当且仅当对于所有\(i\)\(f(\max\{1,i-k+1\},i)=b_i\)

多组询问,\(T\le 50000,\sum n \le 50000\)

A. So Many Lucky Strings

给定一串字符串序列\(\{s_1,s_2\dots s_n\},n\le 100,\sum |s_i|\le 10^5\),一个合法的子序列定义为“字符串依次相接后是一个回文串”,请问有多少种不同的子序列?

C. Colorful Tree

给定一棵\(n\le 10^5\)个节点的树,每个叶子节点都有一个喜欢的颜色\(c_i\)。你是一个粉刷匠,每次可以粉刷一个节点及其子树内所有节点。你最少粉刷多少次可以使得所有叶子节点满意

L. Karshilov's Matching Problem

你有一些十分珍贵的串\(\{t_1,t_2,\dots t_n\},\sum |t_i| \le 10^5,n\le 10^5\),每个串有个珍贵值\(w_i\)。王大队长给你一个串\(S,|S|\le 3\times 10^5\),和\(m\le 3\times 10^5\)个要求,要求分别为

  • \(1 \quad l \quad c\):将\(S\)的后缀\(l\)个全部改为\(c\)
  • \(2 \quad l\):查询\(S[1\dots l]\)的价值。其中价值定义为:$\sum w_i \times $$(t_i\(在\)S[1\dots l]\(的出现次数\))$。

请你支持这两个操作。

C. Assign or Multiply

你有一个数\(x\),一开始\(x=1\)。除此之外你还有\(n\le 10^6\)次操作,分为两种:

  • \(x:=a_i\)\(x\)赋值为\(a_i\)
  • \(x:=x\times a_i\)\(x\)赋值为\(x \times a_i\)

所有操作对\(p\le 2\times 10^5\)取模,\(a_i\in[0,p)\)

你可以随意打乱操作顺序,请问你可以得到多少种最终的\(x\)

H. What logic for?

你有两个串\(S\)\(T,|S|=|T| \le 10^5\)。司令说\(S\)\(T\)K-等价的当前仅当\(S\)可以被K-变换\(T\)

其中K-变换的定义为:

  • 选取一个长度为\(2k\)的字符串段\(S[b\dots b+2k-1]\),对于\(i=0\dots k-1\)交换\(S[b+i]\)\(S[b+k+i]\)

\(n\le 10^5\)组询问\((S,T,k)\),每组询问\(2k\le |S|\)此外\(\sum |S|+|T| \le 10^5\)

对于每个询问,回答是否是K-等价

Problem M. Harmony in Harmony

有一块总面积为\(1\)\(2D\)土地,定义这个土地的面积划分\(S=\{s_1,s_2,\dots s_n\},n\le 500\),其中\(|s_1|=|s_2|=\dots=|s_n|=\frac 1 n\)\(s_i\)表示土地,\(|s_i|\)表示面积。并且\(s_i\cap s_j=\empty\quad (i\not =j)\)。值得高兴的是,划分出来的土地并不需要是某种特定形状甚至可以不连续。因此\(2D\)土地的形状其实也无所谓。

\[\min_{S,A}\{\max_{\{p\}}\{\min_{i=1}^n\{|S_i\cap A_{p_i}|\}\}\} \]

其中\(S\)\(A\)都是这个土地的面积划分,\(p\)是枚举排列。(即由你确定\(S\)\(A\)的情况下,不断枚举排列\(p\)由上式得到一个值,使这个值最小化。)

E. Paimon Segment Tree

有一个长度为\(n\le 5\times 10^4\)的正整数序列,有\(m\le 5\times 10^4\)次修改操作和\(q\le 5\times 10^4\)次询问操作

  • 修改操作\(l_i,r_i,x_i\ge 1\),将\(a_l\dots a_r\)加上\(x\)。记录修改后当前序列为一个版本\(a^{(i)}\)
  • 查询操作\(l,r,x,y\),查询$\sum_{j=x}^y \sum_{k=l}^r (a{(j)}_k)2 $

D. Degree of Spanning Tree

给定一个\(n\le 10^5\)个节点\(m\le 2\times 10^5\)条边的无向联通图,请你生成一个没有度数大于\(n\over 2\)的点的生成树。

送分题

给定一个有\(n\le 20\)个节点的有向图,每条边走路要\(t_i\),骑单车要\(c_i\le t_i\)的时间。每个节点都有可能有一个共享单车,概率为\(p_i\),价钱为\(p_i\)。由于时间就是金钱,你将一个单位的时间视作一个单位的金钱。你现在要从起点走到终点,最优策略下,期望最少花多少钱?

posted @ 2022-02-05 12:03  谁是鸽王  阅读(560)  评论(4编辑  收藏  举报