Educational Codeforces Round 55 (Rated for Div. 2) 部分題解
阿新 • • 發佈:2018-12-05
A. Vasya and Book:
題目
思路:
分三種情況討論
程式碼如下:
#include <cstdio> #include <cstring> #include <algorithm> #include <iostream> #include <math.h> using namespace std; typedef long long ll; int main() { ll t,n,x,y,d; scanf("%lld",&t); while (t--) { scanf("%lld%lld%lld%lld",&n,&x,&y,&d); ll Min=0x3f3f3f3f3f; if(abs(y-1)%d&&abs(n-y)%d&&abs(x-y)%d) { printf("-1\n"); continue; } if(x==y) { printf("0\n"); continue; } if(abs(x-y)%d==0) { Min=min(Min,abs(x-y)/d); } if(abs(y-1)%d==0) { ll t=abs(y-1)/d; if(abs(x-1)%d==0) t=t+abs(x-1)/d; else t=t+abs(x-1)/d+1; Min=min(Min,t); } if(abs(y-n)%d==0) { ll t=abs(y-n)/d; if(abs(x-n)%d==0) t=t+abs(x-n)/d; else t=t+abs(x-n)/d+1; Min=min(Min,t); } printf("%lld\n",Min); } return 0; }
B. Vova and Trophies
題目:
思路:
模擬。
程式碼如下:
#include <cstdio> #include <cstring> #include <algorithm> #include <iostream> using namespace std; const int maxn=2*10e5+5; char s[maxn]; int numa=0,numb=0,loc; int len; int main() { scanf("%d",&len); scanf("%s",s); for (int i=0;i<len;i++) { if(s[i]=='G') { numa++; loc=i; } else { numb++; } } if(numa==0) { printf("0\n"); } else if(numb==0) { printf("%d\n",len); } else { int tlen=0,flag=0; int Max=-0x3f3f3f3f; for (int i=0;i<len;i++) { if(s[i]=='G') { tlen++; } else { //int tnuma=numa-tlen; if(numa-tlen>0) { numa-=tlen; tlen++; int j=i+1; for (;j<len;j++) { if(s[j]=='S'||j==loc) break; tlen++; } } Max=max(Max,tlen); tlen=0; } } printf("%d\n",Max); } return 0; }