其他分享
首页 > 其他分享> > 5.4模拟赛总结

5.4模拟赛总结

作者:互联网

#include<5.4模拟赛总结>

void work(pair<int,int>tim){

​ tim=make_pair(7,30);

​ tim.second+=5;

​ 实际上晚了一会儿,7:35才坐到机房拿到题,然后先把图片题目转成PDF,然后就是繁琐的建文件夹,预处理终端,预处理代码基本头。

​ 大致期望,九点半之前码完所有暴力,然后思考中档和最高档。

​ tim.second+=10;//AM:7:45

​ 开始看题,感觉啥都没思路,T1只会10分,T2一眼看上去竟然不知道这是啥,只感觉题面凌乱,T3好像又是图,但不知道是什么东西。

​ tim=make_pair(8,30) ;

​ 长时间思考+懵逼,T1的链没什么想法,T2,T3感觉暂且不想面对,于是打算着手干些什么。

​ 这个时候码完暴力的期望变成了10:00,到那个时候,最低必须得有10+30+20。

​ 先对着T1的10分暴力操刀,简简单单状压枚举,尽管觉得这道题不应该止步于此的,但现在打完暴力要紧。

​ tim=make_pair(9,10);//AM9:10

​ 仔细看了T2,发现只需要求一个机器数量,可以二分答案,然后枚举每一天的任务的完成进度和任务的限定时间做判断,带添加的话复杂度\(q*k *logn\),其中n是浮动的,期望复杂度好像有点高,第二个点不知道过去过不去,第一个点是稳的,挺顺利的打完了,一遍过了大样例。

​ tim.second+=20;//AM9:30

​ 看T3,发现虽然题目说是双向道路,实际上因为方向固定,只需要连接单向道路,枚举每个点能获得的颜色只要从n向左下连边然后bfs跑一遍全图再用bitset标记每个点获得的颜色,最后输出.count即可,代码的思路比较清晰,码的也挺顺利,一遍过了大样例,跑的还很快,兴许有50分。

​ tim=make_pair(10,0);//AM10:00

​ 这个时候还以为已经有10+60+50了,实际上T2不大稳。

​ 继续思考链,很显然如果确定一个区间,选择k个点,假如区间有cnt个点,那么答案是\(\binom{cnt}{k}\),但是合法的区间可能会重叠,怎么样做到不重不漏呢?容斥应该不好搞,突然想到,这个可以用钦定左端点的方式,每次左端点必选,然后向右找右端点,剩下的cnt-1个点中选择k-1个点即可,然后左指针右移,这样这个左端点一定不会被再选到,嗯,可以双指针来实现。

​ 打完这个东西之后开始对拍,感觉T1的难度似乎是最大的?暴力分应该是最难拿的吧。

​ 拍的中间发现了双指针的一点问题,改正过后拍了10000组。

​ tim=make_pair(11,25);//AM11:25

​ 想想这个T2是不是太顺利了,现在应该搞不出来更多的分数了,不如直接对拍,于是又码了一个T2的枚举机器数量的超级暴力,对拍发现二分答案没有问题。

​ tim.second+=25;//AM11:50

​ 准备好交题了。

​ system("pause");

​ return;

}

void analyse(){

​ 1 T2二分答案T的挺惨的,只有30分,然而人均60分,赛后发现结论竟然如此简单,复杂度竟然只有qn,赛场上光想着二分答案沾沾自喜了。

​ 2 虽然比赛前期待自己能够打一半的分数150,但是实际到最后,期望最高只有140,而实际得分只有110,主要是大家都搞出来了T2的60,而我没有。

​ 3 感觉Linux用的时候还是没有Windows方便,怎样都没有,对拍的时候根本不想用vim了,直接用文本编辑器搞这种比较简单的代码。虽然适应倒是适应了。

​ 4 感觉9点以后状态还不错。然后今天的状态都还行(到晚上逐渐下滑)

​ 5 突然想到自己不能忽视部分分的打法,每道题应该把所有的部分分的trick都掌握,死磕正解不一定能够掌握,赛场大概率是不能AC的。尽量高的部分分很重要,不能为了完成正解而忽视中档部分分,否则正式比赛可能只有最低档会。。

​ return;

}

void tutorial{

​ T1的正解也采取了钦定的方法,方法是钦定最远的点对,然后找到钦定这两点后能够加入的最大的点的数量,用一堆vector来存储恰好选择k个点的所有方案,具体来说vector[i]表示恰好选择i个点的所有方案,中间的元素用pair<ll,int>来存储最远点对距离为first的时候的方案数量(second),我们钦定两点找到这两个点作为最远点后还能选择的点的数量,然后枚举能够更新的vector,将<dis[i][j],c[most][k]>放入到vector[k+2]中,(因为i,j是必选的),然后我们对于每个vector按照第一关键字排序,二分找前缀和(second的和)就可以找到每个询问的答案了。

​ T2的正解是凸包优化。。(还不是很懂)

​ T3的正解是二维偏序,当然难的不是二维偏序,而是转化成二位偏序的过程,考虑优先上再右的遍历然后得到后序dfn1,优先向右遍历再向上遍历得到后续dfn2,二者都大者一定能被小者遍历到,这就转化成为了二维偏序问题了。

}

标签:总结,10,5.4,正解,T2,tim,second,pair,模拟
来源: https://www.cnblogs.com/mikuo/p/14730364.html