5.16 acm模拟赛总结

Posted 卿吟酒

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了5.16 acm模拟赛总结相关的知识,希望对你有一定的参考价值。

去了HPU打acm模拟(作为高中生混进去的)
记录一下那天的比赛网址:
https://vjudge.net/contest/438497#problem/J

题目订正及分析:

T J
题目来源:
https://vjudge.net/problem/AtCoder-zone2021_c/origin
(已订)
题目大意:n个人 每个人五个属性 选出三个人出来 三个人的每项属性都取三个人该属性的最大值 最后的总能力是取完最大值的五项属性中的最小值

思路:二分+状压

二分一个最后可能的答案 然后进行验证。
将五个属性转换为一个五位的二进制数
验证时,若该位上的属性的数大于等于验证数,那么这个属性转成的二进制位对应是1。

例如: 25 25 25 25 25 对应验证值5 那么就转成1 1 1 1 1 。

假设记录二进制转化的变量为 r e c rec rec 存二进制数的数组为 q w q [ i ] qwq[i] qwq[i]

五个属性处理完后,使 q w q [ r e c ] = r e c qwq[rec]=rec qwq[rec]=rec

然后在小于 t = ( 1 < < 5 ) t=(1<<5) t=(1<<5) 范围内三重循环,若 q w q [ i ] ∣ q w q [ j ] ∣ q w q [ k ] = = ( t − 1 ) qwq[i]|qwq[j]|qwq[k]==(t-1) qwq[i]qwq[j]qwq[k]==(t1) 那么则使验证的答案为true。

或运算的原因在于 每项属性是取三个人中的最大值的,而最后要求等于(t-1)是由于 能力值取得是五项中最小

T F
题目来源:
https://codeforces.com/problemset/problem/1263/E
(已订)
题目大意: 你有一个编辑器 ,光标最开始在1位置。
接下来给你一串命令,‘R’代表右移 ‘L’代表左移(不能小于1位置),‘(’  ,‘)’   ,以及 a , b , . . . z a,b,...z a,b,...z等小写字母代表在光标处输入一个该字符。
若该光标位置上原有字符 则进行替换,若该序列括号匹配不合法,输出-1;否则输出最大括号嵌套层级,每收到一个命令后输出。

例:(()()) 的层级为2 ; ()()的层级为1 ;()()(())的层级为2 ;)()不合法

思路:线段树 区间操作 前缀和

线段树记录区间最大值和区间最小值;

另开一个字符数组 l i n e line line 记录有效字符(即操作后现在在编辑器里的所有字符);

记录一个 p o s pos pos 代表现在编辑器光标指向的位置

假设原串为 s s s 那么对应s进行 p o s pos pos 的操作

若要添加字符 则先消去原线段树中 p o s pos pos 原字符的影响。
对于一个新添加的字符‘(’ 在 [ p o s , n ] [pos,n] [pos,n]范围内+1, 而对于一个‘)’ 则在 [ p o s , n ] [pos,n] [pos,n]范围内-1;
维护一个 c n t cnt cnt 若读进一个‘(’ 则 c n t + + cnt++ cnt++,若读进一个‘)’ 则 c n t − − cnt-- cnt.

c n t ! = 0 cnt !=0 cnt!=0或者 [ 1 , n ] [1,n] [1,n] 范围内的最小值小于0 那么目前的序列不合法;

(例如 在2号位置放‘)’ 3号位置放‘(’ 那么虽然 c n t cnt cnt =0 但是区间最小值为‘-1’ 而且我们知道 ‘)(’ 显然是一种不合法的情况)

而对于合法的序列 输出范围内的最大值

要注意的是 每次在光标位置填入新字符前,应消去前一个字符的影响,消去影响的操作和添加操作恰好相反

以上是关于5.16 acm模拟赛总结的主要内容,如果未能解决你的问题,请参考以下文章

模拟赛小结:2014-2015 ACM-ICPC, NEERC, Southern Subregional Contest

HDU 3月ACM模拟赛T10 COUNT

2021年暑假ACM集训队模拟赛第4场——题解

ACM知识点总结

[ACM] POJ 1068 Parencodings(模拟)

[ACM] hdu 1035 Robot Motion (模拟或DFS)