
算法竞赛训练指南
minato_yukina
主播不是退役了,主播只是没有名额
展开
-
蓝书个人补完计划
立个flag,从现在开始专心刷一段时间的算法竞赛入门经典.可能有的题目确实没有思路,需要借鉴蓝书的部分代码和思路.|||第一章例题1例题2-例题3-–例题4 墓地雕塑––––...原创 2022-03-22 14:38:22 · 126 阅读 · 0 评论 -
例题20 流星(LA 3905)
给你一个矩形,还有n个点初始位置和速度,求矩形内包含流星最多的时刻,注意,矩形的边上不算照到.模型建立:把t看作一个变量,那么对于每个流星xxx来说,它在矩形出现的时间可以简化为[Lx,Rx][L_x,R_x][Lx,Rx],那么问题转化为从左边往后边扫求某个时刻,该竖线ttt与最多区间相交.注意,要先处理RxR_xRx的事件,因为在那一时刻,该流星已经消失看不见了.观看蓝书代码后,技巧又学到了.因为我们只关注这个区间的左右端点LX,RxL_X,R_xLX,Rx,只用把他们存进去就行./*原创 2022-03-22 14:25:07 · 268 阅读 · 0 评论 -
D. Potion Brewing (Codeforces Round #778 (Div. 1 + Div. 2, based on Technocup 2022)
赛后补题.给你一个n个点带权的树,(因为有n-1条边且连通),然后再给一条边u,v,x,yu,v,x,yu,v,x,y代表u点权/v点权=x/yu点权/v点权=x/yu点权/v点权=x/y.你的任务是给树上的点赋值,使得总的点权和最小且满足边之间的比例关系.思考:首先考虑树高为2的情况,寻找父子关系.首先,如果父亲节点的值确定了,那么每一个儿子的节点的值也一定确定了.记xxx为父亲节点的比例,yyy为儿子节点的比例.valxval_xvalx为父亲节点的值valyval_yvaly为儿子的值不原创 2022-03-21 22:08:17 · 495 阅读 · 0 评论 -
Subsequence UVALive - 2678
子序列.给你一个数组a,长度为n,找一个连续最短的序列,使得和大于等于S.思路:一眼双指针.因为双指针通常可以解决一些连续区间最小/最大的问题.在这题,数组a的元素都是正数的,所以总是能让右指针向右增加先构造出一个合法的区间[L,R],再尝试把L指针向左移动,使得答案最优,直到区间和不再是S./**/#include<bits/stdc++.h>using namespace std;typedef long long ll;const int maxn = 3e5+2;con原创 2022-03-21 16:47:42 · 334 阅读 · 0 评论 -
例题19 计算器谜题(Uva 11549) (Floyd 判圈算法)
有一个计算器只能显示nnn位数字,输入一个整数k,然后把它反复平方直到溢出为止,然后把溢出数字最高位n作为下一次的k如此反复思路:显然存在循环节.为什么.假设第一次溢出的数字是k1,反复平方后得到k2.如果不存在循环节,k1!=k2k1!=k2k1!=k2.假设进行了11次上述过程,得到了11个不同的数字,而由于最高位的数字是0~9,抽屉原理,至少有一个数字出现了两次,那么它就是循环节了.怎么判断循环节比较快一点呢.书上提供了两种思路,开set,或者Floyd判圈.我采用的是第二种思路.判圈就是类似于原创 2022-03-21 16:35:12 · 1143 阅读 · 0 评论 -
Uva 11078 开放式学分制(水题)
没什么好说的,水题一个,维护下最大值就行/**/#include<bits/stdc++.h>using namespace std;typedef long long ll;const int maxn = 3e5+2;const int INF = 1e9+7;typedef pair<int,int> pii;int main(){// freopen("1.txt","r",stdin); ios::sync_with_stdio(false); ci原创 2022-03-21 15:27:41 · 127 阅读 · 0 评论 -
例题17 Age Sort年龄排序(Uva 11462)
难得一见的水题,就是输入n个1~100的正整数,让你输出排序完的数字.直接存进一个cntcntcnt数组里面算就是了./**/#include<bits/stdc++.h>using namespace std;typedef long long ll;const int maxn = 3e5+2;const int INF = 1e9+7;typedef pair<int,int> pii;int main(){// freopen("1.txt","r",s原创 2022-03-21 15:18:51 · 180 阅读 · 0 评论 -
例题6 立方体成像(LA 2995)
给你一个n∗n∗nn*n*nn∗n∗n的立方体,有一些单位立方体已经没了.单位立方体重1,且颜色是单一的给出前左右后顶六个视图,判断物体剩下的最大重量.基本想法:首先如果某个视图里面有一个位置是".",那么那个视图对应视角的n个方块就要全部删完不可,否则会矛盾.其次,如果出现颜色不同的情况,也得删删,而且不难发现由于每个方格颜色都是一样的,我们可以用三元组color(x,y,z)color(x,y,z)color(x,y,z)代表一个方格的颜色,颜色不同就一直去删掉.注意坐标系的建立,x轴是怼向屏幕原创 2022-03-21 15:06:29 · 328 阅读 · 0 评论 -
蚂蚁(UVA 10881)
有一个长度为L的木棍,有n个蚂蚁,要么是向左爬,要么是向右爬,速度为1.两只相碰时,同时掉头.给出n个蚂蚁起始的坐标还有方向.然后再给出T秒,计算T秒后每个蚂蚁的位置思路:两个蚂蚁相碰实际上是没有任何影响的,这等价于两者互相穿过.那么这个问题就相当白给了不是嘛....原创 2022-03-18 10:33:32 · 264 阅读 · 0 评论 -
LA3708 NEERC2006 墓地雕塑
题意:给你一个10000的圆,一开始有n个点均等排在上面,考虑加入m个点,然后使得(n+m)等分,问你最少移动这n个点多少距离.思路:对于每一个原来的n个点来说,一定有其中的一个点是不用动的.那么其他的点就要移动到它最近的(n+m)等分的点上去.事实上,把圆圈展开成一条直线,就可以看作有(n)等分点与一个点在起点.现在新增了(n+m)个等分点,我们只需要从前往后扫描,每个点移动到对应的位置即可.我们设这条直线长度为L(也就是周长C)但问题出现了,在这样做的过程中,是否会使得某些位置没有被使用,但是雕原创 2022-03-17 22:55:48 · 308 阅读 · 0 评论