[Jsoi2015]最大公约数 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 302  Solved: 169[Submit][Status][Discuss] Description 给定一个长度为 N 的正整数序列Ai对于其任意一个连续的子序列{Al,Al+1...Ar},我们定义其权值W(L,R )为其长度与序列中所有元素的最大公约数的乘积,即W(L,R) = (R-L+1) ∗ gcd (Al..Ar). JYY 希望找出权值最大的子序列…
Description 给定一个长度为 N 的正整数序列Ai对于其任意一个连续的子序列 {Al,Al+1...Ar},我们定义其权值W(L,R )为其长度与序列中所有元素的最大公约数的乘积,即W(L,R) = (R-L+1) ∗ gcd (Al..Ar). JYY 希望找出权值最大的子序列. Input 输入一行包含一个正整数 N. 接下来一行,包含 N个正整数,表示序列Ai 1 < =  Ai < =  10^12, 1 < =  N < =  100,000 Output 输出…
传送门 不知谁说过一句名句,我们要学会复杂度分析 #include <bits/stdc++.h> using namespace std; #define rep(i,a,b) for(int i=a;i<=b;++i) #define fd(i,a,b) for(int i=a;i>=b;--i) ; typedef long long ll; inline ll gi() { ll x=; char o; bool f=true; for(;!isdigit(o=getcha…
BZOJ 不是很懂他们为什么都要DFS三次.于是稳拿Rank1 qwq. (三道题两个Rank1一个Rank3效率是不是有点高qwq?) 记以\(1\)为根DFS时每个点的深度是\(dep_i\).对于一条限制\((a,b,D)\),满足条件的点\(x\)满足:\(dep_a+dep_b-2dep_x\leq D\Rightarrow dep_x\geq\frac{dep_u+dep_v-D}{2}\). 那么\(dep_x\)最小是\(\max\{0,\ \lceil\frac{dep_u+d…
Description 给定一个长度为 N 的正整数序列Ai对于其任意一个连续的子序列{Al,Al+1...Ar},我们定义其权值W(L,R )为其长度与序列中所有元素的最大公约数的乘积,即W(L,R) = (R-L+1) ∗ gcd (Al..Ar). JYY 希望找出权值最大的子序列. Input 输入一行包含一个正整数 N.接下来一行,包含 N个正整数,表示序列Ai1 < =  Ai < =  10^12, 1 < =  N < =  100,000 Output 输出文件包…
题意: 给一段数字序列,求一段区间内未出现的最小自然数. SOL: 框架显然用莫队.因为它兹瓷离线. 然而在统计上我打了线段树...用&维护的结点...400w的线段树...然后二分查找...炸的妥妥的... 然后发现所谓的"暴力"...直接开数组维护...因为指针具有一定的单调性,一次更改可以直接得到解,不用每次都查询... woc真是...有时候数据结构用多了忽略了那些更简单更实用的方法... Code TLE的代码: /*=========================…
题目链接 \(Description\) \(q\)次操作,每次给定点的坐标\((x,y)\),表示加入一个点\((x,y)\),或删除一个点\((x,y)\),或询问:至少需要在平面中加入多少个点,才能使得当前所有点关于\((0,0)-(x,y)\)这条直线对称. \(q\leq2\times10^5,\ 1\leq x,y\leq 112904\). \(Solution\) 两个点关于\((0,0)-(x,y)\)对称,则它们到原点的距离是一样的,即位于同一个圆上. 可以猜到的一个结论是,…
[POI2017]Reprezentacje ró?nicowe Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 141  Solved: 67[Submit][Status][Discuss] Description 给定一个数列a: 当n<=2时,a[n]=n 当n>2,且n是奇数时,a[n]=2a[n-1] 当n>2,且n是偶数时,a[n]=a[n-1]+r[n-1] 其中r[n-1]=mex(|a[i]-a[j]|)(1<=i…
题意:单点更新,大矩阵(\(n*n,n≤10^5\))求和 二维的KD树能使最坏情况不高于\(O(N\sqrt{N})\) 核心在于query时判断当前子树维护的区间是否有交集/当前子节点是否在块中,然后暴力.... 然后跑30s的KD树... 维护size的重构方法不知为何T了,借鉴了hzwer的按数目重构 一个微小的工作是如果更新时点相同那就直接合并,不要另开(虽然还是可以轻易地被卡) T了三天三夜的题总算告一段落了 #include<bits/stdc++.h> #define rep(…
显然若右端点确定,gcd最多变化log次.容易想到对每一种gcd二分找最远端点,但这样就变成log^3了.注意到右端点右移时,只会造成一些gcd区间的合并,原本gcd相同的区间不可能分裂.由于区间只有log个,暴力即可. #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> #include<cstring> #include<algorithm>…