arc125
a:by xuzishuai
其实这就是一个环,所以我们要走到一个01交界处,然后就是最小方案,感性易证。
b:
\(x^{2}-y=k^{2}\)
\(x^{2}-k^{2}=y\)
\((x-k)(x+k)=y\)
设\(a=x-k\)
\(a*(a+2k)=y\)
也就是一个a一个k会对应一个y
所以我们枚举a,找出a+2~a/y种和a同奇偶的数的个数就行了
c:
如果最长上升子序列长度为k的话,那必然是下标连续且不交的k段不增序列组成,类似tan的函数。那么我们让这个最小,我们从前往后贪心
首先\(a_{1}\)前面是没有数的,因为一旦有数,要么字典序不优,要么长度变。那么我们想让字典序尽量小,只需找到一个最小的放在后面即可,最后一股脑输出即可
d:
设\(dp_{i}\)为以i结尾的合法序列数,记lst[i]为上一个与a[i]相同的数,那么\(dp_{i}=\sum^{i-1}_{j=lst_{i}} dp_{j},dp_{lst{i}}=0\) 首先不重,因为重复的都被删掉了。再证不漏,显然
e:
一眼网络流,一共有n+m个点,s向小孩连\(c_{i}\),每个小孩连向每个糖果,为\(b_{i}\),糖果向t连\(a_{i}\),然后求下最大流。明显超时,考虑用其他方式求最大流。首先将最大流转化成最小割。求最小割是将点集分成两部分,一部分是连s,一部分连t,然后最小割就是连接两个集合的边。假如我们已经知道哪些糖果连t了,设共有x个,那么对于每个小孩,要连向s的代价就是\(xb_{i}\),连向t的代价就是\(c_{i}\)。所以是\(\sum a_{i}+\sum min(xb_{i},c_{i})\)发现只和x有关,那么我们肯定选最小的x个a_{i}。我们将a,b都排序,那么x增加的时候,取\(xb_{i}\)和\(c_{i}\)的分界点就会往左移,时间\(O(n \log n)\),瓶颈在于排序。
f:
一眼背包,我只会n^3/w哈哈哈
首先转化成背包的话就是,有n个物品,重量之和为2n-2。为了方便,我们将度数都减去1。求度数为\(i(i\in [0,n-2])\)的选的物品不同方案数。
定理一:(s,w)=(n-s,n-2-w)意思就是是选s个物品,度数之和为w的方案数与其补集的方案数相同。
设t为度数为0的物品个数
证:度数为s时选的可行物品数量时连续的
我们先证下限,再证上限,最后证里面的每一个都能取到。\(s-w \le t\)因为最多只有t个零,根据它的反面\(n-s-n+2+w \le t\)
\(-s+w \le t-2\)
\(s-w \ge -t+2\)
\(-t+2 \le s-w \le t\)
那么在取到最大值时必定用了0,所已去掉其中的0是没有关系的,所以[0,t]可以同理[-t+2,2]也可以,得证。
所以我们只需求出s个物品的最小度数方案和最大度数方案,我们一个物品重量为1,价值为度数。
假如有这样一个式子\(\sum a_{i}=n (a_{i}\ge 0)\)有个经典的结论就是大小不用的\(a_{i}\)不超过\(\sqrt{n}\)个,感新理解即可,这个神经东西看到过好多次了。
将它变回这道题,发现这就是一个有\(\sqrt{n}\)个物品的多重背包,所以我们用二进制优化,时间复杂度\(O(n\sqrt{n}\log n)\)由于给了6s可以通过。