模拟测试20191024

$T1:表达式密码$

刚开始以为有括号和乘除是道大神题

然后发现是只有加减的傻逼题

扫一遍就好了

 

$T2:电压机制$

考场上$yy$出来很多奇奇怪怪的结论

比如缩完边双之后至多有一个边双含奇环才合法,一个边双中不被奇环包含的都合法

然而事后发现都和正解没什么关系(因为好像没有快速判断一条边是否在偶环的方法

正解挺神仙的(至少$蒟蒻mikufun$是这么觉得

我们先跑出原图的一棵生成树

由于我们用$dfs$跑生成树所以不存在横跨边只存在反祖边

考虑反祖边和树边形成的环,设$odd_{i}$表示经过i的奇环的差分数组,$even_{i}$表示偶环的差分数组

对于一条反祖边$u\rightarrow v$

如果形成奇环,则$odd_{u}++,odd_{v}--$

如果形成偶环,则$even_{u}++,even_{v}--$

同时记录一下每条非树边形成的是奇环还是偶环

最后把差分合并,如果一条边的$odd==奇环数量$且$even==0$,则$ans++$

 

T3:括号匹配

$%%%WWB、YXM$钛聚啦

考场上除了模拟什么也想不到,而且还不知道怎么处理$\cap$和$\cup$

其实很显然的结论是:两个相交的区间$L_{ i }<L_{ j }≤R_{ i }<R_{ j }$可以拆成$[L_{ i },L_{ j }-1], [L_{ j },R_{ i }], [R_{ i }+1,R_{ j }]$三个区间

两个包含的区间$L_{ i }<L_{ j }≤R_{ j }<R_{ i }$可以拆成$[L_{j},R_{j}],[L_{i},L_{j}-1]\cup [R_{j}+1,R_{i}]$两个区间

设每个区间缺少的'('为$ndl$,缺少的')'为$ndr$

扫每个区间首先我们让区间内自我匹配,贡献为$\frac{min(ndl,ndr)+1}{2}$

然后考虑区间间的括号交换,显然一个区间需要$\frac{abs(ndl-ndr)}{2}$个左/右括号

同时记录$LNEED$表示当前剩余的左括号,$RNEED$表示当前剩余的右括号

每次根据需要的和两个变量讨论一下就好了

 

posted @ 2019-10-24 17:05  mikufun♘  阅读(162)  评论(0编辑  收藏  举报