赞
踩
AC代码
#include<iostream> #include<set> using namespace std; long long read(){ long long x=0,w=1; char c=getchar(); while(!isdigit(c)){ if(c=='-')w=-1; c=getchar(); } while(isdigit(c)){ x=(x<<1)+(x<<3)+(c&15); c=getchar(); } return x*w; } int main(){ int t=read(); while(t--){ int n=read(); int one=0,two=0x3f3f3f3f; set<int>three; while(n--){ int a=read(),x=read(); if(a==1)one=max(x,one); else if(a==2)two=min(x,two); else three.insert(x); } int ans=two-one+1; for(int i:three)if(one<=i&&i<=two)ans--; cout<<max(0,ans)<<endl; } }
由于所有数均为正整数,所以Alice和Bob的操作必定使得总和变小。首先对数组从大到小排序,设前 x x x个数的前缀和为 s u m x sum_x sumx。
AC代码
#include<bits/stdc++.h> using namespace std; long long read(){ long long x=0,w=1; char c=getchar(); while(!isdigit(c)){ if(c=='-')w=-1; c=getchar(); } while(isdigit(c)){ x=(x<<1)+(x<<3)+(c&15); c=getchar(); } return x*w; } int main(){ int t=read(); while(t--){ int n=read(),k=read(),x=read(); int a[n+1]; long long sum[n+1]; sum[0]=0; for(int i=1;i<=n;++i)a[i]=read(); sort(a+1,a+n+1,greater<>()); for(int i=1;i<=n;++i)sum[i]=sum[i-1]+a[i]; long long cut=sum[x]<<1; long long ans=sum[n]-cut; for(int i=1;i<=k;++i){ cut=(sum[min(n,x+i)]-sum[i])<<1; ans=max(ans,sum[n]-sum[i]-cut); } cout<<ans<<endl; } }
对于任意可能的 k k k,每组数组中相同位置的数取模需相同,即 a i m o d m ≡ a i + k m o d m a_i\mod m\equiv a_{i+k}\mod m aimodm≡ai+kmodm ,可转化为 ∣ a i − a i + k ∣ ≡ 0 m o d m |a_i-a_{i+k}|\equiv0\mod m ∣ai−ai+k∣≡0modm。
由于 m > 1 m>1 m>1,所以对于任意k,需要遍历数组确定 m > 1 m>1 m>1。
特别地,当 m = 0 m=0 m=0时,代表不存在元素 a 1 + k a_{1+k} a1+k,即只有一个数组,故 m m m可以取任何值。
AC代码
#include<bits/stdc++.h> using namespace std; long long read(){ long long x=0,w=1; char c=getchar(); while(!isdigit(c)){ if(c=='-')w=-1; c=getchar(); } while(isdigit(c)){ x=(x<<1)+(x<<3)+(c&15); c=getchar(); } return x*w; } int gcd(int a,int b){ return b?gcd(b,a%b):a; } int main(){ int t=read(); while(t--){ int n=read(); int a[n]; for(int i=0;i<n;++i)a[i]=read(); int ans=0; for(int i=1;i<=n;++i){ if(n%i==0){ int g=0; for(int j=i;j<n;++j){ g=gcd(g,abs(a[j]-a[j-i])); } ans+=(g!=1); } } cout<<ans<<endl; } }
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。