思路:
判断字符的前半部分是否出现相同的字符
#include<iostream>
#include<cstring>
#include<algorithm>
#define endl "\n"
using namespace std;
void solve()
{
string s;
cin>>s;
int flag=0;
for(int i=0;i<s.size()/2-1;i++)
{
if(s[i]!=s[i+1]) flag=1;
}
if(flag==1) puts("YES");
else puts("NO");
}
int main()
{
std::ios::sync_with_stdio(false);
cin.tie(0);
int T;
cin>>T;
while(T--)
{
solve();
}
return 0;
}
思路:枚举方案1和方案2的使用次数
#include<iostream>
#include<cstring>
#include<algorithm>
#define endl "\n"
using namespace std;
const int N=2e5+10;
int a[N];
long long s1[N],s2[N],s[N];
void solve()
{
int n,k;
cin>>n>>k;
for(int i=1;i<=n;i++) cin>>a[i];
sort(a+1,a+1+n);
for(int i=1;i<=n;i++)
{
s[i]=s[i-1]+a[i];
}
long long ans=0;
for(int i=0;i<=k;i++)
{
int l=2*i;
int r=n-(k-i);
if(s[r]-s[l]>=ans)
{
ans=s[r]-s[l];
}
}
cout<<ans<<endl;
}
int main()
{
std::ios::sync_with_stdio(false);
cin.tie(0);
int T;
cin>>T;
while(T--)
{
solve();
}
return 0;
}
Contrast Value
思路:
对于一个单调的区间,其中间的部分是无意义的,对于一段相等的区间也是如此,
先去重然后再判断
#include<iostream>
#include<cstring>
#include<algorithm>
#define endl "\n"
using namespace std;
const int N=3e5+10;
int a[N];
int b[N];
void solve()
{
int n;
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i];
b[1]=a[1];
int cnt=1;
for(int i=2;i<=n;i++)
{
if(a[i]!=a[i-1]) b[++cnt]=a[i];
}
int ans=min(2,cnt);
if(cnt==1)
{
cout<<ans<<endl;
return;
}
for(int i=1;i+2<=cnt;i++)
{
if((b[i]<b[i+1]&&b[i+1]>b[i+2])||(b[i]>b[i+1]&&b[i+1]<b[i+2])) ans++;
}
cout<<ans<<endl;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
int T;
cin>>T;
while(T--)
{
solve();
}
return 0;
}