Codeforces 831D Office Keys 贪心枚举

暴力2e6复杂度
先排序 左边人尽量拿左边钥匙 右边人尽量拿右边的 用n个人长度滑窗钥匙长度为k的区间 所有方案枚举
比如2人 4把钥匙
1-2 2-3 3-4 3种方案
O(kn)=20001000=2e6

ll a[maxn],b[maxn],vis[maxn];
ll n,k,p,maxx=0;

int main()
{
    
    cin>>n>>k>>p;
    rep(i,1,n){
    	cin>>a[i]; 
	}
    rep(i,1,k){
    	cin>>b[i];
	}
	sort(a+1,a+n+1);
	sort(b+1,b+k+1);
	ll t=0,ans=inf;
	for(int j=1;j<=k-n+1;j++){	//左边人尽量拿左边的 右边人尽量拿右边的 总方案数 
		t=0;
		for(int i=1;i<=n;i++){
			t=max(t,abs(a[i]-b[i+j-1])+abs(b[i+j-1]-p)); 
		}
		ans=min(t,ans);//每种方案最小值 
	}
	cout<

Codeforces 831D Office Keys 贪心枚举_第1张图片
dp 二分都能做

你可能感兴趣的:(二分,动态规划dp,暴力枚举)