HRBU_20211027训练
A - Luntik and Concerts
题意
一共有三种时间的歌曲,a个一分钟,b个两分钟,c个三分钟,把这些歌曲分为两组,要求两组的时间相差最短。
思路
把所有的时间相加求和,判断是奇数还是偶数,若是奇数相差1,若为偶数,则相差0.
代码
#include<stdio.h>
#define ll long long
#include<iostream>
using namespace std;
int main()
{
int t;
cin>>t;
while(t--)
{
int a,b,c;
cin>>a;cin>>b;cin>>c;
ll sum=a*1+b*2+c*3;
if(sum%2!=0)
cout<<"1"<<endl;
else
cout<<"0"<<endl;
}
}
B - Luntik and Subsequences
题意
求所有的输入之和是否可以去掉一个数得到和-1
思路
我们可以任意选择一个1,所以有多少个1就有多少个选择,其次是统计0的个数,0的存在就有两个可能,可以加上0也可以不加0,所以可以得到一个公式是1的个数用a表示,0的个数用b表示,公式是a*2^b.
代码
#include<stdio.h>
#include<iostream>
#include<math.h>
using namespace std;
int a[100];
int main()
{
int t;
cin>>t;
while(t--)
{
int n;
cin>>n;
long long sum=0;
for(int i=0;i<n;i++)
cin>>a[i];
int num0=0,num1=0;
for(int i=0;i<n;i++)
{
if(a[i]==0)num0++;
if(a[i]==1)num1++;
}
sum=num1*pow(2,num0);
cout<<sum<<endl;
}
}
C - Grandma Capa Knits a Scarf
题意
求一个序列去除几个字母后称为一个对称的子序列,例如,
abcaacab,去掉头尾的两个b,就变成了acaaca.
思路
从a开始遍历到z,判断a[l]==a[r]是否相等,如果相等,就是l++,r–;如果是a[l]!=a[r],a[l]==c,就是跳过左侧的字母,l++,res++;
同理,右边也是。
代码
#include<stdio.h>
#include<iostream>
using namespace std;
int check(string str,char c)
{
int l=0,r=str.length()-1;
int res=0;
while(l<r)
{
if(str[l]==str[r]){
l++;r--;continue;}
if(str[l]!=str[r] && str[l]==c){
l++;res++;continue;}
if(str[l]!=str[r] && str[r]==c){
r--;res++;continue;}
return 1e6;
}
return res;
}
int main()
{
int t;
cin>>t;
while(t--)
{
int n,ans=1e6;
cin>>n;
string str;
cin>>str;
for(char i='a';i<='z';i++)
ans=min(ans,check(str,i));
cout<<(ans==1e6?(-1):ans)<<endl;
}
}
D - Vupsen, Pupsen and 0
题意
这题的题意简单,答案是不唯一的,输入的数字输出的数相乘相加要等于零即可。
思路
本题主要是考虑分奇偶数就可以,当是奇数时,分别提出三个数,例如是x,y,z,那么要使他们的和为零,输出是,-z,-z,x+y.当数是偶数时,只需要时交换乘以-1,就可,例如,n,m,只需乘以-m,n即可。
代码
#include<stdio.h>
#include<iostream>
using namespace std;
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int n;
scanf("%d",&n);
if(n%2==1)
{
int x,y,z;
scanf("%d %d %d",&x,&y,&z);
n=n-3;
if(x+y!=0)printf("%d %d %d ",-z,-z,x+y);
else if(x+z!=0)printf("%d %d %d ",-y,x+z,-y);
else
printf("%d %d %d ",y+z,-x,-x);
}
while(n>0)
{
int a,b;
scanf("%d %d",&a,&b);
printf("%d %d ",-b,a);
n=n-2;
}
printf("\n");
}
}
总结
无论过去时悲伤还是喜乐,已一去不复返。
无论是未来时辉煌还是黯淡,一切都是未知的。