zoukankan      html  css  js  c++  java
  • UOJ #206. 【APIO2016】Gap

    Description

    Solution

    第一个子任务,直接从 ((a[i],a[j])) 推出 ((a[i+1],a[j-1])) 就行了,只需要 (frac{N+1}{2})
    第二个子任务,首先答案至少是 (lceilfrac{max-min}{N-1} ceil)
    然后我们就只关心长度大于 (ans) 的区间了,每一次扩展下去,就可以遍历到所有相邻点,更新一下答案
    每一个点刚好贡献两次,加上刚开始找 (max)(min) 的次数刚好是 (3*N)

    #include "gap.h"
    #include<bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    const int N=1e5+10;
    ll a[N],inf=1e18;
    long long findGap(int T, int n)
    {
    	if(T==1){
    		ll ans=0;
    		a[0]=-1;a[n+1]=inf+10;
    		for(int l=1,r=n;l<=r;l++,r--)
    			MinMax(a[l-1]+1,a[r+1]-1,&a[l],&a[r]);
    		for(int i=2;i<=n;i++)ans=max(ans,a[i]-a[i-1]);
    		return ans;
    	}
    	else{
    		ll l=0,r=inf,last=-1;
    		MinMax(l,r,&l,&r);
    		ll ans=(r-l+n-2)/(n-1);
    		for(ll i=l;i<=r;){
    			ll s=i,t=i+ans;
    			MinMax(s,t,&s,&t);i+=ans+1;
    			if(last!=-1 && s!=-1)ans=max(ans,s-last);
    			if(t!=-1)last=t;
    		}
    		return ans;
    	}
    }
    
    
  • 相关阅读:
    C#博客记录二
    C#博客记录一
    label语句
    css选择器
    关于访问对象属性的小问题
    特殊符号unicode编码
    不换行
    正则表达式中的exec()方法
    正则表达式中两种定义方式中的反斜杠
    js删除对象数组
  • 原文地址:https://www.cnblogs.com/Yuzao/p/8893356.html
Copyright © 2011-2022 走看看