[数论] Codeforces 819D R #421 D.Mister B and Astronomers & 516E R #292 E. Drazil and His Happy Friends
两道类似的题
819D 考虑一个人应该能够观察的位置ti,(ti+S)modT,(ti+2S)modT?
这个应该是形成gcd(S,T)个环,每个环是长度Tg
然后把同一个环的一起处理,把点放到环上,那么沿环的方向到下一个点为止应该都是归到这个点答案里面的
#include
#include
#include
#include
using namespace std;
typedef long long ll;
typedef pair abcd;
#define read(x) scanf("%I64d",&(x))inline abcd EXGCD(ll a,ll b){
if (!b) return abcd(1,0);
abcd t=EXGCD(b,a%b);
return abcd(t.second,t.first-a/b*t.second);
}
inline ll Calc(ll a,ll b,ll p){
abcd t=EXGCD(a,p);
ll d=t.first*a+t.second*p;
return ((t.first%p+p)*(b/d))%p;
}const int N=200005;
ll n,S,T,g,C;
ll a[N],_a[N];
int idx[N];
abcd t[N];
int tot;
ll ans[N];
set Set;
inline bool cmp(int x,int y){
return a[x]%g==a[y]%g?a[x]y]:a[x]%gy]%g;
}int main(){
freopen("t.in","r",stdin);
freopen("t.out","w",stdout);
read(T);
read(n);
for (int i=1;
i<=n;
i++) read(_a[i]),S+=_a[i];
for (int i=1;
i
516E 【[数论] Codeforces 819D R #421 D.Mister B and Astronomers & 516E R #292 E. Drazil and His Happy Friends】考虑如果一边某个人在时刻t被标记,那么至少n时刻后(t+n)modm号人也必然被标记,也就是一个环上求最早被访问到的距离,还是放到环上,到下一个点位置应该都是以这个点作为最优的
最后两边被访问到最晚的时间就是答案
#include
#include
#include
#include
using namespace std;
typedef long long ll;
typedef pair abcd;
#define read(x) scanf("%d",&(x))inline abcd EXGCD(ll a,ll b){
if (!b) return abcd(1,0);
abcd t=EXGCD(b,a%b);
return abcd(t.second,t.first-a/b*t.second);
}
inline ll Calc(ll a,ll b,ll p){
abcd t=EXGCD(a,p);
ll d=t.first*a+t.second*p;
return ((t.first%p+p)*(b/d))%p;
}const int N=200005;
int S,T,g;
int a[N],b[N];
ll ans;
abcd t[N];
int _t;
set Set;
inline bool cmp(abcd x,abcd y){
return x.first%g==y.first%g?(x.first==y.first?x.second
推荐阅读
- HDU 5528【2015长春现场赛 B】 Count a * b
- 类欧几里得算法|[类欧几里得算法 数论] BZOJ 2987 Earthquake
- 模板 poj2947 Widget Factory 高斯消元
- 【扩展欧几里得】练习题
- 扩展欧几里得【数论
- 数论|hdu 5322 Hope(分治+NTT)
- HDU 5528 Count a × b
- 线性同余方程组
- 数论|AtCoder Beginner Contest 156 C.Rally