zoukankan      html  css  js  c++  java
  • 日常训练

    2018 IME Tryouts

    ABDFHIJK 签到

    C 暴力dfs

    E

    upsolved

    分别考虑每种进攻, 对应位看成$1$, 其余位看成$0$, 那么假设以$x$开头, 有效次数就为$sumlimits_{i=x}^{x+n-1}a_i b_{i-x}$ 差为定值, 把$b$翻转一下然后$FFT$即可

    G 相当于要动态维护互素对数, 假设添加$x$, 那么互素个数增加

    $sumlimits_{i=1}^{N} {cnt}_i [gcd(i,x)=1]=sumlimits_{d|x}sumlimits_{i=1}^N[d|x]{cnt}_i$

    动态维护$f(d)=sumlimits_{i=1}^N[d|i]{cnt}_i$即可

    2018 ICPC Asia Jakarta Regional Contest

    AIL 签到

    B

    C. Smart Thief

    upsolved

    可以发现最小值是$N+K-1$, 并且合法方案非常多. 直接暴力$dfs$, 用$hash$判重

    D. Icy Land

    特判$n,mle 2$, 否则中间必须全为#, 四周至少一块#

    E

    F. Popping Balloons

    upsolved

    对于一个气球, 只能影响序列$B$中的一个后缀, 选其中最大的$B_i$一定最优

    G. Go Make It Complete

    每次取$deg$和最大的边删除更新答案, $O(N^4)$可过

    H. Lexical Sign Sequence

    先初始化全$1$, 然后从左到右贪心替换. 用堆+扫描线判断是否可以替换

    J. Lie Detector

    暴力预处理出所有子串, 然后DP即可

    K. Boomerangs

    原题CF860D

    NCPC 2016

    AFGJ 签到

    B. Bless You Autocorrect!  

    upsolved  

    建trie, bfs求出每个点最小花费即可  

    C. Card Hand Sorting  暴力枚举最终排列, 贡献为$n-LCS$  

    D. Daydreaming Stockbroker  每个波谷处买, 波峰处卖  

    E. Exponial  拓展欧拉板子  

    H. Highest Tower

    upsolved

    题目等价于可以交换长宽, 使得最终每块对于一个矩形宽不相同, 长的和尽量大. 

    对于一个矩形, 连边$(s,t)$, 就等价于给$n$条边定向, 使得每个点出度为$1$, 入度乘点权尽量大

    一个连通块只能是环套树或树, 分别统计一下最大值即可

    I

    K. 

    2014 ACM-ICPC Vietnam National First Round

    ABDGIJ 签到

    C. Grid city

    upsolved

    每个询问找到最接近的$8$条线, $64$个交点跑$floyd$

    E. Binary Search Tree

    对于点$x$的左儿子, 暴力向右遍历找到第一个权值不少于$x$的点减掉, 右儿子同理, 复杂度是$O(n)$

    F

    H

    Radewoosh+mnbvmar Contest

    A. Alakazam 

    每次操作相当于把区间赋值为平均数, 用并查集或者线段树合并区间即可

    J. Jigglypuff 

    如果存在$s_{x,y}$和$s_{x+1,y-1}$相同, 那么经过这两个点能构造出$2$条路径

    找到两个这样的结构即可构造出$3$条路径

    K. Kecleon

    upsolved

    对于静态问题, 可以用$Z$算法线性求出. 动态问题可以每隔$sqrt{q}$个询问暴力重构$Z$函数, 那么每次询问额外的贡献只有后面$sqrt{q}$个字符, 暴力枚举每个字符, 用$hash$判断是否匹配, 总复杂度$O(qsqrt{q})$

    ICPC Latin American Regional Contests 2019

    EIKM 签到

    D. Dazzling Stars

    upsloved

    每个点向权值大的点连边, 那么直线只能在最大夹角的补角范围内, 把每个点确定的补角求交, 若不少于$pi$, 则合法

    F. Fabricating Sculptures

    upsolved

    设$f_{x,y}$表示共$x$块,摆$y$列的方案, 考虑从下往上枚举每行摆放

    就有$f_{x,y}=f_{x-y,y}+2f_{x-y,y-1}+...+yf_{x-y,1}$ 可以前缀优化, 复杂度$O(B^2)$

    G. Gluing Pictures 

    所有串连起来求$SA$, 把前$n$个位置的$rk$扔进$vector$里, 对于一个询问, 每次二分出两个最接近的$rk$, 匹配一段$lcp$即可

    L. Leverage MDT

    枚举每一列, 对于每一行连续同色的都换成$G$, 单调栈统计最大值

    2019-2020 ACM-ICPC Pacific Northwest Regional Contest 

    CDE 签到

    A. Radio Prize

    第$i$个点的答案为$sumlimits_{j=1}^n (a_i+a_j)(d_i+d_j-2d_{lca(i,j)})$

    预处理前缀和可以$O(1)$算出$sumlimits_{j=1}^n (a_i+a_j)(d_i+d_j)$ 

    对于$lca$的贡献, 考虑点$i$到根的一条边$(u,v,w)$, 贡献为$-2w({sz}_{v}a_i+{sum}_{v})$

    $a_x$为$x$点权, ${sz}_x$为$x$子树的大小, ${sum}_x$为$x$子树内点权和

    预处理$sz,sum$, 然后$dfs$一次就完了

    B. Perfect Flush

    贪心, 用堆维护未使用元素位置最大值的最小值$x$, 假设上一个数位置为$pre$, 那么在$[pre+1,x]$中选一个最小的数即可

    F. Carny Magician

    upsolved

    假设已经确定一个前缀$[1,i]$, 那么后缀方案$[i+1,n]$只与剩余$ge i+1$的数的个数和剩余不动点数有关

    设${dp}_{n,x,y}$为长$n$的排列, 只有$x$个数在$[1,n]$范围内, 不动点数为$y$的方案

    那么有

    ${dp}_{n,x,0}=(x-1)({dp}_{n-2,x-2,0}+{dp}_{n-1,x-1,0})+(n-x)({dp}_{n-2,j-1,0}+{dp}_{n-1,j,0})$

    ${dp}_{n,x,y}=inom{x}{y}{dp}_{n-y,x-y,0}$

    然后就可以$O(n^2)$递推出第$k$大

    G. Glow, Little Pixel, Glow

    H. Pivoting Points

    I. Error Correction

    可以互相转换的两个串连边, 可以发现最后得到一个二分图, 求出最大独立集即可

    J. Interstellar Travel

    K. Computer Cache

    L. Carry Cam Failure

    从低位到高位搜, 每次分支最多为$2$, 复杂度是$O(2^{frac{n}{2}})$

    M. Maze Connect

    每个小三角看成一格, 等价于求最小生成树, 枚举每个障碍点用并查集合并即可

    ICPC 2019-2020 North-Western Russia Regional Contest

    AM 签到

    B. Bad Treap

    upsolved

    找一个sin尽量小的位置, 每次加710, 这样sin一定是递增的

    D. Double Palindrome

    upsolved

    首先可以求出长$n$的所有串的双回文划分数$R(n)=sumlimits_{i=0}k^{lceilfrac{i}{2} ceil}k^{lceilfrac{n-i}{2} ceil}$

    然后有一个结论是对于一个双回文串$s$, 假设最小整周期为$t$, 那么双回文划分数为$frac{|s|}{t}$

    就可以得到长$n$的本原双回文串个数$C(n)=R(n)-sumlimits_{l|nwedge l<n}frac{n}{l}C(l)$

    那么答案就为$sumlimits_{i=1}^nsumlimits_{j|i}C(j)$

    E. Equidistant

    检验一下点集直径的中点即可

    H. High Load Database

    upsolved

    对于每个询问$t$, 暴力二分, 复杂度是$O(log nsum a/t)$, 每个$t$的答案记忆化一下, 总复杂度就为$O(sum alog nlog sum a)$

    I. Ideal Pyramid

    二分高度, 那么对于每个柱子限制金字塔中心在一个正方形范围内, 若正方形交集非空则合法

    J. Just the Last Digit

    假设$[1,i]$已经确定完毕, 对于新添一个点$i+1$, $i$到$i+1$方案只能为$0$或$1$, 可以判断出是否有边, 然后就可以递推出$i-1,...,1$是否与$i+1$连边

    K. King's Children

    upsolved

    先用单调栈求出$A$的最大矩形, 然后从上到下从左到右遍历每个城堡, 先贪心向左右分配, 然后往上下分配

    但这样可能会被$A$的区域卡住, 导致一些位置没覆盖到

    一个解决方案是按照$A$所占的列, 分成三个矩形, 分别处理每个矩形即可

    NWERC 2018

    HIK 签到

    B. Brexit Negotiations

    等价于让权值大的尽量靠前, 建反图, 求出字典序最小方案, 然后翻转一下即可

    C. Circuit Board Design

    upsolved

    $frac{pi}{2}$分成$n$份, 按$dfs$序, 把每个点分一个角度

    E. Equality Control

    预处理出每个左括号对应右括号位置, 然后按题意模拟即可

    G

    JAG Practice Contest for ACM-ICPC Asia Regional 2016 

    AB 签到

    C. We Don't Wanna Work!

    每个人离散化, 用线段树求第$k$大和排名即可

    D. Parentheses

    暴力找规律

    E. Similarity of Subtrees

    每个子树hash一下

    F. Escape from the Hell

    枚举最后一天喝的饮料, 前几天饮料一定是按$a-b$降序喝

    可以二分出最早爬出的天数, 检验一下是否每天高度都大于$c_i$的和即可

    K. 

    2019-2020 ICPC Asia Taipei-Hsinchu Regional Contest

    CDKHJ 签到

    A 暴力$bfs$

    E 原题CF1129B

    M

    可以转化为求$M!$除去素因子$p$后模$p^x$, 最后再$crt$合并答案即可

    SWERC 2019

    ABCFI 签到

    D

    upsolved

    初始化长$1e4$的序列, 分别用两个串操作一下, 看最终每个位置的值是否相同

    合并的话就新建一个点, 维护左右儿子, 扔进map<pair<int,int>,int>里即可

    E

    upsolved

    假设$nle m$, 设$x_0=A_{0,0},...,x_{n-1}=A_{n-1,0}$, 递推到第$m-1$列, 可以得到一个方程组

    高斯消元解一下即可, 复杂度是$O(nmcdot min(n,m)+frac{min(n,m)^3}{omega})$

    G 建图求最小拓扑序

    H

    upsolved

    有循环节, 可以分块打表

    J 一段区间$[L,R]$内, 假设最小值出现次数为$cnt$, 那么贡献为$Catalan(cnt)$乘上去除最小值后区间的贡献

    K

    upsolved

    先把点$T$拆掉, 然后$tarjan$缩点. 对于每个强连通分量, 如果连向$T$的边数为$1$, 并且后继不能到达$T$, 那么合法

    L

    upsolved

    每个湿地连通块可以单独处理, 标记一下附近的硬地, 然后每个硬地连通块大小不超过$18$, 可以暴力状压求出$SG$值. 若异或非零先手赢, 否则后手赢

    NWERC 2019 

    CEFI 签到

    A. Average Rank

    维护$rk_i$表示得分为$i$时的排名, 那么初始$rk_i$全$1$. 第$x$个人加分就等价于$++rk[c_x++]$

    所以每个$rk_i$随时间变化是阶梯形的, 每个人的得分等价于要在阶梯形中区间求和, 用扫描线即可

    B. 

    D. 

    G. Gnoll Hypothesis

    可以发现$k$固定时, 每个$i$对$s_i,s_{i+1},s_{i+2},...$贡献比例是一样的, 可以$O(N^2)$预处理出来

    H. Height Profile

    upsolved

    等价于求$(a_i-a_j)/(i-j)ge 10g$的最大$i-j$, 枚举$i$, 就要求$a_i-10gige a_j-10gj$的最小$j$, 可以二分单调栈求出

    因为答案可能是浮点, 每次求出一段区间后, 再往左或右延伸一段即可

    J. Jackdaws And Crows

    upsolved

    $a_i$修改到正数需要$max(0,1-a_i)$个小号,修改到负数需要$max(0,1+a_i)$个小号

    对修改次数排序, 建一棵线段树, 节点$[l,r]$维护矩阵$a_{0/1,0/1}$表示$[l,r]$区间开头是否为正数结尾是否为正数时最小删除数

    这样复杂度就为$O(nlogn)$

    K.

    2019 ICPC Universidad Nacional de Colombia Programming Contest

    BIK 签到

    D. Do Not Try This Problem

    $k<3000$时, 直接暴力

    否则$a$一定不超过$34$, 维护set<int> f[35][35]表示每个模$a$剩余系的下标, 暴力删除

    这样复杂度就是$O(34nlog{n}+q(3000+log{n}))$

    F. Fraction Formula

    先预处理出每个左括号对应右括号位置, 然后dfs模拟即可, 相加时分母要取$lcm$不然会爆long long

    G. Graduation

    考虑贪心, 一定让深度最大的点尽量靠前, 转化为求反图最小拓扑序

    J. Jail Destruction

    线段树维护每个区间最小值, 每次区间减$k$, 若最小值不少于$k$直接减, 否则递归到叶子暴力减, 减到$0$时权值修改到无穷, 这样复杂度就是$O((n+q)log{n})$

    L. Liquid X

    先$dp$求出能达到的所有权值, 然后二分答案, 如果程序输出yellow直接结束, 否则可以求出能构成的最小区间, 若区间长度为$1$, 那么输出答案, 否则一定不能判断

    2018-2019 ACM-ICPC, Asia Nakhon Pathom Regional Contest

    CDG 签到

    A. Flying Squirrel

    upsolved

    如果$x,y$高度相等, 或者$x,y$中间最大值超过$max(H_x,H_y)$那么无解

    每个点$i$, 向左右最高度低于$H_i$且最高的点连边, 这样就得到一个$DAG$

    如果有解的话, 那么两个点的答案也就是两个点在$DAG$中的深度之差

    B. Grid Coloring

    upsolved

    首先可以发现最大值就为$min(nm,max(0,n-k+1)m+max(0,m-k+1)n)$

    假设$nle m$, 如果$n<k$, 答案就为$inom{m}{k-1}^n$

    若$(n-k+1)m+(m-k+1)nge nm$, 那么每个格子都能涂到, 答案就为$1$

    否则的话$n,m$的范围会很小, 可以考虑暴力打表

    一种思路是把$(n-k+1)m+(m-k+1)n$个位置提取出来, 暴力$dfs$每个位置选的点, 但这样$n=4,mge 8,k=4$时就很难跑动

    还有一种思路是, 可以发现没覆盖到的点会很少, 只有不超过$8$个, 可以暴力枚举没覆盖到的位置, 建图跑最大流, 若最大流等于$(n-k+1)m+(m-k+1)n$则合法

    E. How Many Groups

    先排序, 然后预处理出初始分组情况, 修改时要么合并连续两个组, 要么合并连续三个组, 暴力讨论即可

    F. Lucky Pascal Triangle

    upsolved

    根据lucas定理可以知道$inom{n}{m}equiv prod inom{n_i}{m_i} (mod space 7)$, $n_i,m_i$为$7$进制第$i$位

    所以就等价于求$i,j(0le ile jle n)$满足$i$的$7$进制某位大于$j$的方案数, 可以数位dp求出

    H. As Rich as Crassus

    暴力可过

    I.

    J. Floating-Point Hazard

    upsolved

    用导数近似即可

    K. The Stream of Corning 2

    upsolved

    离线扫描线即可

    L. Largest Allowed Area

    预处理出二维前缀和, 枚举每个点为右下角, 暴力判断当前答案是否能变大 

    SEERC 2018

    B. Broken Watch

    upsloved

    $n$为偶数时, 固定点$A$, 枚举点$B$, 答案为$n(2+3+...+frac{n}{2}+n-2+frac{n}{2}+...+3+2)$

    $n$为奇数时, 答案为$n(1+2+...+lfloorfrac{n}{2} floor+lfloorfrac{n}{2} floor+...+2+1)$

    若三个长度相同要除以$6$, 两个相同除以$2$

    C. Tree

    枚举每个点$bfs$, 取满$m$个点后停止, 然后暴力算出点集直径, 复杂度是$O(N^3)$

    D. Space Station

    upsolved

    E. Fishermen

    位置$(x,y)$的鱼只对$[x-l+y,x+l-y]$有贡献, 扫描线即可

    F. Min Max Convert

    upsolved

    假设$a_x=b_y$, 那么只要将$[x,y-1]$改为同色, 然后对$[x,y]$操作即可

    考虑枚举$b$中元素, 在$a$中找到对应元素, 需要保证$a$中对应位置是非降的, 不能保证的话就无解

    对于连的每条边要么左偏, 要么右偏, 先从左到右处理左偏的, 再从右到左处理右偏的, 这样可以让每个操作都不相交

    G. Matrix Queries

    upsolved

    可以发现如果递归过程中一共遇到$x$个异色矩阵, 那么答案就为$4x+1$

    所以用线段树维护行列每个层数同色块数即可

    H. Modern Djinn

    upsolved

    随机给每个点赋权, 直到合法边不少于$m/4+1$为止

    I. Inversion

    先$O(n^3)$恢复出原排列, 然后考虑区间$DP$

    设$f_{i,j,k}$表示区间$[i,j]$只考虑权值不超过$k$的点的方案

    考虑从大到小枚举当前区间取的最大数$a_x$, 假设比$a_x$大的数最大位置为$pre$

    如果$x>pre$, 那么$x$右侧点和$x$左侧比$x$大的点都被$x$支配, 那么贡献加上$f_{i,x-1,a_x-1}$

    如果$x<pre$, 那么$x$右侧比$x$大的点无法处理, 无贡献

    所以可以发现合法状态只有$O(n^2)$个, 总复杂度就为$O(n^3)$

    K. Points and Rectangles

    $t$时刻添加一个矩形, 就对$[t,q]$时刻加上当前矩形内的点数

    $t$时刻添加一个点, 就对$[t,q]$时刻加上当前包含该点的矩形数

    可以用$CDQ$分治解决

    SEERC 2019

    A

    upsolved

    考虑全变为$x$的答案, 如果不存在$x$的话, 那么一定无解

    如果存在$x$的话, 那么一定有解, 把$x$看做$0$, $>x$的看做$1$, $<x$的看做$-1$

    对于一段长$L$的$-1,1$交替序列额外贡献为$lfloorfrac{L}{2} floor$

    可以用线段树解决, 复杂度是$O((n+m)log {n})$

    B 按$x$从小到大排序, 然后$dp$即可

    C

    D

    假设所有字符出现最大次数为$mx$, 那么$mxle frac{n}{2}$一定有解

    然后考虑$n-mx$的值, $n-mx$为$0$那么无解

    $n-mx$为$1$, 只有$n=2$有解

    $n-mx$为$2$, 只有当另外两个字符不同时有解

    $n-mxge 3$时一定有解

    E

    按年龄降序排列, 先特判全开摩托的情况

    然后枚举开车人数$i$, 那么$[1,i]$开车, $[max(i+1,n-(k-1)i+1),n]$坐车, $[i+1,max(i,n-(k-1)i)]$开摩托

    预处理每个前缀开车,开摩托,坐车所需转移年龄和最大转移年龄即可

    F

    upsolved

    每个点向所有祖先连边, 若有完美匹配, 那么后手必胜, 因为每步操作只需走对应匹配即可

    若没有完美匹配, 先手必胜, 先手只需选择一个未匹配点开局然后仿照后手必胜操作

    独立考虑每层即可

    H

    简单签到

    J

    考虑每个点的贡献, 权值排序后两两结合即可

  • 相关阅读:
    P2761 软件补丁问题
    CF1335F Robots on a Grid
    [bzoj2088]P3505 [POI2010]TEL-Teleportation
    CF1335E Three Blocks Palindrome
    P3831 [SHOI2012]回家的路
    P4568 [JLOI2011]飞行路线(分层图)
    P4774 [NOI2018]屠龙勇士
    P2480 [SDOI2010]古代猪文
    CF #632 (Div. 2) 对应题号CF1333
    BSGS 和扩展
  • 原文地址:https://www.cnblogs.com/fs-es/p/13056569.html
Copyright © 2011-2022 走看看