Codeforces 1091 Good Bye 2018
阿新 • • 發佈:2018-12-31
佔個坑先,希望不要掉的太慘了吧,不要掉到上一次之前的rating
A - New Year and the Christmas Ornament
好像沒什麼可說的。
#include<cstdio> #include<cstring> #include<algorithm> #include<queue> #include<set> #include<map> #include<vector> #include<cmath> #include<cctype> using namespace std; typedef long long ll; const int Maxn=210000; int main() { int a,b,c; scanf("%d%d%d",&a,&b,&c); if(a+1<=b&&a+2<=c) { printf("%d",3*a+3); } else if(b<=a+1&&b+1<=c) { printf("%d",3*b); } else if(c<=a+2&&c<=b+1) { printf("%d",3*c-3); } return 0; }
B - New Year and the Treasure Geolocation
有一個顯然的結論,x的最小值加的一定是最大的x變化量,y同理。因為資料保證有解那麼直接找即可。
#include<cstdio> #include<cstring> #include<algorithm> #include<queue> #include<set> #include<map> #include<vector> #include<cmath> #include<cctype> using namespace std; typedef long long ll; const int Maxn=210000; int n,x[Maxn],y[Maxn],a[Maxn],b[Maxn]; int main() { scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d%d",&x[i],&y[i]); sort(x+1,x+n+1),sort(y+1,y+n+1); for(int i=1;i<=n;i++) scanf("%d%d",&a[i],&b[i]); sort(a+1,a+n+1),sort(b+1,b+n+1); printf("%d %d\n",x[1]+a[n],y[1]+b[n]); return 0; }
C - New Year and the Sphere Transmission
考慮兩個數產生的答案不同當且僅當他們與n的gcd不同,那麼就列舉n的約數,然後計算即可,具體參考程式碼。
#include<cstdio> #include<cstring> #include<algorithm> #include<queue> #include<set> #include<map> #include<vector> #include<cmath> #include<cctype> using namespace std; typedef long long ll; const int Maxn=210000; int n,num; ll x[Maxn]; void work(int n,int k) { ll d=n/k; x[++num]=n*(d-1)/2+d; } int main() { scanf("%d",&n); for(int i=1;i*i<=n;i++) if(n%i==0) { work(n,i); work(n,n/i); } sort(x+1,x+num+1); for(int i=1;i<=num;i++) if(x[i]!=x[i-1]) printf("%I64d ",x[i]); return 0; }