求个hack数据
查看原帖
求个hack数据
1122530
elpsconr楼主2024/8/17 14:11

感觉没啥问题,但是不知道为啥wa了25个点,可不可以求个hack数据我自己调

#include<bits/stdc++.h>
using namespace std;
#define int long long
#define PII pair<int,int>
#define tul tuple<int,int,int>
#define all(x) x.begin(),x.end()
#define cy cout<<"Yes"<<endl
#define cn cout<<"No"<<endl
#define lc rt<<1
#define rc rt<<1|1
const int N=3e3+6,yyx=998244353;
int n,q;
int x,y,dp[N][N],sa[N],sb[N];
struct node
{
    int id,a,b;
}e[N];
inline void solve(){
  cin>>n>>x>>y;
  for(int i=1;i<=n;++i) cin>>e[i].a>>e[i].b,e[i].id=e[i].a+e[i].b;
  sort(e+1,e+1+n,[&](node i,node j){
    if(i.id==j.id){
        if(x<=y){
        if(i.a==j.a) return i.b<j.b;
        return i.a<j.a;
    }
    else{
        if(i.b==j.b) return i.a<j.a;
        return i.b<j.b;
        }
    }
    else return i.id<j.id;
  });
  //for(int i=1;i<=n;++i) cout<<e[i].a<<" "<<e[i].b<<endl;
  for(int i=1;i<=n;++i) sa[i]=sa[i-1]+e[i].a,sb[i]=sb[i-1]+e[i].b;
  int ans=0,z=0;
  int s1=0,s2=0;
  for(int i=1;i<=n;++i){
    s1=sa[i],s2=sb[i];
    for(int j=0;j<=10000;++j){
        dp[i][j]=dp[i-1][j];
        if(j<=max(x,y)){
            if(e[i].a<=e[i].b){
            if(j>=e[i].a&&s2<=j) dp[i][j]=(dp[i][j],dp[i-1][j-e[i].a]+1);
            //else if(j>=e[i].a&&s2>j&&s2-e[i].b<=j) dp[i][j]=(dp[i][j],dp[i-1][j-e[i].a]+1);
        }
            else{
                if(j>=e[i].b&&s1<=j) dp[i][j]=(dp[i][j],dp[i-1][j-e[i].b]+1);
                //else if(j>=e[i].b&&s1>j&&s1-e[i].a<=j) dp[i][j]=(dp[i][j],dp[i-1][j-e[i].b]+1);
            }
            //cout<<i<<" "<<j<<" "<<dp[i][j]<<endl;
        }
        ans=max(ans,dp[i][j]);
    }
  }
  if(sa[ans]<=x&&sb[ans]<=y&&ans<n) ans++;
  cout<<ans<<endl;
}
signed main(){
  cin.tie(0)->sync_with_stdio(0);
  int _=1;
  //cin>>_;
  while(_--)
  solve();
  return 0;
}
2024/8/17 14:11
加载中...