ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

5.4模拟赛总结

2021-05-04 22:03:05  阅读:184  来源: 互联网

标签:总结 10 5.4 正解 T2 tim second pair 模拟


#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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有