听说可以报名HNOI玩一玩,就去玩了一玩
Day0
HNOI的流程比较简单,也没有什么报道,就是两天早上考试,下午出成绩,好像讲题都没有。
所以Day0就以找晚餐为由出去走了几个小时
Day1
由于酒店里考场有点远,早上很早起,早餐也吃得不特别好。
题目
T1
有n个m位二进制数,在前面加上0,并在这n+1个数中间加入运算符(与,或)
问有多少种方案使得最后结果等于一个询问的m位二进制数
n<=1000,m<=5000,q(询问数)<=1000
T2
有n个物品,每个物品有个出现时间
一开始随意选择一个点做起点,每一时刻你可以选择走到下一个点,也可以选择留在这个点,如果你在某个点的时候,这个物品已经出现了,那么你就会选择它
如果走到第n+1个点就回到第一个点
问最早在什么时刻可以选择所有物品。
有m个修改操作,每次修改一个物品的出现时间。
n<=105,m<=105,时间<=105
其中有三十分强制在线
T3
给定一张联通图,一条边选择的两个点不能同时选,问有多少种选择的方法
n<=100000,m<=n+10
有二十分图是树
做题
电脑室noilinux,不是常用的熟悉环境
不过事实证明这完全不是问题,自己太弱,打题时间远小于想题时间
第一题一看感觉是水题,如果m比较小能够设到状态里就是小学生题,但是m比较大想一想后发现好像不是很好做,先过
第二题发现它肯定是在第一个点等足够的时间后一路往后走n部,然后考虑是哪一个物品限制住了这个一开始等的时间。
光想O(n)的方法都想了半个小时
由于没有用什么单调栈之类可以用数据结构维护的东西,发现无论如何我都想不到再优化的方法了
这样只有40分
第三题如果是树很好做,如果是环套树,感觉只用多记录一个那个环顶位置选择的情况就行了
这样好像有40分
想完上面的内容后,我又去想第一题有没有什么方法,半个多钟后无果。
就先打了第二题的40分,本想着也许打的过程中可以发现些什么东西套的上数据结构的,直到打完后半个钟都没有想到任何东西。
第三题把小学生部分的30分给弄出来,去思考环的10分,发现多记录一个东西完全没有问题,但是我现在不知道为什么当时没有打,也许是信心不足?也有可能是思考如何扩展成更多分的情况耗费的时间太多,导致时间有点不够。
最后一个小时。
第一题先去码暴力加状压DP,有30分。然后我拆位,bitset等各种能想的到的与二进制有关的算法都去想了一遍,但什么都没有想到。
估分30+40+30
出来pty和我说第三题状压有至少80分。
然后我突然醒悟,那多出来的10条边压起来,如果转移写的好看一点都可以切掉。
第一题有人说反着做,用trie来存
额我枚举了二进制算法怎么忘记了trie呢
不过没有想出倒着做,trie也没用
下午睡醒午觉就出成绩了,得分0+40+30??
第一题30分怎么fst了?
其他人得分总分都差不多100分左右,很多人第三题80分。
凉凉
Day2
题目
T1
n个点排成一列,有m个锁
每个锁用(x,y)表示第x和第x+1个点的中间那条边有锁,钥匙在y房间
每次询问S,T问从S能不能走到T
n,m<=106
T2
n<=200000,wi<=109
T3
本来尝试概括题意,但发现还不如
做题
第一题一看感觉像做过的样子
有一部分y<=x的点很好做,有60分
但是y>x的点就有点麻烦,没搞出来,先过
第二题一看怎么好像又做过的样子
然而我又只会状压,有40分
第三题总感觉是树形dp
而且应该就是
我把式子拆开,想看看能不能分别维护,但是发现都要至少乘一个c上去放在状态里,不好搞
所以和第一天一样,我边想着有没有增加得分的方法,边码题
结果也和第一天一样,什么额外的东西都没想出来,我会做的小学生也会做,小学生不会的我也不会
估分60+40+20
结果30+30+20
woc第一题又出事?
这个六十分不是铁的吗
有人和我说第三题sbDP题,设f[x][y][z]表示x这个点,到根有y条铁路,z条公路的答案
转移显然
这个DP好像也显然
然而这种题为什么放在第三题
然而我怎么没想到
这一段时间状态非常不好,改题效率极低,接下来有两次GDOI模拟比赛,必须要调整好状态,抓住GDOI在主场的机会,此处省略一万字