摘要: 从小到大排序后 先固定一遍,另外两边递增查找 即固定 i,j=i+1,k=j+1 然后让k递增到 a[i]+a[j]<=a[k] 时 此时不能凑成一个三角形 答案增加 k-1-j 组 此时不需要重置 k=j+1 因为 j++ 后 a[j] 会变大 那么在 j~k 之间的所有木棍长度均能再次满足这种 阅读全文
posted @ 2020-01-27 15:55 StelaYuri 阅读(104) 评论(0) 推荐(0) 编辑
摘要: Nim博弈 因为移动到第0阶会消失 所以可以得到从最后一个人操作必定是把第1阶所有子全部移动到第0阶 递推可得,最后一个能把奇数阶的子移动到偶数阶上的人将会必胜 所以这个必胜条件就是奇数阶上的子全部为0 拿奇数阶进行Nim博弈即可 #include<stdio.h> int main(){ int 阅读全文
posted @ 2020-01-27 15:38 StelaYuri 阅读(126) 评论(0) 推荐(0) 编辑
摘要: 因为从俯视图看,输入输出的视角是从右下方看向左上方的 所以左上角的正方体最有可能被其他正方体挡住 立体上,底部的正方体最有可能被顶部的正方体挡住 所以绘图应该从后往前,从下往上绘制 剩下的就是一大堆计算和判断了 采用的是先绘制出规范的图再与输入的图做对比的方式 #include<stdio.h> # 阅读全文
posted @ 2020-01-27 01:23 StelaYuri 阅读(133) 评论(0) 推荐(0) 编辑
摘要: 因为是从(0,0)点开始以1,3,9,27,....的步数走的 其实可以每走一步后,以机器人为中心,平面所有坐标全部缩小3倍 那么本应该走3步的路现在只需要走1步就可以到达那个点 那么对于机器人来说这种变化意味着什么 走一步,缩小3倍,再走一步,再缩小3倍 以原点(0,0)为参照物,机器人走的距离确 阅读全文
posted @ 2020-01-27 01:19 StelaYuri 阅读(134) 评论(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 阅读(125) 评论(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 阅读(103) 评论(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 阅读(131) 评论(0) 推荐(0) 编辑
摘要: 完全弹性碰撞可以视作互相穿过 所以直接考虑只有单个小球的时候,从板子上滑下所需要的时间即可 最后以30000为界分开流读入与缓冲区优化的io方法 //Case4用缓冲区io优化会WA?? #pragma GCC optimize(3) #include<iostream> #include<algo 阅读全文
posted @ 2020-01-26 23:55 StelaYuri 阅读(137) 评论(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 阅读(173) 评论(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 阅读(110) 评论(0) 推荐(0) 编辑