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

 

posted @ 2020-04-12 22:37  午夜的行人  阅读(97)  评论(0编辑  收藏
Live2D