codeforces Lyft Level 5 Challenge 2018
阿新 • • 發佈:2018-12-24
A. The King's Race:
就是個求最短路徑之差問題。
程式碼如下:
#include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #include <math.h> using namespace std; typedef long long ll; ll n; ll x,y; ll xa,ya; ll xb,yb; int main() { scanf("%lld",&n); scanf("%lld %lld",&x,&y); xa=abs(x-1); ya=abs(y-1); xb=abs(x-n); yb=abs(y-n); //printf("%lld %lld %lld %lld\n",xa,ya,xb,yb); if(max(xa,ya)<=max(xb,yb)) printf("White\n"); else printf("Black\n"); return 0; }
B. Taxi drivers and Lyft
求出租車司機能夠接受的範圍然後去遍歷一下就可以了。
程式碼如下:
#include <cstdio> #include <cstring> #include <algorithm> #include <iostream> #include <vector> using namespace std; const int maxn=1e5+5; int n,m; int a[maxn<<1]; vector<int> t; vector<int> p; vector<int>dis; int num[maxn]; int main() { scanf("%d%d",&n,&m); for (int i=0;i<n+m;i++) { scanf("%d",&a[i]); } for (int i=0;i<n+m;i++) { int x; scanf("%d",&x); if(x) { t.push_back(a[i]); } else { p.push_back(a[i]); } } for (int i=0;i<m-1;i++) { dis.push_back((t[i+1]+t[i])/2); } dis.push_back(p[n-1]); for (int i=0,j=0;i<n&&j<m;j++) { while (dis[j]>=p[i]&&i<n) { num[j]++; i++; } } for (int i=0;i<m;i++) { printf("%d%c",num[i],i==m-1? '\n':' '); } return 0; }
C. The Tower is Going Home
將橫軸上起點不是1的邊全部剔除,然後對橫軸元素和縱軸元素分別排序,
然後依次列舉縱軸元素,這裡可以建兩個無形的豎牆, 一個為0, 一個為1e9, 方便後面操作。
每次列舉要求的牆數為:縱軸的牆數加上大於等於那個牆的個數。
程式碼如下:
#include <cstdio> #include <cstring> #include <algorithm> #include <iostream> using namespace std; const int maxn=1e5+5; int n,m; int r[maxn]; int c[maxn]; int num=0; int Min=0x3f3f3f3f; int main() { scanf("%d%d",&n,&m); c[0]=0; for (int i=1;i<=n;i++) { scanf("%d",&c[i]); } c[n+1]=1e9; for (int i=0;i<m;i++) { int x,y,z; scanf("%d%d%d",&x,&y,&z); if(x==1) { r[num++]=y; } } if(num==0) { printf("0\n"); return 0; } sort(r,r+num); sort(c,c+n+2); int start=0; for (int i=0;i<=n;i++) { int numm=0,flag=0; int target=c[i+1]; for (int j=start;j<num;j++) { if(r[j]>=target) { flag=1; start=j; break; } } if(!flag) { start=num; } numm=num-start+i; Min=min(Min,numm); } printf("%d\n",Min); return 0; }