首页 > 其他分享 >USACO 2019 US Open Contest, Silver

USACO 2019 US Open Contest, Silver

时间:2023-01-03 21:46:41浏览次数:48  
标签:cnt 奶牛 Contest int US 2019 now

USACO 2019 US Open Contest, Silver

T1.Sleepy Cow Herding

这道题是个结论题

  1. 我们先找出最大连续子段,如果全部连续,则不用计算
  2. 求最大值,就尽量把所有的空位都踩一遍,我们每次操作把第 \(n\) 号奶牛往第 \(1\) 头奶牛和第 \(n-1\) 头奶牛之间或者把第一头奶牛往第 \(2\) 头奶牛和最后一头奶牛之间移动,最大的空隙再减去 \(n - 2\) 就好了,因为向两段之间空隙只间移动的时候,那两端是不用挪动的。
  3. 求最小值,首先我们知道所有奶牛连续到一起,长度一定为 \(n\) ,所以我们只需要找一段最开始长度为 \(n\) ,且奶牛最多的线段,然后再把其他端点上面的奶牛放在里面就可以。然后答案就为 \(n\) 减去包含的最多的奶牛数。
#include <bits/stdc++.h>
using namespace std;
const int N = 2e5 + 10;
int n, a[N];
int main()
{
    freopen("file herding.in", "r", stdin);
    freopen("file herding.out", "w", stdout);
    cin >> n;
    for (int i = 0; i < n; i++)
        cin >> a[i];
    sort(a, a + n);
    int cnt = 0, now = 1;
    for (int i = 1; i < n; i++)
    {
        if (a[i] == a[i - 1] + 1) //说明连续
            now++;
        else
            now = 1;
        cnt = max(cnt, now); //求最长连续段
    }
    if (cnt == n) //全部连续,不用计算
    {
        cout << 0 << endl << 0;
        return 0;
    }
    int ans = 0x3fffffff;
    int l = 0, r = 0;
    while (l < n)
    {
        while (r < n && a[r] <= a[l] + n - 1)
            r++;
        ans = min(ans, n - (r - l)); //找连续空位区间
        l++;
    }
    if (cnt == n - 1) // 如果有n-1头牛连续,那么中间就不会有空位
    {
        ans = 2;
        if (a[0] == a[1] - 2 || a[n - 1] == a[n - 2] + 2) //直接让某一位跳到他们之间即可
            ans = 1;
    }
    cout << ans << endl;
    ans = max(a[n - 2] - a[0], a[n - 1] - a[1]) - n + 2;
    cout << ans << endl;
    return 0;
}

标签:cnt,奶牛,Contest,int,US,2019,now
From: https://www.cnblogs.com/ljfyyds/p/17023444.html

相关文章

  • [Leetcode Weekly Contest]326
    链接:LeetCode[Leetcode]2520.统计能整除数字的位数给你一个整数num,返回num中能整除num的数位的数目。如果满足nums%val==0,则认为整数val可以整除nums......
  • NC24370 [USACO 2012 Dec S]Milk Routing
    题目链接题目题目描述FarmerJohn'sfarmhasanoutdatednetworkofMpipes(1<=M<=500)forpumpingmilkfromthebarntohismilkstoragetank.Hewants......
  • NC24755 [USACO 2010 Dec S]Apple Delivery
    题目链接题目题目描述Bessiehastwocrispredapplestodelivertotwoofherfriendsintheherd.Ofcourse,shetravelstheC(1<=C<=200,000)cowpaths......
  • NC24858 [USACO 2009 Nov S]Job Hunt
    题目链接题目题目描述Bessieisrunningoutofmoneyandissearchingforjobs.FarmerJohnknowsthisandwantsthecowstotravelaroundsohehasimposeda......
  • [clickhouse]同步MySQL
    前言clickhouse的查询速度非常快,而且兼容大部分MySQL的sql语法,因此一般将clickhouse作为MySQL的读库。本文提供两种clickhouse同步MySQL的方式clickhouse版本:21.2.4.6......
  • 打开sublime text3 弹出错误提示 Error trying to parse settings: Expected value in
    问题:打开sublimetext3弹出错误提示Errortryingtoparsesettings:ExpectedvalueinPackages\UserJSONsublime-settings:13:17原因:一般是配置文件出现语法错误,可根......
  • Rust闭包理解
    前言这篇文章的目的是让读者最快最直观的了解什么是闭包,Rust中的三种闭包之间有什么区别。为了达到这个目的——即降低复杂性,本篇文章的用词可能不够严谨,见谅。看本篇文......
  • 通过Veritas Usage Insights下载客户注册密钥
    从NetBackup8.1.2起,在安装软件时必须要有客户注册密钥,否则无法进行安装部署,所以需要先到VeritasUsageInsights下载注册密钥文件(注意:此密钥文件并非许可证)。试用购买时......
  • FetchError: request to https://registry.npmjs.org/swiper failed, reason: connect
    安装swiper插件时,报错,经过下边方法解决后,重新安装swiper,成功! FetchError:requesttohttps://registry.npmjs.org/swiperfailed,reason:connectECONNREFUSED127.0......
  • 【git push操作后如何撤销】
    方法一:revert操作:这种撤销方法会让对应撤销的代码版本移除,不过localhistory里还是有历史记录的(个人建议第二种方法)步骤一:测试push代码:步骤二:项目根目录打开git 窗口......