树和图
2026-07-18 19:31:59
发布于:广东







选做
最长回文串
#include<bits/stdc++.h>
using namespace std;
int n;
string s;
int main(){
cin>>n;
cin>>s;
int cnt1 = 0,cnt2 = 0;
for(int i=0;i<n;i++){
if(s[i]=='a')cnt1++;
else cnt2++;
}
if(cnt1%2==1 && cnt2%2==1)cout<<n-1;
else cout<<n;
return 0;
}
序列
#include<bits/stdc++.h>
using namespace std;
int n,m,sum;
vector<long long> a;
int main(){
cin>>n>>m;
for(int i =1;i<=n;i++){
int x;
cin>>x;
a.push_back(x);
sum += x;
cout<<x<<' ';
}
for(int i = n;i<n+m;i++){
a.push_back(sum%10);
sum = sum-a[i-n]+a[i];
sum = (sum%10+10)%10;
cout<<a[i]<<' ';
}
return 0;
}
毒匕首
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll a[105],t,n,h;
bool check(ll mid){
ll sum=0;
for(int i=1;i<n;i++){
if(a[i]+mid>=a[i+1]){
sum+=a[i+1]-a[i];
}else{
sum+=mid;
}
}
sum+=mid;
if(sum>=h){
return 1;
}else{
return 0;
}
}
int main(){
cin>>t;
while(t--){
cin>>n>>h;
for(int i=1;i<=n;i++){
cin>>a[i];
}
ll l=1,r=1e18+10,ans=1e18;
while(l<=r){
ll mid=(l+r)/2;
if(check(mid)){
ans=mid;
r=mid-1;
}else{
l=mid+1;
}
}
cout<<ans<<endl;
}
return 0;
}
全部评论 1
不错
昨天 来自 广东
0





















有帮助,赞一个