建议加强数据
  • 板块P1800 software
  • 楼主elonzhang
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/10/17 13:02
  • 上次更新2024/10/17 17:15:23
查看原帖
建议加强数据
791903
elonzhang楼主2024/10/17 13:02

我代码没过自测却全对了

#include <bits/stdc++.h>
using namespace std;
#define int long long
#define double long double
#define re register
#define endl '\n'
#define inf 0x7f7f7f7f7f7f7f7f
const int N=101;
int n,m,d1[N],d2[N],cha[N],id[N];

bool c(int x){
	int s1=0,s2=0;
	for(int j = 1;j<=n;++j){
		if(s1>=m&&s2>=m) return true;
		int i=id[j],st=x,mn1=min(m-s1,st/d1[i]),mn2=min(m-s2,st/d2[i]),f=(mn1!=mn2?mn1>mn2:s1<s2);
		if(f){
			int mn=min(m-s1,st/d1[i]);
			st-=mn*d1[i],s1+=mn;
			mn=min(m-s2,st/d2[i]);
			st-=mn*d2[i],s2+=mn;
		}else{
			int mn=min(m-s2,st/d2[i]);
			st-=mn*d2[i],s2+=mn;
			mn=min(m-s1,st/d1[i]);
			st-=mn*d1[i],s1+=mn;
		}
	}
	return s1>=m&&s2>=m-1;
}
bool cmp(int x,int y){return (cha[x]!=cha[y]?cha[x]>cha[y]:d1[x]+d2[y]<d1[y]+d2[y]);}

signed main(){
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
//  freopen("soft.in","r",stdin);
//  freopen("soft.out","w",stdout);
//↑以上为初始化 ↑
//------------------------------
	cin >> n >> m;
	for(int i = 1;i<=n;++i) cin >> d1[i] >> d2[i],id[i]=i,cha[i]=abs(d1[i]-d2[i]);
	sort(id+1,id+n+1,cmp);
	int l=0,r=1e4+1,mid;
	while(l<r){
		mid=(l+r)>>1;
		if(c(mid)) r=mid;
		else l=mid+1;
	}
	cout << r << endl;
	return 0;
}

hack,答案用朋友代码跑出来的

2024/10/17 13:02
加载中...