暴力求调
查看原帖
暴力求调
246331
mystic_qwq楼主2025/6/25 23:51
#include<bits/stdc++.h>
using namespace std;
void ck(int&a,int b){a=max(a,b);}
#define f(i,x,y) for(int i=x;i<=y;++i)
#define g(i,x,y) for(int i=x;i>=y;--i)
#define MAXN 500
int n,m,l[MAXN],r[MAXN],lsh[MAXN],Ans[MAXN];
int s[MAXN][MAXN],a[MAXN][MAXN],b[MAXN][MAXN],c[MAXN][MAXN];
map<int,int> mp;
main(){
  cin.tie(0)->sync_with_stdio(0);
  cin>>n;
  f(i,1,n) cin>>l[i]>>r[i],lsh[++m]=l[i],lsh[++m]=(r[i]+=l[i]);
  sort(lsh+1,lsh-~m),m=unique(lsh+1,lsh-~m)-(lsh+1);
  f(i,1,m) mp[lsh[i]]=i; 
  f(i,1,n) {
    l[i]=mp[l[i]],r[i]=mp[r[i]];
    f(j,1,l[i]) f(k,r[i],m) ++s[j][k];
  }
  f(i,1,m) f(j,1,n) a[i][j]=b[i][j]=0xc0c0c0c0;
  f(i,1,m) f(k,1,i) f(j,0,s[1][i]) {
    if(j>=s[k][i]) ck(a[i][j],a[k][j-s[k][i]]);
    ck(a[i][j],a[k][j]+s[k][i]);
  }
  g(i,m,1) f(k,i,m) f(j,0,s[i][m]) {
    if(j>=s[i][k]) ck(b[i][j],b[k][j-s[i][k]]);
    ck(b[i][j],s[i][k]+b[k][j]);
  }
  int ans=0;
  f(j,1,n) ck(ans,min(j,a[m][j]));
  cout<<ans<<endl;
  f(i,1,m) f(j,i,m) f(x,1,n) f(y,1,n) 
    ck(c[i][j],min(x+s[i][j]+y,a[i][x]+b[j][y]));
  f(i,1,n) {
    f(x,1,l[i]) f(y,r[i],m) ck(Ans[i],c[x][y]);
    cout<<Ans[i]<<endl;
  }
}
2025/6/25 23:51
加载中...