首页 > 其他分享 >YACS 2022年9月月赛 甲组 T2 区间交集(三) 题解

YACS 2022年9月月赛 甲组 T2 区间交集(三) 题解

时间:2022-10-11 21:00:48浏览次数:49  
标签:YACS cnt int 题解 甲组 num && 500005 check

所以说,我又来贴标程了。

这题有很多做法,线段树,优先队列$and$删除等等,

这里分享一种码量极少的二分做法,主要思路:二分+动归

#include <bits/stdc++.h>
using namespace std;
int n, m, a[500005], cnt[2][500005];
long long num[2][500005];
int check(int x)
{
    num[0][1] = cnt[0][1] = 0;
    num[1][1] = a[1] + x, cnt[1][1] = 1;
    for (int i = 2; i <= n; ++i)
    {
        num[0][i] = (num[0][i - 1] > num[1][i - 1] ? num[0][i - 1] : num[1][i - 1]);
        cnt[0][i] = (num[0][i - 1] > num[1][i - 1] || num[0][i - 1] == num[1][i - 1] && cnt[0][i - 1] < cnt[1][i - 1] ? cnt[0][i - 1] : cnt[1][i - 1]);
        num[1][i] = a[i] + (num[0][i - 1] + x > num[1][i - 1] ? num[0][i - 1] + x : num[1][i - 1]);
        cnt[1][i] = (num[0][i - 1] + x > num[1][i - 1] || num[0][i - 1] + x == num[1][i - 1] && cnt[0][i - 1] + 1 < cnt[1][i - 1] ? cnt[0][i - 1] + 1 : cnt[1][i - 1]);
    }
    return (num[0][n] > num[1][n] || (num[0][n] == num[1][n] && cnt[0][n] < cnt[1][n]) ? cnt[0][n] : cnt[1][n]);
}
int main()
{
    n = 1;
    while (cin >> a[n]) ++ n;
    n -= 2;
    m = a[n + 1];
    int l = -1e9, r = 1e9;
    while (r - l > 1)
    {
        int mid = (l + r) / 2;
        int x = check(mid);
        if (x <= m) l = mid;
        else r = mid;
    }
    if (l >= 0)
    {
        check(0);
        cout << max(num[0][n], num[1][n]) << endl;
    }
    else
    {
        check(l);
        cout << max(num[0][n], num[1][n]) - 1LL * m * l << endl;
    }
    return 0;
}

 

标签:YACS,cnt,int,题解,甲组,num,&&,500005,check
From: https://www.cnblogs.com/stdios/p/16782542.html

相关文章

  • CF1329A Dreamoon Likes Coloring 题解
    提供一个简短的题解:首先如果所有长度加起来还不到\(n\)直接无解。可以直接贪心,把第\(i\)条线段的右端点放在\(n-i+1\)这个位置,就可以最省长度(只占一个点)而且不会遗......
  • YACS 2022年9月月赛 甲组 T1 游戏体验 题解
    目前还没有时间写题解,疯狂复习$CSP$复赛中,这题是个线段树(自己可以探究一下,是动态的)先贴个标程,需要的,请#include<bits/stdc++.h>usingnamespacestd;intn,m,a[10000......
  • UVa 11300 Spreading the Wealth 题解
    非常好的一道数学题。原题链接(洛谷)原题链接(UVa)题目分析(参考刘汝佳《算法竞赛入门经典\(\cdot\)训练指南》)本身看起来很复杂。不要急,我们慢慢分析。首先,每个人最终......
  • CF1237F 题解
    传送门题意给你一个\(n\timesm\)的棋盘,上面已经放了\(k\)个\(1\times2\)的骨牌。对于一个骨牌的每个格子,不能有其他骨牌的格子与它在同一行、同一列。你可以......
  • 在实际开发中遇到的各种问题解决方案
    目录第一问:使用axios异步请求完成数据导出(Excel)(基于hutool工具包)(1.1)编写后台接口,获取到response对象以及前端传来的数据,使用@RequestBody获取到需要进行导出的数据id(1.1.1)......
  • [BalticOI 2010] Mines 题解
    你谷linklojlink提供一种时间复杂度正确的高妙做法。首先题目有一条隐藏条件是保证\(n\not\equiv2\pmod3\)或\(m\not\equiv2\pmod3\),需要通过观察数据得到。我们......
  • YACS2022年9月乙组
    T1:区间交集(二)这种统计有多少对满足题意,首先想下暴力\(O(n^2)\)复杂度正解:判断区间是否有交集,其实比较麻烦,怎么简单判断?如果已知左端点的大小顺序,那么判断是否有交集......
  • 2022 ICPC 网络赛(II) H Fast Fourier Transform题解
    简要题意给你一棵树,你可以选若干节点为关键点,定义一个选点方案的价值为:所有路径上没有关键点的点对的距离之和。求所有选点方案的价值之和。题解一开始和队友都读错题了......
  • SCOI 萌萌哒 题解
    下决心写一道题写一篇题解。题目链接考虑暴力,直接并查集合并相同的数,和今天T1一样。考虑优化这个暴力。因为今天T1题解说要倍增,所以考虑一个长的跟ST表一样的倍增。具......
  • 洛谷 P3488 [POI2009]LYZ-Ice Skates 题解
    错解每次跑二分图匹配,时间复杂度显然爆炸。时间复杂度:我被杀手皇后摸过了正解引入Hall定理:设二分图中\(G=<V_1,V_2,E>,|V_1|\le|V_2|\),则G中存在\(V_1\)到......