摘要: 因为是从(0,0)点开始以1,3,9,27,....的步数走的 其实可以每走一步后,以机器人为中心,平面所有坐标全部缩小3倍 那么本应该走3步的路现在只需要走1步就可以到达那个点 那么对于机器人来说这种变化意味着什么 走一步,缩小3倍,再走一步,再缩小3倍 以原点(0,0)为参照物,机器人走的距离确 阅读全文
posted @ 2020-01-27 01:19 StelaYuri 阅读(142) 评论(0) 推荐(0)
摘要: 可以将相同的人数分块存在数组gp中先 例如RRGGGRBBBBRR 则gp[1~5]={2,3,1,4,2} 首先可以知道,如果要让没有相邻的相同,只需要每个gp[i]/2向下取整即可得出最少需要改变的个数 例如RGGGR,只看G,只需要改变中间的G即可 例如RGGGGR,只看G,可以选择改变1和3 阅读全文
posted @ 2020-01-27 00:36 StelaYuri 阅读(130) 评论(0) 推荐(0)
摘要: 类似于1213取水 可以把空投当作第0个城市 最后将0~n的所有城市跑最小生成树 #include<iostream> #include<algorithm> using namespace std; struct road{ int from,to,cost; bool operator < (c 阅读全文
posted @ 2020-01-27 00:10 StelaYuri 阅读(108) 评论(0) 推荐(0)
摘要: 注意到N最大只有1e6,但是xy最大有2e8,直接模拟2e8会超时 所以可以将1e6个区间离散化后模拟,模拟时的最坏情况为2e6满足题意 #include<iostream> #include<algorithm> using namespace std; int x[1000010],y[1000 阅读全文
posted @ 2020-01-26 23:59 StelaYuri 阅读(139) 评论(0) 推荐(0)
摘要: 完全弹性碰撞可以视作互相穿过 所以直接考虑只有单个小球的时候,从板子上滑下所需要的时间即可 最后以30000为界分开流读入与缓冲区优化的io方法 //Case4用缓冲区io优化会WA?? #pragma GCC optimize(3) #include<iostream> #include<algo 阅读全文
posted @ 2020-01-26 23:55 StelaYuri 阅读(142) 评论(0) 推荐(0)
摘要: 取模运算在数组内循环解密,否则会MLE #include<stdio.h> char cm[210],cn[1000010]; int main() { int i,j,s1,s2,n,m,l,k; scanf("%d%d%d%d%s%s",&n,&m,&l,&k,cm,cn); for(i=(n- 阅读全文
posted @ 2020-01-26 23:45 StelaYuri 阅读(188) 评论(0) 推荐(0)
摘要: 寻找从i到X,再从X到i的最短路 可以在正向图中从X开始跑一遍最短路,每个点的距离dis1[i]当作从X回到点i的距离 再将图反向从X再跑一遍,每个点的距离dis2[i]当作从i到点X的距离 最后搜索dis1[i]+dis2[i]值最大的输出 #include<bits/stdc++.h> #def 阅读全文
posted @ 2020-01-26 23:41 StelaYuri 阅读(117) 评论(0) 推荐(0)
摘要: 每次都寻找长度为k的区间内的最小值显然很容易超出时间限制 所以可以把窗户看作一个数量固定的队列 每次观察入列与出列的元素对答案贡献如何,以更新答案 #include<stdio.h> int tmp[1000010],max[1000010]; int gmax(int i,int k) { int 阅读全文
posted @ 2020-01-26 22:42 StelaYuri 阅读(118) 评论(0) 推荐(0)
摘要: 因为放一个就需要判断一次,每一次跑一遍全图bfs显然是不现实的 又因为点只有三种,黑白无 所以可以用并查集优化 添加一个棋子就判断周围四个的组别情况 注意出现的情况与答案关系之间的判别 #include<stdio.h> #include<memory.h> int N,M,dx[4]={1,0,- 阅读全文
posted @ 2020-01-26 22:08 StelaYuri 阅读(126) 评论(0) 推荐(0)
摘要: 追踪1号队员,取他回到原来位置需要的次数 #include<stdio.h> int main(){ int T,t,n,ans,x; scanf("%d",&T); for(t=1;t<=T;t++){ scanf("%d",&n); ans=x=1; while(x!=n+1){ if(x>n) 阅读全文
posted @ 2020-01-26 21:23 StelaYuri 阅读(99) 评论(0) 推荐(0)