CF1413C Perform Easily(two pointers)
解析
巧夺天工
可以说是把two pointers
玩明白了
把所有的可能减出来的结果升序排列一下
然后一个选取区间合法当且仅当这个区间含有1-n所有数的至少一个可能的差
然后就可以two pointers
了
#include<bits/stdc++.h>
const int N=2e5+100;
const int mod=1e9+7;
#define ll long long
using namespace std;
inline ll read() {ll x(0),f(1);char c=getchar();while(!isdigit(c)) {if(c=='-')f=-1;c=getchar();}while(isdigit(c)) {x=(x<<1)+(x<<3)+c-'0';c=getchar();}return x*f;
}int n,m;
int a[8],b[N],tot;
struct node {int val,id;
} p[N*6];
bool cmp(node a,node b){return a.val<b.val;
}
int num[N],now;
inline void add(int pl){now+=++num[p[pl].id]==1;
}
int main() {for(int i=1; i<=6; i++) a[i]=read();sort(a+1,a+1+6);n=read();for(int i=1; i<=n; i++) b[i]=read();for(int i=1; i<=n; i++) {for(int j=1; j<=6; j++) {p[++tot]=(node){b[i]-a[j],i};}}sort(p+1,p+1+tot,cmp);int l=1,r=0,ans=2e9;while(1){while(now!=n&&r<=tot){now+=++num[p[++r].id]==1;}if(r>tot) break;ans=min(ans,p[r].val-p[l].val);now-=--num[p[l++].id]==0;}printf("%d\n",ans);
}
/*
1
281239
*/
CF1413C Perform Easily(two pointers)相关推荐
- CodeForces - 1413C Perform Easily(双指针)
题意: 先给出一个长度为6的数组aaa ,再给出一个长度为nnn的数组 bbb ,求bbb 数组的每个元素减去aaa 数组中任意一个元素后,最后的数组bbb 中最大值与最小值之差最小是多少? 题解: ...
- Chapter 5. The Stack
Chapter 5. The Stack Introduction A Real-World Analogy Stacks in x86 and x86-64 Architectures What I ...
- Type Casting
Type Casting C++ : Documents : C++ Language Tutorial : Type Casting Search: user pass [register] ...
- 无锁CAS及无锁队列实现
CAS ⽐较并交换(compare and swap, CAS),是原⼦操作的⼀种,可⽤于在多线程编程中实现不被打断的数据 交换操作,从⽽避免多线程同时改写某⼀数据时由于执⾏顺序不确定性以及中断的不可 ...
- Generalized Function Pointers
原文来自以下链接,自己查询到此,无时间翻译亦怕翻译出错,故将原文贴于此,以备自己回顾. written by Herb Sutter original site: http://collaborati ...
- C语言第三章Functions, Arrays Pointers
C语言第三章Functions, Arrays & Pointers Functions Functions in C Function Parameters Variable Scope(作 ...
- nodejs报错解决:Error: Can only perform operation while paused. - undefined
下午在用nodejs进行调试时遇到报错: debug> n Thrown: Error: Can only perform operation while paused. - undefined ...
- Populating Next Right Pointers in Each Node II
Follow up for problem "Populating Next Right Pointers in Each Node". What if the given tre ...
- 常量和指针(Pointers and Constants)
常量和指针(Pointers and Constants) --const 修饰的指针解惑 一般遇到用const修饰的常量涉及到指针就会比较麻烦,容易把头搞晕,有个简单的技巧就是从右向左看,下面我举例 ...
最新文章
- 有道翻译蛋的进阶:丁磊为其加冕称“王”
- 类中的关键字public、protected、private究竟是什么意思?
- 题目3:文本文件单词的检索与计数(实现代码)
- 基础 | numpy ndarray 之内功心法,理解高维操作!
- c++ 获得linux进程内存大小,C/C++获取进程常驻内存大小(get the process resident set size )...
- 终结者:终止线程循环的方式
- 只要学会这个PDF压缩方法,压缩PDF不再是难题
- java 公众号文章爬取_50行代码爬取微信公众号所有文章
- python列表可以放多少个字符串_列表中可以放多少个字符串( )_学小易找答案
- Linux之VNC远程桌面安装和使用
- hexo+yilia添加百度统计和Google统计
- 【Python爬虫】:使用高性能异步多进程爬虫获取豆瓣电影Top250
- 本周开课 | 10年运营专家亲授,掌握9类运营的核心技能,强化运营实力
- Hedge fund Two Sigma hires Alfred Spector as Chief Technology Officer
- 【前端】页面适配?移动端适配屏幕的各种解决方案!
- 彻底掌握 Javascript(八)正则表达式【讲师辅导】-曾亮-专题视频课程
- python怎么画人像_教你如何用Python画出心目中的自己
- cost的导函数_几种常见函数的导数
- 二进制推广者电子计算机,31-戏说计算机与二进制那点事儿
- 最新的SpringCloud(H版Alibaba)技术(11-12初级部分,网关【Gateway】)
热门文章
- 图像还可以这样玩!如何用波的算法处理图像
- 弹性式分布数据集RDD——Pyspark基础 (二)
- java环境怎样搭建_如何学习JAVA?怎么搭建JAVA环境?怎么安装JDK?
- php tp3 操作绑定到类,操作绑定到类 · ThinkPHP3.2.3完全开发手册 · 看云
- android 活动切换动画,android – 在使用ChangeImageTransform共享元素转换的两个活动之间动画化ImageView...
- php 4位数字不足补零,php实现数字不足补0的方法
- Git的使用(快速入门)
- leetcode049. 最后一块石头的重量 II
- [Java基础]体验Lambda表达式
- C++ 实现分块查找(顺序存储结构)(完整代码)