A - A Blend of Springtime
题意很简单,就是看花瓣掉落,花加瓣是否有三种颜色
思路:
就是看ABC这三个不同的单词是否能连在一起
(我通过for循环一个一个的看但是一直有bug最后还是没能解决)
1.可以利用for循环三个三个的看一直到(i=n-3)
2.利用函数substr(),找string 的子串
int main()
{
speed_up;
string s;
cin>>s;
int a=0,b=0,c=0,f=0;
for(int i=0;i<s.size();i++)
{
string ss=s.substr(i,3);
if(ss=="ABC"||ss=="ACB"||ss=="BAC"||ss=="BCA"||ss=="CAB"||ss=="CBA")f=1;
}
if(f)cout<<"Yes"<<endl;
else cout<<"No"<<endl;
}
E - High School: Become Human
思路:
比较x的y次方和y的x次方的大小
由于x的y次方和y的x次方都是很大的数,都超过了long long
所以选择用ln来比较
#include<bits/stdc++.h>
#include<algorithm>
#define ll long long
using namespace std;
const ll nl=1e5+5;
#define speed_up ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
int main(){
speed_up;
ll x,y;
cin>>x;
cin>>y;
if(x*log(y)>y*log(x)){
cout<<"<"<<endl;
}else if(x*log(y)<y*log(x)){
cout<<">"<<endl;
}else{
cout<<"="<<endl;
}
}
#include<bits/stdc++.h>
#include<algorithm>
#define ll long long
using namespace std;
const ll nl=1e5+5;
#define speed_up ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
int main(){
speed_up;
ll x,y;
cin>>x;
cin>>y;
if(x*log(y)>y*log(x)){
cout<<"<"<<endl;
}else if(x*log(y)<y*log(x)){
cout<<">"<<endl;
}else{
cout<<"="<<endl;
}
}
F - Three displays
(看的网上大佬的代码和思路)
思路:
根据第一组序列找一个递增三元组
这个递增三元组对应着三个下面序列的值,求最小的三元组的和
枚举中间一个值,找i前面小于a[i]的最小的值,并且找i后面大于a[i]的最小的值,不断更新最小值
#include<bits/stdc++.h>
#define ll long long
#define inf 0x3f3f3f3f
using namespace std;
const int maxx=3e3+100;
int a[maxx],b[maxx];
int n;
int main()
{
set<int> s;
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
}
for(int i=1;i<=n;i++)
{
scanf("%d",&b[i]);
}
int max3=inf;
for(int i=1;i<=n;i++)
{
int max1=inf,max2=inf;
for(int j=1;j<i;j++)
{
if(a[j]<a[i]) max1=min(max1,b[j]);
}
for(int j=i+1;j<=n;j++)
{
if(a[j]>a[i]) max2=min(max2,b[j]);
}
max3=min(max3,max1+max2+b[i]);
}
if(max3==inf) puts("-1");
else printf("%d\n",max3);
}