2020字节跳动校园招聘算法方向第二场考试题解(部分)
记第一次笔试,真实菜得扣jio!
第一题:
1 #include <iostream> 2 #include <cstdio> 3 using namespace std; 4 int main() 5 { 6 int t; 7 scanf("%d",&t); 8 int a[100005],b[100005]; 9 int i,j,n; 10 while(t--){ 11 scanf("%d",&n); 12 int l=-1,r=-1; 13 for(int i=0;i<n;i++){ 14 scanf("%d",&a[i]); 15 } 16 for(int i=0;i<n;i++){ 17 scanf("%d",&b[i]); 18 if(b[i]!=a[i]){ 19 if(l==-1){ 20 l=i; 21 } 22 r=i; 23 } 24 } 25 if(l==-1&&r==-1){ 26 cout<<"YES"<<endl; 27 continue; 28 } 29 int k=b[l]-a[l]; 30 int flag=1; 31 for(int i=l;i<=r;i++){ 32 a[i]+=k; 33 if(b[i]!=a[i]){ 34 flag=0; 35 break; 36 } 37 } 38 if(flag) cout<<"YES"<<endl; 39 else cout<<"NO"<<endl; 40 } 41 return 0; 42 }
第二题:思路不对 gg
第三题:
1 #include <iostream> 2 #include <cstdio> 3 #include <algorithm> 4 using namespace std; 5 int main() 6 { 7 int n,m,i,j,t; 8 int a[1000005],b[1000005]; 9 scanf("%d%d",&n,&m); 10 for(i=0;i<n;i++){ 11 scanf("%d",&a[i]); 12 } 13 for(i=0;i<m;i++){ 14 scanf("%d",&b[i]); 15 } 16 sort(a,a+n); 17 sort(b,b+m); 18 i=n-1;j=m-1; 19 long long sum=0; 20 while(i>=0&&j>=0){ 21 if(b[j]>=a[i]){ //可以使用优惠券 22 t=b[j]-a[i]; 23 sum+=t; 24 //printf("%d %d %d\n",a[i],b[j],sum); 25 j--; 26 }else{ //此优惠卷不行 尝试下一个 27 i--; 28 } 29 } 30 while(j>=0){ 31 sum+=b[j]; 32 j--; 33 } 34 printf("%lld\n",sum); 35 return 0; 36 }
第四题:没思路gg