A
题意
水题
#include<bits/stdc++.h>
using namespace std;
void init()
{
}
void solve()
{
int n;
cin>>n;
int res=4*n-2;
for(int i=1;i<=n;i++)
{
cout<<res<<" ";
res-=2;
}
cout<<endl;
}
signed main(){
int _=1;
cin>>_;
while(_--)
{
solve();
}
return 0;
}
B
能和之前一起爆炸就一起
不能就自己爆炸,维护一下就行
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
void init()
{
}
void solve()
{
int a,b;
cin>>a>>b;
string s;
cin>>s;
int flag=-1;
int ans,bns;
ll sum=0;
int temp=-1;
for(int i=0;i<s.size();i++)
{
if(s[i]=='1')
{
temp=i;
while(i+1<s.size()&&s[i+1]=='1')
i++;
temp=i;
bns=i+1;
break;
}
}
if(temp!=-1)
{
sum+=a;
}
else
{
cout<<0<<endl;
return ;
}
for(int i=temp+1;i<s.size();i++)
{
if(s[i]=='1')
{
if(flag==-1)
{
ans=i;
if(b*(ans-bns)<=a)
{
sum+=b*(ans-bns);
}
else
sum+=a;
flag=1;
}
else
continue;
}
else
{
if(flag==-1)
continue;
else
{
bns=i;
flag=-1;
}
}
}
cout<<sum<<endl;
}
signed main(){
int _=1;
cin>>_;
while(_--)
{
solve();
}
return 0;
}
C
排序什么的维护
#include <bits/stdc++.h>
//#pragma GCC optimize(2)
//#pragma comment(linker, "/STACK:102400000,102400000")
using namespace std;
const int maxn=2e5+5;
struct node
{
int a,b;
};
node no[maxn];
bool cmp(node aa,node bb)
{
return aa.a>bb.a;
}
void solve()
{
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>no[i].a;
}
for(int i=1;i<=n;i++)
{
cin>>no[i].b;
}
sort(no+1,no+n+1,cmp);
int min_=no[1].a;
no[n+1].a=0;
int sum=0;
for(int i=1;i<=n;i++)
{
sum+=no[i].b;
if(sum<min_)
min_=max(no[i+1].a,sum);
else
break;
}
cout<<min_<<endl;
}
int main() {
int _=1;
cin>>_;
while(_--)
{
solve();
}
return 0;
}
D
先把他变成从小到大的数组
就可以化为0 了
能不能变成重小到大是关键
#include <iostream>
using namespace std;
const int maxn=3e5+5;
int a[maxn];
void solve()
{
int n;
cin>>n;
int sum=0;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
for(int i=2;i<=n;i++)
{
sum+=max(0,a[i-1]-a[i]);
}
if(a[1]>=sum)
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
}
int main()
{
int _=1;
cin>>_;
while(_--)
solve();
return 0;
}