模拟测试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$表示当前剩余的右括号
每次根据需要的和两个变量讨论一下就好了