首页 > 其他分享 >洛谷 P1204 [USACO1.2] 挤牛奶Milking Cows

洛谷 P1204 [USACO1.2] 挤牛奶Milking Cows

时间:2024-04-20 13:22:51浏览次数:24  
标签:USACO1.2 洛谷 int start while maxn 端点 Milking last

题意:给定n个区间,左端点和右端点表示工作开始时间和结束时间。求最长一直有人在工作的时间和无人工作的时间。

思路:想到了并查集,还有差分树状数组,最后选择差分数组。左端点加,右端点减,然后一次遍历即可。

总结:习惯性的在右端点+1的位置减少了1,但是不适用于这个题目的逻辑。 因为在右端点+1的位置修改数值的话,结束的时间会变晚。

void solve(){
    int n;
    cin >> n;

    int maxn = int(1e6);
    vector<int> b(maxn + 10);

    int start = maxn;
    int last = 0;
    while (n -- ){
        int l, r;
        cin >> l >> r;
        start = min(start, l);
        last = max(last, r);
        b[l] ++;
        b[r] --;
    }

    for (int i = 1; i <= last; ++i){
        b[i] += b[i - 1];
    }

    array<int, 2> ans{};

    int i = start;
    while (i < last){
        int j = i;
        bool state = bool(b[i]);
        while (j <= last && bool(b[j]) == state){
            j ++;
        }
        ans[state] = max(ans[state], j - i);
        i = j;
    }

    cout << ans[1] << ' ' << ans[0] << '\n';
}

标签:USACO1.2,洛谷,int,start,while,maxn,端点,Milking,last
From: https://www.cnblogs.com/yxcblogs/p/18147609

相关文章

  • [题解][洛谷P1412] 经营与开发
    题目描述给定n,k,c,w,然后输入n组数据,数据分为两种:1ai:可以选择获得aiw的价值,但w会变成w(1-0.01*k)2bi:可以选择损失biw的价值,但w会变成w(1+0.01*c)求可获得的最大价值是多少。题解看到这个题,我的第一思路是求后缀和,然后让新得到的系数乘后缀和判断是否进行操作。但问题在于,对于......
  • 【LGR-182-Div.4】洛谷入门赛 #22
    题源:【LGR-182-Div.4】洛谷入门赛#22目录A疯狂大减价BZngivaeL的中考C游乐场D吃苹果E天上的气球F神秘排列G道法考试H非众数A疯狂大减价分析:两张票的先后顺序枚举一下,求出最小值。#include<bits/stdc++.h>usingnamespacestd;constintN=1e3+10;intn,k,ans......
  • 洛谷题单指南-动态规划1-P1077 [NOIP2012 普及组] 摆花
    原题链接:https://www.luogu.com.cn/problem/P1077题意解读:n种花选m个的选法,每种花数量为ai。解题思路:设dp[i][j]表示前i种花选j个的选法对于第i种花,可以选0,1,2...min(ai,j)个则有递推式:dp[i][j]=∑dp[i-1][j-k],k取0,1,2...min(ai,j)初始化dp[0][0]=1100分代码:#incl......
  • 洛谷 p3372 线段树
    更改了线段树实现的方式,将lazy值作为单独的节点存在,降低存储压力structNode{longlongsum;Node():sum(0ll){}Nodeoperator+(constNode&other){Noderes=*this;res.sum+=other.sum;returnres;};voidapplyLazy(......
  • 洛谷题单指南-动态规划1-P1049 [NOIP2001 普及组] 装箱问题
    原题链接:https://www.luogu.com.cn/problem/P1049题意解读:装尽可能多的物品,使得总体积越大越好,即剩余空间最小,还是一个01背包问题,物品的体积就是其价值。解题思路:01背包模版题,物品体积、价值相同,直接采用一维dp。100分代码:#include<bits/stdc++.h>usingnamespacestd;co......
  • 「杂题乱刷」洛谷 P2398
    典题。发现问题可以变为枚举\(i\),求出两两数\(gcd\)为\(i\)的个数,但是这样还是\(O(n^2)\)的。然后可以将两边同时除以\(i\),原式变为暴力筛复杂度是\(O(n\log_2(n))\)的,加个前缀和时间复杂度为\(O(n)\)。点击查看代码/*Tips:你数组开小了吗?你MLE了吗?你觉得是......
  • 洛谷题单指南-动态规划1-P1115 最大子段和
    原题链接:https://www.luogu.com.cn/problem/P1115题意解读:计算最大字段和,典型dp问题。解题思路:设a[]表示所有整数,f[i]表示以第i个数结束的最大字段和当f[i-1]>=0时,f[i]=f[i-1]+a[i]否则,f[i]=a[i]因此,递归式为f[i]=max(a[i],f[i-1]+a[i])注意整数可能为负,ans初始......
  • 洛谷题单指南-动态规划1-P1434 [SHOI2002] 滑雪
    原题链接:https://www.luogu.com.cn/problem/P1434题意解读:计算能滑行的最长距离。解题思路:设dp(i,j)表示从i,j可以滑行的最大距离对于4个方向i,j可以到达的点,ni,nj,如果可以滑过去(ni,ni所在点高度更低)则dp(i,j)=max(dp(i,j),1+dp(ni,nj))为了便于搜索4个方向的各条路径,......
  • 洛谷题单指南-动态规划1-P2196 [NOIP1996 提高组] 挖地雷
    原题链接:https://www.luogu.com.cn/problem/P2196题意解读:求一条路径,使得所有点地雷数之和最大。解题思路:1、DFS先建图,再从1~n点分别进行一次DFS,记录过程中地雷总数最大的,并且同时记录遍历的顺序。数据量不大,直接就可以过。100分代码:#include<bits/stdc++.h>usingnamespa......
  • [题解][洛谷P1174] 打砖块
    题目分析n行m列的砖块,起始有k发子弹。每次可以用一发子弹,打碎某一列当前处于这一列最下面的那块砖,并且得到相应的得分。某些砖块打碎以后会获得一个砖块。求最大得分。题解可以看出是一道动态规划题。关键在于如何设计状态。先考虑砖块打碎不会得到子弹的情况:这个时候可以......