20170418模拟赛

来源:互联网 发布:华为mate10知乎 编辑:程序博客网 时间:2024/06/16 00:23

凌晨菜醒就有不好的预感,果然今天考试爆0了(爆0后还被chan老板等人D,到了第二天还在D我)
最近天天菜醒是怎么回事…

进考场后..刚看完题面有人已经开始码了,瑟瑟发抖
想了一会,推了一下柿子觉得第一题好像可以做,但是不太好写,就先放着了
然后..第二题掉坑里了
一直在yy各种逆序对相关的做法,思路太死了
就这样过了差不多1个多小时,觉得时间不太够开始码第一题,突然发现取值不是一段是1个或2个觉得不太靠谱还想了好久证明,码码码码完了觉得后面题都不太会做不如稳一点,又写了个暴力对拍…然后..为什么暴力比“标算”快这么多..(于是我花了半个小时尝试卡掉我的暴力结果徒劳…)
第三题题意感觉有点迷,去想T4,想了一会觉得好像会发现看漏一个条件…加了条件..感觉树的情况可以写一个treeDP+大讨论?讨论了一会不会就弃了
就剩T2感觉有点机会..然后剩下的时间写了T2的2种贪心尝试骗分…

考完后..爆0了

好像T2,T3的部分分挺好拿的= =..自己水没办法
T1找解找对了,求值的时候贪心贪错了…
因为出题人早有准备..4题多组,并没有骗到分..

这场比赛主要是考想法吧..确实每道题都挺好写的..代码风格精简的选手4题加起来不到200行吧(虽然我还是写了400),T2太死了,注意到了只有2种数和相对位置不变,但是没往那方面想

然后是题解:
T1,设每堆的糖为t或t+1,那么对于每种糖有A个,分x堆,都有tx<=A,(t+1)x>=A
那么A/x一定时,t是确定的,A是已知的,A/x只有O(n)种取值,对于第一堆糖算出n种t,带入其他糖验证
T2,注意到只有每个位置只有两种取值,而在最优移动下,2和2,3和3之间的相对位置是不会改变的,交换只发生在2和3之间,可以只考虑2的位置变化算出交换数,朴素想法是2^n枚举每个位置的数,但发现因为相对位置不变,前a个数选了2的个数一定时,他的状态对后b个数没有影响即无后效性,于是可以DP,设f[i][j][k][l]表示前i个数,选了j个2,移动k次,前两个数是什么,最多的233个数
T3,原来是套路题。
对于每个位置xp(x)x2
=(di)2N
=(d2i+ij,(ij)didj)N
=p(di)di2+ijp(i,j)didj
计算每个位置被每个人的贡献,可以转为计算每个人对每个位置的贡献
T4,个人感觉挺神的
先考虑树的情况
因为树是一个二分图,那么可以先对他二分图黑白染色,一条边连接的两点一定是不同色的,那么目标就变成了,把原来图中的白点染黑,黑点染白,而两边同色的限制就变成了两边不同色
那么每次染色,就相当于交换两点的颜色,可以理解为黑点移动到白点的位置,于是目标再次转为了使图中所有黑点移动到白点的位置,黑点位置标1,白点标-1,首先黑白点数量若不同则无解,否则..其实只有一种移动方案使得所有位置都变成0,叫他模拟也行树形DP也行,弄一下
然后考虑环套树的情况
若是奇环,此时不满足二分图,断开环上一条边,对于这条边,他两边的颜色是相同的,则我们对于这条边,不能按上文的模型,而要按原图模型即两点同色,那么他的作用是每次添加两个黑点或删除两个黑点,不妨设黑点数量少于白点(若多于,交换颜色即可),那么若黑白点奇偶性不同则无解,否则在边的两端加上需要的黑点数量,砍掉这条边当树做即可
若是偶环,此时仍然是二分图
先处理所有的树,然后对于环上的某一条边,设他的运输量为x,则由于目标限制,环上每条边的运输量都可以求得,环上边的贡献即为|ax+c|a有1或-1两种取值,对于a=1,将绝对值内取反,然后就可以转化成中位数模型了

1 0
原创粉丝点击