题意:给出两行,每一行都有n个数组,一共有2 * n个,大小为1~n,每个有两个。现在可以进行操作:拿出一个物品i,然后放到一个空格,花费i。可以任意平移物品,平移没有花费。每一行空间无限。要求你把一样的数字要放在相邻位置,即1 1放一起,2 2放一起...问你你所有拿出的物品的最大花费max{ i }最小是多少。比如,我拿了1 2 3,那么最大花费max{ i }最小是3。

思路:我们二分这个答案m,显然比m小的可以直接移到末尾的无限空间,所以只要判断比m大的有没有成双成对就行。

打的时候居然没有想到!!!

代码:

#include<stack>
#include<set>
#include<map>
#include<queue>
#include<cstdio>
#include<vector>
#include<cstring>
#include <iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const int maxn = 1e6 + 10;
const ull seed = 131;
const int INF = 0x3f3f3f3f;
const int MOD = 1e9 + 7;
int n, w1[maxn], w2[maxn];
bool check(int m){
stack<int> s;
while(!s.empty()) s.pop();
for(int i = 1; i <= n; i++){
if(w1[i] > m){
if(s.empty()) s.push(w1[i]);
else if(!s.empty() && s.top() == w1[i]) s.pop();
else return false;
}
}
if(!s.empty()) return false;
for(int i = 1; i <= n; i++){
if(w2[i] > m){
if(s.empty()) s.push(w2[i]);
else if(!s.empty() && s.top() == w2[i]) s.pop();
else return false;
}
}
if(!s.empty()) return false;
return true;
}
int main(){
scanf("%d", &n);
int Max = 0;
for(int i = 1; i <= n; i++){
scanf("%d", &w1[i]);
Max = max(Max, w1[i]);
}
for(int i = 1; i <= n; i++){
scanf("%d", &w2[i]);
Max = max(Max, w2[i]);
}
int l = 0, r = Max;
int ans = INF;
while(l <= r){
int m = (l + r) >> 1;
if(check(m)){
ans = m;
r = m - 1;
}
else{
l = m + 1;
}
}
printf("%d\n", ans);
return 0;
}

Gym 101170F Free Weights(二分)题解的更多相关文章

  1. Codeforces GYM 100876 J - Buying roads 题解

    Codeforces GYM 100876 J - Buying roads 题解 才不是因为有了图床来测试一下呢,哼( 题意 给你\(N\)个点,\(M\)条带权边的无向图,选出\(K\)条边,使得 ...

  2. Codeforces Gym 100425A Luggage Distribution 二分 数学

    A - Luggage DistributionTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/c ...

  3. Gym - 101028I March Rain 二分

    http://codeforces.com/gym/101028/problem/I 题意:给你n个洞,k个布条,问布条能贴到所有洞时的最小值. 题解:二分答案,因为答案越大就越容易满足条件. 技巧: ...

  4. Code Forces Gym 100886J Sockets(二分)

    J - Sockets Time Limit:1000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u Valera ...

  5. poj 1064 Cable master 二分 题解《挑战程序设计竞赛》

    地址 http://poj.org/problem?id=1064 题解 二分即可 其实 对于输入与精度计算不是很在行 老是被卡精度 后来学习了一个函数 floor 向负无穷取整 才能ac 代码如下 ...

  6. Book Borders (Gym - 101480B)(二分)

    题目链接 题解:用二分查询一下每次满足长度的下一个加上它的长度. #include <bits/stdc++.h> using namespace std; typedef long lo ...

  7. Gym - 100851L:Landscape Improved (二分+单调性)

    题意: 一个宽度为N的网格图,i上有h[i]高的方块.现在你有W个方块,问怎么放使得最终的最高点最高.   当一个格子的下方,左下方和右下方都有方块那么久可以把方块放到这个格子上.最左端和最右端不能放 ...

  8. Gym 100971D Laying Cables 二分 || 单调栈

    要求找出每个a[i],找到离他最近而且权值比它大的点,若距离相同,输出权利最大的那个 我的做法有点复杂,时间也要500+ms,因为只要时间花在了map上. 具体思路是模拟一颗树的建立过程,对于权值最大 ...

  9. 【Codeforces】Gym 101608G WiFi Password 二分+线段树

    题意 给定$n$个数,求有最长的区间长度使得区间内数的按位或小于等于给定$v$ 二分区间长度,线段树处理出区间或,对每一位区间判断 时间复杂度$O(n\log n \log n)$ 代码 #inclu ...

随机推荐

  1. 集成多种协议、用于 USB-A 和 TYPE-C 双端口输出的快充协议芯片IP2726

    1. 特性  支持 1A1C  支持 USB-A 和 TYPE-C 双端口输出  单口输出支持全部快充协议  双口同时插入时降压到 5V  快充规格  集成 QC2.0/QC3.0/QC4/QC4+输 ...

  2. Python 日志打印之自定义logger handler

    日志打印之自定义logger handler By:授客 QQ:1033553122 #实践环境 WIN 10 Python 3.6.5 #实践代码 handler.py #!/usr/bin/env ...

  3. 阿里云VOD(三)

    一.视频播放器 参考文档:https://help.aliyun.com/document_detail/125570.html?spm=a2c4g.11186623.6.1083.1c53448bl ...

  4. Django的数据库读写分离

    Django的数据库读写分离 1.首先是配置数据库 在settings.py文件中增加多个数据库的配置: DATABASES = { 'default': { 'ENGINE': 'django.db ...

  5. 基于scrapy框架的分布式爬虫

    分布式 概念:可以使用多台电脑组件一个分布式机群,让其执行同一组程序,对同一组网络资源进行联合爬取. 原生的scrapy是无法实现分布式 调度器无法被共享 管道无法被共享 基于 scrapy+redi ...

  6. C语言中使用类似awk的功能

    awk实在是太强大了, 非常复杂的任务,几行代码就可以解决, awk经常需要用到, 但是在c语言里面, 调用system不太优雅, 能不能直接在c语言中直接调用呢,简单实现了一些功能, 但大多数情况, ...

  7. 20200927gryz校赛心得

    今天gyh学长给我们办了一场校内模拟赛,特地跑来记录一下心得 昨天晚上问了一下lkp学长,听说题目不卡常,不毒瘤,因此我在考试前20分钟仍在若无其事的练习着刚学的强连通分量,丝毫不慌 结果虽然rank ...

  8. 请你尽量全面的说一个对象在 JVM 内存中的结构?

    从 Java 14 开始,Project Valhala引入了 Value Type(或者称为 inline type),参考: Valhalla: https://openjdk.java.net/ ...

  9. 渗透测试工具-sqlmap

    简单来说:一个用来做sql注入攻击的工具 安装 1,下载sqlmap.zip,下载环境: 打开sqlmap官网https://github.com/sqlmapproject/sqlmap/ :下载p ...

  10. Spark练习之通过Spark Streaming实时计算wordcount程序

    Spark练习之通过Spark Streaming实时计算wordcount程序 Java版本 Scala版本 pom.xml Java版本 import org.apache.spark.Spark ...