2018-01-02 测试 解题报告
T1
题解
对于 100%的数据: 首先如果\(s\)不是回文串,答案为\(1\)。 否则尝试把\(s\)分成两部分\(s[1\ldots i],s[i+1\ldots n],\quad 1\leq i< n\),如果存在一种分法使得两个串都不是回文串,答案为\(2\)。 否则每种分法中的两个串都至少有一个是回文串,可以有如下情况:
\(s[1]\not =s[2]\): 假设\(s[1]=a,s[2]=b\),这时\(s[n]=s[1]=a,s[n-1]=s[2]=b\),又\(s[1\ldots 2]\)不是回文串,则\(s[3\ldots n]\)是回文串,即\(s[1\ldots n-2]\)是回文串,即\(s[3]=s[1]=a,s[4]=s[2]=b\),这时又\(s[1\ldots 4]\)不是回文串,则\(s[5\ldots n]\)是回文串…… 这样循环下去,在\(n\)为奇数时,\(s\)大概是这个形式:\(abababa\)。
\(s[1]=s[2]\): 假设\(s[1]=s[2]=a\),这时\(s[n]=s[1]=s[n-1]=s[2]=a\),无论\(s[1\ldots 2]\)是不是回文串,\(s[n-2]=s[3]=a\)…… 这样循环下去,在\(n\)为奇数时,\(s\)大概是这个形式:\(aaaaaaa\),或者这个样式:\(aaabaaa\)。在\(n\)为偶数时,\(s\)大概是这个形式:\(aaaaaa\)。
以上几种形式都无解。 于是在\(s\)是回文串时先判断是否满足几种无解情况,否则答案为\(2\)。
代码
1 |
|
T2
题解
最小割……蛮神奇的。 首先\(W\)或者\(-W\)可以认为是\(1\)或者\(-1\)。 开始时\(w[i]\)的系数为\(1\)。 把\(H_i\)式子中后三项提出来,把\(d-f,e-d,f-e\)加到对应\(w[i]\)的系数上。 绝对值先暂时作为另一个变量,把每一个绝对值项的系数加起来。 从源点向\(w[i]\)连边,容量为负的系数,割这条边表示\(w[i]\)的权值为\(-W\)。 从\(w[i]\)向汇点连边,容量为正的系数,割这条边表示\(w[i]\)的权值为\(W\)。 先看\(q\)个条件:
- \(r=0\)时,不能有\(w[x]=W,w[y]=-W\),于是从\(w[x]\)向\(w[y]\)连边,容量为\(INF\);
- \(r=1\)时,不能有\(w[x]=W,w[y]=-W\)或者\(w[x]=-W,w[y]=W\),于是从\(w[x]\)向\(w[y]\)连边,容量为\(INF\),从\(w[y]\)向\(w[x]\)连边,容量为\(INF\);
- \(r=2\)时,只能有\(w[x]=-W,w[y]=W\),于是从源点向\(w[x]\)连边,容量为\(INF\),从\(w[y]\)向汇点连边,容量为\(INF\)。
对于一个绝对值项\(a|w[x]-w[y]|\): 当\(w[x]=W,w[y]=-W\)或者\(w[x]=-W,w[y]=W\)时为\(0\),否则为\(2aW\)。 故从\(w[x]\)向\(w[y]\)连边,容量为\(2a\),从\(w[y]\)向\(w[x]\)连边,容量为\(a\)。 答案算出来乘\(W\)即可,负权值需要稍微处理一下。 (这道题可以不拆点,我推导这个图的时候觉得拆开来画着好看,于是代码里也拆了……)
代码
1 |
|
T3
题解
先默认\(a<b\)。 对于每一堆石子\(x\)先对\(a+b\)取模,然后分成四种情况:
- \(x < a\),没用;
- \(a\leq x < b\),只要存在 A 必胜;
- \(b\leq x < 2a\),这种无论谁拿一次都会变成情况 1,和 4 一起讨论。
- \(2a\leq x\),这种 A 拿一次就变成 2,B 拿一次就变成 1。
如果 4 存在至少\(2\)个就 A 必胜; 存在\(1\)个,若 3 是偶数则先手必胜,否则 A 必胜; 不存在,若 3 是偶数则后手必胜,否则先手必胜。 统计情况时,存在至少两个是\(2^x-x-1\),存在一个是\(x\),奇数个和偶数个都是\(2^{x-1}\)。
代码
1 |
|
2018-01-02 测试 解题报告