NOI模拟赛 Day1

【考完试不想说话系列】

他们都会做呢QAQ

我毛线也不会呢QAQ

悲伤ING

考试问题:

1.感觉不是很清醒,有点困╯﹏╰

2.为啥总不按照计划来!!!

3.脑洞在哪里

4.把模拟赛当作真正的比赛,紧张起来!!!

好了不扯淡了。。。

-------------------------------------------------------------------------------------------------------------------------------------------------- 

T1:

题意太长QAQ

大概就是一个数列代表价值,资瓷修改,给定一个pos,公差,和t种颜色,并给出每种颜色的数量

pos填一种颜色,求包含pos的等差数列的期望最小值。

有20分t==1,n<=100000 ,保证所有的价值随机生成

看错题了 最小看成最大,导致暴力都没分sad story

觉得这种题我是应该做出来的!

总体来说应该这样思考:

看到数据范围,大概是n^1.5的一个算法 ,然后想到按照d的大小来区分,其实这种思路还是很常见的。。

NOI模拟赛 Day1

写起来灰常的简单,几乎没有编程复杂度。

当t>1时,递推p直到p<1e-20~1e-30即可退出。

--------------------------------------------------------------------------------------------------------------------------------------------------

T2:

题意:

一棵树,从起点回到起点,每条边至少经过一次,花费为长度,有k次跳转的机会,花费为c

NOI模拟赛 Day1

这里有一种非常巧妙的方法:

每次找树上的最长链,更新ans后,将链上的值全部取负。

这里运用了费用流的思想

NOI模拟赛 Day1

第一次最长链是绿色,第二次是红色,由于重叠部分第一次后取反,相当于两次操作是蓝色部分。和费用流反向弧的作用相同。

注意因为有了取负操作,求最长链不能用两次dfs,树形dp瞎搞一搞就行。。。

正解是树上dp

hzt是这样做的:

f i,j,t 表示i这棵子树,j次跳跃,t表示状态,是否由跟进/出,(1,0)和(0,1)路径取反即相同,所以共三种状态

每棵子树递归,前缀和一样的合并,合并有9种(3*3)

这种写法我还没有实现TAT

T3比较鬼畜。。嗯我就不看了。。所以就这些吧

上一篇:前端常见算法的JS实现


下一篇:PHP7语法知识(二):流程控制语句、函数、字符串、数组