拔河 24蓝桥省b

拔河 24蓝桥省b_第1张图片

#include
using namespace std;
#define int long long 
#define endl '\n'
signed main()
{
    ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    int n; 
    cin>>n;
    vectora(n+1);
    multisets;
    for(int i=1;i<=n;i++) 
    cin>>a[i],a[i]=a[i-1]+a[i];

    for(int i=1;i<=n;i++)//插入所sum[l2,r2]可能的值
    for(int j=i;j<=n;j++)
    s.insert(a[j]-a[i-1]);
    
    int ans=1e18;
    for(int i=1;i::lower_bound()利用红黑树的有序性,通过二叉树的搜索遍历找到目标元素的,使用前者会导致效率低很多
            if(p!=s.end()) 
            ans=min(ans,abs(*p-sum));
            if(p!=s.begin()) 
            ans=min(ans,abs(*prev(p)-sum));
        }
    }
    cout<

 拔河 24蓝桥省b_第2张图片

 

#枚举 #multiset #s.lower_bound()

 25/2/18

你可能感兴趣的:(算法)