• Single-use Stones Codeforces


    https://codeforces.com/contest/965/problem/D

    太神仙了。。。比E难啊。。

    首先呢,根据题意,可以很容易的建出一个最大流模型

    就是每个位置建一条边,容量限制为该位置石头数,向所有它能直接跳到的位置的边的起点连边(容量无限)

    (当然起点和对岸也要分别建一条边,容量无限,并按一样的规则与其他的地方间连边)

    那么答案就是从起点到对岸的最大流

    显然不能直接跑。。。

    而最大流=最小割,显然如果是最小割,那么不能包括任何容量无限的边,那么只能选由位置产生的边

    经过观察分析,如果是一个割,那么一定包含[a,b]区间内的所有位置产生的边,且满足b-a+1<=l

    那么枚举每个长为l的区间即可。。。

    代码很短

     1 #include<cstdio>
     2 #include<algorithm>
     3 #include<cstring>
     4 #include<vector>
     5 using namespace std;
     6 #define fi first
     7 #define se second
     8 #define mp make_pair
     9 #define pb push_back
    10 typedef long long ll;
    11 typedef unsigned long long ull;
    12 typedef pair<int,int> pii;
    13 int w,l,a[100100],ans=0x3f3f3f3f;
    14 int main()
    15 {
    16     int i;
    17     scanf("%d%d",&w,&l);
    18     for(i=1;i<w;i++)    scanf("%d",&a[i]),a[i]+=a[i-1];
    19     for(i=1;i+l-1<w;i++)    ans=min(ans,a[i+l-1]-a[i-1]);
    20     printf("%d",ans);
    21     return 0;
    22 }
  • 相关阅读:
    全排列 next_permutation()函数
    hdu1247
    hdu3518
    pku2774 求最长公共子串
    hdu3460 Ancient Printer
    pku2001
    pku 3261
    NOI.AC#2007light【根号分治】
    CF1370F2The Hidden Pair(Hard Version)【交互题,二分】
    P3335[ZJOI2013]蚂蚁寻路【dp】
  • 原文地址:https://www.cnblogs.com/hehe54321/p/9394723.html
Copyright © 2020-2023  润新知