[省选联考 2021 A/B 卷] 卡牌游戏
垃圾福建垫底选手来看看这题。
大家怎么都写带 \(log\) 的。
我来说一个线性做法好了。
那么我们考虑枚举 \(k\) 作为翻转完的最小值。
那么构造出一个满足条件的操作,我们在 \(a_i\) 中查询一个最大的位置使 \(a_i < k\) ,那么 \(a_1\) 到 \(a_i\) 都要进行翻转,且 \(b_1 到 b_i > k\),那么这样做的次数是 \(i\) 或者 \(i - 1\)(考虑\(k\)是\(b\)且对应的\(a\)在需要翻转的区间里)的。
那么考虑对这个 \(k\) 求出一个最小的最大值\(z\),同样的我们在\(a_i\)中查询一个最小的位置使\(a_i > z\),那么\(a_i\) 到 \(a_n\)都要进行翻转,且 \(b_i\) 到 \(b_n > k\),且 \(b_i\) 到 \(b_n < z\) ,那么这样做的次数是 \(n - i + 1\) 或者 \(n - i\) (考虑 \(z\) 是 \(b\) 且对应的 \(a\) 在需要翻转的区间里)的,两边次数加起来不超过 \(m\) 。
我们考虑对这几个条件进行分析一下,首先 \(i\) 对于 \(z\) 减小是单调的,由于 \(min\) 只能下降不能上升, \(max\) 只能上升不能下降,那么对于\(z\)下降来说,他的条件会越来越苛刻。
又因为我们从小到大枚举 \(k\) ,用来满足 \(k\) 的次数会单调不降,那么我们发现,对于一个 \(z\) ,他的所有条件即 \(b_i\) 到 \(b_n > k\),且 \(b_i\) 到 \(b_n < z\) ,次数和小于 \(m\) ,在 \(k\) 上升都具有单调性,感性分析一下,在 \(k\) 上升时, \(z\) 具有单调不降的性质。
那么我们只要对 \(k = 1\) 一个 \(log\) 求出对应的 \(z\) ,再进行双指针,就可以做到 \(O(n)\) 了。
upd:发现自己的这个做法挺难写的,应该考虑计算的时候,也扩展到整个序列就好做了。
[省选联考 2021 A/B 卷] 卡牌游戏
#include <bits/stdc++.h>
using namespace std;
struct hehe{
long long a, num;
int op;
bool operator < (hehe b) const
{
return a < b.a;
}
}a[2000001];
bool used[2000001];
int main()
{
// freopen("card3.in", "r", stdin);
int n, k;
cin >> n >> k;
for(int i = 1; i <= n; i++)
{
scanf("%d", &a[i].a);
a[i].num = i;
a[i].op = 1;
}
for(int i = 1; i <= n; i++)
{
scanf("%d", &a[n + i].a);
a[i + n].num = i;
a[i].op = 1;
}
sort(a + 1, a + n * 2 + 1);
int l = 0, r = n * 2 + 1, now = 0;
while(!used[a[l + 1].num] && now + a[l + 1].op <= k) now += a[l + 1].op, used[a[l + 1].num] = 1, l++;
while(!used[a[r - 1].num] && now + a[r - 1].op <= k) now += a[r - 1].op, used[a[r - 1].num] = 1, r--;
long long ans = 1000000000000;
while(l >= 0)
{
ans = min(a[r - 1].a - a[l + 1].a, ans);
used[a[l].num] = 0;
now -= a[l].op;
l--;
while(!used[a[r - 1].num] && now + a[r - 1].op <= k) now += a[r - 1].op, used[a[r - 1].num] = 1, r--;
}
cout << ans << endl;
}
[省选联考 2021 A/B 卷] 卡牌游戏的更多相关文章
- 洛谷 P7516 - [省选联考 2021 A/B 卷] 图函数(Floyd)
洛谷题面传送门 一道需要发现一些简单的性质的中档题(不过可能这道题放在省选 D1T3 中偏简单了?) u1s1 现在已经是 \(1\text{s}\) \(10^9\) 的时代了吗?落伍了落伍了/ ...
- [省选联考 2021 A/B 卷] 图函数
考虑到一件事情首先\(u -> u\)是可行的. 所以其实对于\(f(u,G')\) 只要考虑\([1,u]\)的点. 那么考虑其条件等价于\(u -> i\) 和 \(i -> u ...
- [省选联考 2021 A/B 卷] 宝石
大概是一眼看出来是这个给定序列在树上序列上按顺序跑最大匹配. 然后考虑维护向上和向下的链的值. 大概的做法是用倍增维护,考虑\(f_{u,i}\)是\(c_u\)在序列里的位置向后匹配\(2^i\)位 ...
- [省选联考 2021 A 卷] 矩阵游戏
很巧妙的一个构造. 我是没有想到的. 自己的思维能力可能还是不足. 考虑先满足\(b\)对\(a\)的限制,把\(a\)的第一行和第一列设\(0\),推出这个\(a\). 接下来考虑对这个\(a\), ...
- 题解 P6622 [省选联考 2020 A/B 卷] 信号传递
洛谷 P6622 [省选联考 2020 A/B 卷] 信号传递 题解 某次模拟赛的T2,考场上懒得想正解 (其实是不会QAQ), 打了个暴力就骗了\(30pts\) 就火速溜了,参考了一下某位强者的题 ...
- luoguP6622 [省选联考 2020 A/B 卷] 信号传递(状压dp)
luoguP6622 [省选联考 2020 A/B 卷] 信号传递(状压dp) Luogu 题外话: 我可能是傻逼, 但不管我是不是傻逼, 我永远单挑出题人. 题解时间 看数据范围可以确定状压dp. ...
- luoguP6619 [省选联考 2020 A/B 卷]冰火战士(线段树,二分)
luoguP6619 [省选联考 2020 A/B 卷]冰火战士(线段树,二分) Luogu 题外话1: LN四个人切D1T2却只有三个人切D1T1 很神必 我是傻逼. 题外话2: 1e6的数据直接i ...
- 洛谷 P7520 - [省选联考 2021 A 卷] 支配(支配树)
洛谷题面传送门 真·支配树不 sb 的题. 首先题面已经疯狂暗示咱们建出支配树对吧,那咱就老老实实建呗.由于这题数据范围允许 \(n^2\) 算法通过,因此可以考虑 \(\mathcal O(n^2 ...
- 洛谷 P7515 - [省选联考 2021 A 卷] 矩阵游戏(差分约束)
题面传送门 emmm--怎么评价这个题呢,赛后学完差分约束之后看题解感觉没那么 dl,可是现场为啥就因为种种原因想不到呢?显然是 wtcl( 先不考虑"非负"及" \(\ ...
随机推荐
- 自定义Push/Pop和Present/Dismiss转场
项目概述 iOS中最常见的动画无疑是Push和Pop的转场动画了,其次是Present和Dismiss的转场动画. 如果我们想自定义这些转场动画,苹果其实提供了相关的API,在自定义转场之前,我们需要 ...
- 三分钟极速体验:Java版人脸检测
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- VS Code Remote SSH设置
本文翻译自:5 Steps: Setup VS Code for Remote Development via SSH from Windows to Linux system 5个步骤:设置VS代码 ...
- [软工顶级理解组] 团队规划和任务拆解(Beta)
目录 需求再分析 功能增减 管理改进 任务分解 人员管理 需求再分析 在Alpha阶段,我们的产品得到了用户的广泛好评,但是还是存在一些问题. 登录不稳定,登录速度慢等问题:这是北航VPN本身的不稳定 ...
- Scrum Meeting 0423
零.说明 日期:2021-4-23 任务:简要汇报两日内已完成任务,计划后两日完成任务 一.进度情况 组员 负责 两日内已完成的任务 后两日计划完成的任务 qsy PM&前端 完成引导页UI# ...
- oo第一次博客-三次表达式求导的总结与反思
一.问题回顾与基本设计思路 三次作业依次是多项式表达式求导,多项式.三角函数混合求导,基于三角函数和多项式的嵌套表达式求导. 第一次作业想法很简单,根据指导书,我们可以发现表达式是由各个项与项之间的运 ...
- 一张图彻底搞懂Spring循环依赖
1 什么是循环依赖? 如下图所示: BeanA类依赖了BeanB类,同时BeanB类又依赖了BeanA类.这种依赖关系形成了一个闭环,我们把这种依赖关系就称之为循环依赖.同理,再如下图的情况: 上图中 ...
- linux下文件特殊权限设置位S和沾附位T(转载)
今天在创建文件的时候,发现了文件权限末尾有个T,之前没留意过,后来又用c创建(open)了两个文件来查看,在我没有指定权限(省略open的第三个参数)的时候,有时还会出现S,虽然还没弄懂什么时候会出现 ...
- 开发属于自己的包,并上传到npm上
1.DIY开发包 1.1符合标准的包结构 一个规范的包,它的组成结构,必须符合以下3点要求: 包必须以单独的目录而存在 包的顶级目录下,必须包含package.json这个包管理文件 package. ...
- Allure 生成测试报表
Allure官方文档参考地址:https://docs.qameta.io/allure/#_testng 1.在maven中添加依赖并进行相应的配置: <!-- 实现版本控制 --> & ...