How G W*2
  • 板块学术版
  • 楼主Lele_Programmer
  • 当前回复4
  • 已保存回复4
  • 发布时间2025/7/19 22:10
  • 上次更新2025/7/20 14:17:29
查看原帖
How G W*2
961972
Lele_Programmer楼主2025/7/19 22:10
const int N=200005;
const int M=605;
const int inf=-1e9;

int n,m;
int f[M];

struct node {
    int a,b;
    friend bool operator < (const node& a,const node& b) {
        return a.b*(b.a-b.b)>b.b*(a.a-a.b);
    }
} arr[N];

i32 main() {
    read(n),read(m);
    _rep(i,1,m) read(arr[i].a),read(arr[i].b);
    sort(arr+1,arr+1+m);
    int ans=0;
    if (n>300) {
        int a=arr[1].a,b=arr[1].b;
        int k=n-300;
        int cnt=k/(a-b);
        ans+=cnt*a;
        n-=cnt*(a-b);
    }
    // n ==> [300,600)
    _rep(i,1,m) _rrep(j,n-(arr[i].a-arr[i].b),arr[i].b) f[j]=max(f[j],f[j+(arr[i].a-arr[i].b)]+arr[i].a);
    // _rep(i,0,n) printf("f[%lld] = %lld\n",i,f[i]);
    int res=0;
    _rep(i,0,n) res=max(res,f[i]+i);
    ans+=res;
    write(ans);
    return 0;
}

WA*2,how?(已开 long long)

2025/7/19 22:10
加载中...