编程语言
首页 > 编程语言> > 04.18 “科大讯飞杯”第18届上海大学程序设计联赛春季赛暨高校网络友谊赛

04.18 “科大讯飞杯”第18届上海大学程序设计联赛春季赛暨高校网络友谊赛

作者:互联网

A

题意:计算四个数的最小差值,两两一组

 

代码

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cmath>
#include<cstring>
using namespace std;
int main(){
    int a[4];
    scanf("%d %d %d %d",&a[0],&a[1],&a[2],&a[3]);
    sort(a,a+4);
    printf("%d",abs(a[0]+a[3]-a[1]-a[2]));
}

B

题意:为了预防新型冠状病毒的侵袭,学校组织学生进行每日一报——自 2020 年 1 月 30 日 起至今,每位同学都必须上报自己的身体状况。为了简化问题,我们规定每日一报仅包含以下信息:

作为学校数据库负责人,Lemon 需要对体温异常(不低于 38.0 摄氏度)的报送消息进行整理后向上级上报备案。具体整理规则如下:将报送日期作为第一关键字降序,将体温作为第二关键字降序,将学号作为第三关键字升序排序。即在整理完成后,任意两条报送记录都有如下关系:

思路:结构体排序

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 typedef struct
 4 {
 5     int day,num;double tem;
 6 }mem;
 7 bool cmp(mem x,mem y)
 8 {
 9     if(x.day!=y.day)
10         return x.day>y.day;
11     if(x.tem!=y.tem)
12         return x.tem>y.tem;
13     if(x.num!=y.num)
14         return x.num<y.num;
15 }
16 int main()
17 {
18     int n;
19     cin>>n;
20     mem s[n];
21     int i,j,k;
22     int a,b;
23     double c;
24     int cnt = 0;
25     for(i = 0;i < n;i++)
26     {
27         int repeat = 0;
28         cin>>a>>b>>c;
29         if(a>=20200130&&a<=20200418&&c>=38.0)
30         {
31             for(j = 0;j < cnt;j++)
32             {
33                 if(s[j].day==a&& s[j].num==b)
34                 {
35                     repeat = 1;
36                     break;
37                 }
38             }
39             if(repeat)
40             {
41                 continue;
42             }else
43             {
44                 s[cnt].day = a;s[cnt].num = b;s[cnt].tem = c;
45                 cnt++;
46             }
47         }
48     }
49     cout<<cnt<<endl;
50     sort(s,s+cnt,cmp);
51     for(i = 0;i < cnt;i++)
52         printf("%d %d %.1lf\n",s[i].day,s[i].num,s[i].tem);
53  
54  
55 }

C

题目:序列 c 是 s1s_1s1​ 和 s2s_2s2​ 的非公共子序列当且仅当它满足以下条件中的任何一个:

s1s_1s1​ 和 s2s_2s2​ 的非公共子序列可能有很多,你只需要求出其中长度最长的非公共子序列的长度。

 1 #include<iostream>
 2 #include<algorithm>
 3 #include<cstdio>
 4 #include<cmath>
 5 #include<cstring>
 6 using namespace std;
 7 int main(){
 8     char a[5010],b[5010];
 9     int lena,lenb;
10     gets(a);
11     gets(b);
12     lena=strlen(a);
13     lenb=strlen(b);
14     if(lena!=lenb){
15         printf("%d",max(lena,lenb));
16     }else{
17         int flag=0;
18         for(int i=0;i<lena;i++){
19             if(a[i]!=b[i]){
20                 flag=1;
21             }
22         }
23         if(flag==0){
24             printf("-1");
25         }else{
26             printf("%d",lena);
27         }
28     }
29  
30  
31 }

D

题目:用01组成字符串,每个不是其他的子字符串,需要最多构造几次长度达到所给长度

思路:构造11,101,1001,10001.......

 1 #include<iostream>
 2 #include<algorithm>
 3 #include<cstdio>
 4 #include<cmath>
 5 #include<cstring>
 6 using namespace std;
 7 int main(){
 8     int k;
 9     scanf("%d",&k);
10     if(k==1){
11         printf("1\n");
12         printf("1\n");
13     }else if(k==2){
14         printf("2\n");
15         printf("1\n");
16         printf("00\n");
17     }else{
18         printf("%d\n",k-1);
19         int m=2;
20         for(int i=0;i<k-1;i++){
21             printf("1");
22             for(int i=0;i<m-2;i++){
23                 printf("0");
24             }
25             m++;
26             printf("1\n");
27  
28         }
29     }
30 }

E

题目:现在,他可以从头或从尾部花费 1 秒吃掉这个序列的一个元素,并获得这个元素此时的美味度。但是,令他头疼的是,每经过 1秒,所有还没有被吃的部分的美味度会下降 1。

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 bool cmp(int a,int b){
 4     return a>b;
 5 }
 6 long long jianshao(int n)
 7 {
 8  
 9     long long  i,sum = 0;
10     for(i = 1;i < n;i++)
11         sum+=i;
12     return sum;
13 }
14 int main()
15 {
16     int n;
17     cin>>n;
18     int a[n];
19     int i,j;
20     long long sum = 0;
21     for(i = 0;i < n;i++)
22     {
23         cin>>a[i];
24         sum+=a[i];
25     }
26     sum-=jianshao(n);
27     cout<<sum;
28 }

 

标签:tem,int,18,printf,飞杯,序列,友谊赛,include,day
来源: https://www.cnblogs.com/bonel/p/12771933.html