| A | 组队比赛 |
给定四个数 a,b,c,d,a,b,c,d, 要求把这四个数分成两组,并最小化 两组数的和 的 差的绝对值
#include<iostream>#include<cmath>using namespace std;int b[5];int main(){ int a[5];int min1,min2=16810000,sum; for(int i=1;i<=4;i++){ cin>>a[i]; b[i]=b[i-1]+a[i]; } for(int i=1;i<=4;i++){ for(int j=i+1;j<=4;j++){ sum=a[i]; sum+=a[j]; min1=abs(sum-(b[4]-sum)); min2=min(min1,min2); sum-=a[j]; } } cout<<min2<<endl;}| B | 每日一报 |
报送日期不一致的,则日期较近的在上,日期较久远的在下;报送日期一致体温不一致的,则体温高的在上,体温低的在下;报送日期和体温都一致的,则学号小的在上,学号大的在下。
#include<iostream>#include<algorithm>#include<cstdio>using namespace std;typedef struct bao{int a;double c;int b;}s;bool cmp(s m,s v){if(m.a!=v.a)return m.a>v.a;if(m.c!=v.c)return m.c>v.c;return m.b<v.b;}int main(){ s w[107]; int n; cin>>n; for(int i=0;i<n;i++){ cin>>w[i].a>>w[i].b>>w[i].c; if(w[i].c<38.0){ i--; n--;} } sort(w,w+n,cmp); cout<<n<<endl; for(int i=0;i<n;i++){cout<<w[i].a<<" "<<w[i].b<<" "; printf("%.1f\n",w[i].c);}}| C | 最长非公共子序列 |
如果两个字符串相等则是-1,否则为最长字符串的长度
//想复杂了,开始
#include<bits/stdc++.h>using namespace std;int main(){ string s,c; cin>>s>>c; if(s==c)cout<<-1; else { int l=s.length(),flag=0; int ll=c.length(); if(l==ll) { int num=0; for(int i=0;i<ll;i++) { if(c[i]==s[num]) { num++; } if(num==l) { flag=1; break; } } } if(flag==1) cout<<"-1"; else cout<<max(l,ll); }}| E | 美味的序列 |
给你一个长为 nn 的数列 a_1a1? a_2a2? a_3a3? ...... a_nan? , 一个人现在要从两段吃这个序列 ,, 必须吃完 ..
每次得到的收益为 吃到的数的值.. 但是每次吃完之后整个数列的所有数会减去 1.1.
要求最大化最后的总收益..
#include<bits/stdc++.h>using namespace std;#define ll long longll sum=0,a,n;int main(){ cin>>n;for(int i=1;i<=n;i++){ scanf("%lld",&a); sum+=a;} cout<<sum-n*(n-1)/2<<endl; }//开始wa了,后来我无语了,不过居然是n类型小了???“科大讯飞杯”第18届上海大学程序设计联赛春季赛暨高校网络友谊赛
原文:https://www.cnblogs.com/1324a/p/12758494.html