题解 P1496 【火烧赤壁】
蒟蒻的第一篇题解,其实这道题是标准的离散化,模拟可以过,但是就没有训练效果了。我们首先先看数据,n<=20000,数据不多,但是范围大(-10^9<=Ai,Bi<=10^9),这时,就可以用离散化了,我们先定义两个数组,记录坐标,再全部赋给一个新的数组,进行排序,就可以判断是否可用*(flag判断),再通过一个find函数,找到原位置,就可以算了。但是本题卡时间,优化一下就行(快读,氧气优化之类的)
关于判断是否可用,举个栗子
有两对线段(x1,y1)(x2,y2) 如果x1>y2或x2>y1,那么(y2,x1)段或(y1,x2)段无用
#pragma GCC optimize(2)//手动o2
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cmath>
#include<cstring>
using namespace std;
long n,m=,ans=;//m记录坐标数
long c[]={};
//因为c要把起点与终点存下来,所以开40100
int a[],b[];//a存起点,b存终点
bool flag[];//判断是否有效
inline void read(long &x)//快读
{
x=;
int f=;
char ch=getchar();
while(ch<''||ch>'')
{
if(ch=='-')
f=-;
ch=getchar();
}
while(ch>=''&&ch<='')
{
x=x*+ch-'';
ch=getchar();
}
x*=f;
}
inline long find(long key)//找原来位置
{
for(int i=;i<=m;++i)
{
if(c[i]==key)
return i;
}
}
int main()
{
read(n);
for(long i=;i<=n;++i)
{
read(a[i]);
read(b[i]);
c[m]=a[i];
m++;
c[m]=b[i];
m++;
}//把a,b存入c数组里去
sort(c+,c+m+);//排序坐标
for(long i=;i<=n;++i)
{
a[i]=find(a[i]);
b[i]=find(b[i])-;//找原位置
for(int j=a[i];j<=b[i];++j)
flag[j]=true;//为有效
}
for(long i=;i<=m;++i)
{
if(flag[i])
ans+=c[i+]-c[i];//有效,加入ans
}
printf("%ld",ans);
}
蒟蒻瑟瑟发抖,%%各位大佬
题解 P1496 【火烧赤壁】的更多相关文章
- 洛谷 P1496 火烧赤壁
题目描述 曹操平定北方以后,公元208年,率领大军南下,进攻刘表.他的人马还没有到荆州,刘表已经病死.他的儿子刘琮听到曹军声势浩大,吓破了胆,先派人求降了. 孙权任命周瑜为都督,拨给他三万水军,叫他同 ...
- 洛谷P1496 火烧赤壁 (模拟/离散化+差分)
分析可知:将起点和终点按照从小到大的顺序排序,对答案不会产生影响 所以此时我们得到一种模拟做法: 1 #include<bits/stdc++.h> 2 using namespace s ...
- usaco 2002 月赛 Fiber Communications 题解
Description Farmer John wants to connect his N (1 <= N <= 1,000) barns (numbered 1..N) with a ...
- 纪中OJ 2019.02.15【NOIP提高组】模拟 B 组 梦回三国 比赛题解(第一个)
声明 旁边的同学小 H(胡)对我说: “哟,比赛拿了 140,强!要知道,如果哥第三题 AC 了,哥就 230 了,你个废柴!!!(比赛实际分数 130 额呵)” 顿时,千万草泥马从我心中奔腾而过:你 ...
- vijos题解
Vijos题解 题库地址:https://vijos.org/p P1001 谁拿了最多奖学金 题意:按照指定要求计算奖学金,直接用if判断即可 #include<iostream> us ...
- 2016 华南师大ACM校赛 SCNUCPC 非官方题解
我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...
- noip2016十连测题解
以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...
- BZOJ-2561-最小生成树 题解(最小割)
2561: 最小生成树(题解) Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1628 Solved: 786 传送门:http://www.lyd ...
- Codeforces Round #353 (Div. 2) ABCDE 题解 python
Problems # Name A Infinite Sequence standard input/output 1 s, 256 MB x3509 B Restoring P ...
随机推荐
- kali权限提升之配置不当提权与WCE
kali权限提升之配置不当提权与WCE 1.利用配置不当提权 2.WCE 3.其他提权 一.利用配置不当提权 与漏洞提权相比更常用的方法 在大部分企业环境下,会有相应的补丁更新策略,因此难以通过相应漏 ...
- IOS开发证书常见问题
1.本地Provisioning Profiles存放路径 ~/Library/MobileDevice/Provisioning Profiles 2.this action could not b ...
- windows PHP 安装 redis 外加扩展
前置条件:为php7.2搭建redis扩展的前提是在本机上已经成功搭建好php的运行环境,我的电脑的运行环境时 apache2.4+mysql5.5+php7.2. 操作系统为64位,编译环境为Mic ...
- http面试准备
从http的角度深入分析一次web请求: 1.在浏览器输入一个url地址如www.baidu.com 2.请求DNS把这个域名解析成对应的IP地址(DNS域名解析过程看上篇博客) 3.根据这个IP地址 ...
- 网络流24题 P1251 餐巾计划问题 拆点
题目描述 一个餐厅在相继的 NN 天里,每天需用的餐巾数不尽相同.假设第 ii 天需要 r_iri块餐巾( i=1,2,...,N).餐厅可以购买新的餐巾,每块餐巾的费用为 pp 分;或者把旧餐巾送 ...
- 记录学习antd design pro dva的过程,主要记错, 多图预警,如有理解偏差,忘指出,多谢!
首要问题: 如何增加菜单项 答案: 在router.config中添加路由,在locales语言国际化增加选项 问题1: 答案1: 问题2: 这个要修改state,正确写法 存在的疑惑:为什么不能直接 ...
- node-portfinder
nstallation $ [sudo] npm install portfinder Usage var portfinder = require('portfinder'); portfi ...
- Characterization of Dynkin diagrams
Nowadays, I am reading D.J.Benson's nice book, volume I of Representations and cohomology. I found i ...
- sql 语句中as的用法和作用
我们的Sql语句在很多数据库中都是通用的,比如像Mysql数据库 Access数据库. Oracle数据库. Sqlite数据库 .甚至在我们的Excel中也可以使用Sql语句. 在我的数据库中有u ...
- SpringCloud---网关概念、Zuul项目搭建(六)
SpringCloud---网关概念.Zuul项目搭建(六) 一.网关概念 1.什么是路由网关 网关是系统的唯一对外的入口,介于客户端和服务器端之间的中间层,处理非业务功能 提供路由请求.鉴权.监控. ...