day 9
2025-02-06 20:09:51
发布于:上海
使数组为空的最少操作次数
#include<bits/stdc++.h>
using namespace std;
int nums[1000005];
int main()
{
int n;
cin>>n;
int maxn = 0;
for(int i = 0;i<n;i++)
{
int x;
cin>>x;
nums[x]++;
maxn = max(maxn,x);
}
int ans = 0;
for(int i = 0;i<=maxn;i++)
{
if(nums[i]==1)
{
cout<<-1;
return 0;
}else{
if(nums[i]%3==0)
ans+=(nums[i]/3);
else
ans+=(nums[i]/3)+1;
}
}
cout<<ans;
}
最长加1区间
#include <bits/stdc++.h>
#define ll long long
using namespace std;
int n,l=-1,cnt,maxn;
int main(){
cin>>n;
for(int i=1;i<=n;i++){
int a;
cin>>a;
if(a==l+1){
cnt++;
l=a;
}else{
l=a;
maxn=max(maxn,cnt);
cnt=1;
}
}cout<<maxn;
return 0;
}
我要成为出题者!
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
cin>>n;
int a[n+1],b[n+1];
for(int i=1;i<=n;i++)cin>>a[i];
for(int i=1;i<=n;i++)cin>>b[i];
int l = 1,r = 1;
int ans= 0;
while(l<=n && r<=n){
if(b[r]>=a[l]){
ans++;
l++;
r++;
}else{
r++;
}
}
cout<<n-ans;
}
接近均衡的问题
#include<bits/stdc++.h>
#define ll long long
using namespace std;
int b[300000];
int a[300000];
int main() {
int n;
cin >> n;
ll sum = 0;
for (int i = 0; i < n; i++) {
cin>>a[i];
sum+=a[i];
}
sort(a,a+n);
for (int i=0;i<n;i++) b[i]=sum/n;
for (int i=0;i<sum%n;i++)
b[n-1-i]++;
ll ans=0;
for (int i=0;i<n;i++)
ans+=abs(a[i]-b[i]);
cout <<ans/2 << endl;
}
这里空空如也
有帮助,赞一个