[LG P2519][BZOJ2298][HAOI2011]problem a

[LG P2519][BZOJ2298][HAOI2011]problem a

题目描述

一次考试共有n个人参加

第i个人说:"有ai个人分数比我高,bi个人分数比我低。"

问最少有几个人没有说真话(可能有相同的分数)

输入输出格式

输入格式:

第一行一个整数n,接下来n行每行两个整数,第i+1行的两个整数分别代表ai、bi

输出格式:

一个整数,表示最少有几个人说谎

输入输出样例

输入样例#1: 

3
2 0
0 2
2 2

输出样例#1: 

1

说明

1≤n≤100000 0≤ai、bi≤n

 

 

Solution

只要想到一点,此题就很简单了:

ai个人比我高,bi个人比我低,意味着n-ai-bi个人与我相同分数!

也就是说排名为ai+1......n-bi的人的分数相同。

 

其中有两种必定为假的情况:

  1. ai+1>n-bi
  2. 同样说这句话的人超过了n-bi-ai个。

 

去除这些之后,就只剩下一堆合法的区间  [ai+1,n-bi]  让你选择,每个区间的价值为说这句话的人数(当然价值最大为区间长度),且需满足任意两个选取的区间没有公共点。

于是问题变成了:选取最大价值和的不相交区间

 

这时只需要按区间右端点排序,直接DP+二分答案求解答案即可(相信看懂题目和前面步骤的人都会这一步,另外,感觉这里的DP只是一个贪心而已。。。)。

#include<bits/stdc++.h>
using namespace std;
const int MAXN=1e5+500;
int f[MAXN];
struct snode{int l,r;} score[MAXN];
struct qnode{int l,r,num; } q[MAXN];
int compare1(snode x,snode y){ return x.l<y.l||(x.l==y.l&&x.r<y.r); }
int compare2(qnode x,qnode y){ return x.r<y.r||(x.r==y.r&&x.l<y.l); }
inline int read()
{int f=1,x=0; char c=getchar();while (c<'0'||c>'9') { if (c=='-') f=-1; c=getchar(); }while (c>='0'&&c<='9') { x=(x<<3)+(x<<1)+(c^48); c=getchar(); }return x*f;
}
int find(int x,int n)
{int l=0,r=n;while (l<r){int mid=(l+r+1)>>1;if (q[mid].r<x) l=mid;else r=mid-1;}return l;
}
int main()
{int n=read(),cnt=0;for (int i=1;i<=n;i++) score[i].l=read()+1,score[i].r=n-read();sort(score+1,score+n+1,compare1);for (int i=1;i<=n;i++){if (score[i].l>score[i].r) continue;if (score[i].l==score[i-1].l&&score[i].r==score[i-1].r) q[cnt].num++;else q[++cnt]={(qnode){score[i].l,score[i].r,1}};}sort(q+1,q+cnt+1,compare2);for (int i=1;i<=cnt;i++){int k=find(q[i].l,cnt); f[i]=max(f[i-1],f[k]+min(q[i].num,q[i].r-q[i].l+1));}printf("%d\n",n-f[cnt]);return 0;
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/315877.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

跟我学: 使用 fireasy 搭建 asp.net core 项目系列之一 —— 开篇

fireasy 面世都有六个年头了&#xff0c;至今依旧是默默无闻&#xff0c;知道它的人可能仅限于本人朋友圈内的人士。本人也在写一本关于如何使用该框架的书籍&#xff0c;但苦于事务繁忙&#xff0c;至今也才写了一半&#xff0c;可以说最为实用最为核心的部分&#xff0c;仍然…

hdu4609 3-idiots

hdu4609 3-idiots 题意&#xff1a; 给出n个木棍以及它们的长度&#xff0c;求取其中三根长度各不相同的木棍组成三角形的概率 题解&#xff1a; 三角形满足条件&#xff1a; 任意两边之和大于第三边 我们设多项式A(x&#xff09;&#xff0c;其中Cixi(Ci是系数)C_ix^i(C_i…

某谷 P1654 OSU!

某谷 P1654 OSU! 题目背景 原 《产品排序》 参见P2577 题目描述 osu 是一款群众喜闻乐见的休闲软件。 我们可以把osu的规则简化与改编成以下的样子: 一共有n次操作&#xff0c;每次操作只有成功与失败之分&#xff0c;成功对应1&#xff0c;失败对应0&#xff0c;n次操作…

dotnet pack 打包文件版本号引起 Could not load file or assembly 问题

如果不是遇到&#xff0c;真的不会想到&#xff0c;代码世界的问题真是千奇百怪&#xff0c;这次遇到的是 dotnet pack 打包文件版本号引起的问题。之前进行 nuget 打包都是在 Visual Studio build 时进行&#xff0c;版本号时通过 .csproj 中的 VersionPrefix 指定&#xff0c…

FFT/NTT/FMT/FWT题目

快速傅里叶变换FFT hdu4609 3-idiots P4173 残缺的字符串 Hash Function [AH2017/HNOI2017]礼物 CF993E Nikita and Order Statistics 快速沃尔什变换 FWT BZOJ4589. Hard Nim Tree Cutting HDU - 5909 快速莫比乌斯变换 FMT 快速数论变换 NTT P2000 拯救世界

[Wannafly挑战赛2D-Delete]最短路

[Wannafly挑战赛2D-Delete]最短路 题目描述 给定一张 n 个点&#xff0c;m 条边的带权有向无环图&#xff0c;同时给定起点 S 和终点 T &#xff0c;一共有 q 个询问&#xff0c;每次询问删掉某个点和所有与它相连的边之后 S 到 T 的最短路&#xff0c;询问之间互相独立(即删…

ASP.NET Core MVC 视图

ASP.NET Core MVC中视图的知识和ASP.NET MVC有很多相似之处&#xff0c;学习难度较低。以下内容主要体现了编程中模块化的思想&#xff0c;模块化才应是我们关注的重点。布局用于提供各个页面所需的公共部分&#xff0c;如&#xff1a;菜单、页头、页尾等。在ASP.NET Core中默认…

CF993E Nikita and Order Statistics

CF993E Nikita and Order Statistics 题意&#xff1a; 给你一个数组 a1∼na_{1 \sim n}a1∼n​&#xff0c;对于 k0∼nk 0 \sim nk0∼n&#xff0c;求出有多少个数组上的区间满足&#xff1a;区间内恰好有 k 个数比 x 小。 x 为一个给定的数。 n≤2105n \le 2 \times 10^5n…

ASP.NET Core 通过 Microsoft.DotNet.Watcher.Tools 实现热部署

之前开发前端的时候&#xff0c;webpack 会有热更新工具&#xff0c;在修改了代码之后&#xff0c;自动将代码编译&#xff0c;实时展现到页面上&#xff0c;给开发带来了极大的方便。Java也可以通过第三方插件JRebel实现热部署&#xff0c;不用频繁的重启Tomcat。微软官方也为…

P3825 [NOI2017]游戏

P3825 [NOI2017]游戏 题目描述 小 L 计划进行n场游戏&#xff0c;每场游戏使用一张地图&#xff0c;小 L 会选择一辆车在该地图上完成游戏。 小 L 的赛车有三辆&#xff0c;分别用大写字母A、B、C表示。地图一共有四种&#xff0c;分别用小写字母x、a、b、c表示。其中&#x…

事关SuperSocket发布,寻找YangFan哥哥

SuperSocket近日发布了2.0的第一个预览版《SuperSocket 2.0 Preview1 发布&#xff0c;.NET Socket服务器框架》&#xff0c;在NuGet上以一个包含数个SuperSocket程序集的大包的形式发布。https://www.nuget.org/packages/SuperSocket/2.0.0-preview1我原意以独立小包的形式发布…

P3321 [SDOI2015]序列统计(未解决)

P3321 [SDOI2015]序列统计 题意&#xff1a; 题解&#xff1a; 参考题解&#xff1a; 题解 P3321 【[SDOI2015]序列统计】 【LG3321】[SDOI2015]序列统计 神仙题。。学透再补 代码&#xff1a;

P1963 [NOI2009]变换序列

题目描述 不想水字&#xff0c;详见某谷&#xff1a;P1963 [NOI2009]变换序列 solution 其实 的计算就类似于环上的距离。 对于每一个 都可能有两种位置选择&#xff1a;&#xff0c; 。 所以把它们分别连边&#xff0c;二分图上匈牙利算法求完美匹配即可。 #include&…

一次 .NET Core 中玩锁的经历:ManualResetEventSlim, SemaphoreSlim

最近同事对 .net core memcached 缓存客户端 EnyimMemcachedCore 进行了高并发下的压力测试&#xff0c;发现在 linux 上高并发下使用 async 异步方法读取缓存数据会出现大量失败的情况&#xff0c;比如在一次测试中&#xff0c;100万次读取缓存&#xff0c;只有12次成功&…

BZOJ4589. Hard Nim

BZOJ4589. Hard Nim 题意&#xff1a; Claris和NanoApe在玩石子游戏&#xff0c;他们有n堆石子&#xff0c;规则如下&#xff1a; Claris和NanoApe两个人轮流拿石子&#xff0c;Claris先拿。每次只能从一堆中取若干个&#xff0c;可将一堆全取走&#xff0c;但不可不取&…

P2825 [HEOI2016/TJOI2016]游戏

题目描述 详见 P2825 [HEOI2016/TJOI2016]游戏。 solution 套路题。 一般思路是行列建点跑二分图最大匹配。 此题中的#会分隔行列&#xff0c;因此我们把每行的极大联通块设为点&#xff0c;列同理建点。 再对于每个*对应的行的极大联通块与列的最大联通块编号连边&…

P3033 [USACO11NOV]牛的障碍Cow Steeplechase

P3033 [USACO11NOV]牛的障碍Cow Steeplechase 题目描述 详见&#xff1a;P3033 [USACO11NOV]牛的障碍Cow Steeplechase solution 裸题。 对于每一对相交的线段&#xff0c;连一条边&#xff0c;表示这一对线段不能都取。 显然这样会建立一个二分图&#xff08;横的线段不…

Tree Cutting HDU - 5909

Tree Cutting HDU - 5909 题意&#xff1a; 一个无根树&#xff0c;n个点&#xff0c;n-1条边&#xff0c;每个节点有一个权值&#xff0c;一棵树的权值就是其节点(包含本身及其子节点)的权值的异或和&#xff1b;求价值为[0,m)的树有多少颗&#xff1f;(所谓的树其实就是原连…

Redis作者antirez:开源维护者的挣扎

这两天&#xff0c;一篇名为《开源维护者的挣扎》的文章被迅速顶至 Hacker News 首页&#xff0c;这是 Redis 作者 antirez 发布的最新博客。几个月前&#xff0c;一名开源项目的维护者向 antirez 发邮件&#xff0c;倾诉自己苦心维护项目多年&#xff0c;这或多或少带来了一些…

CF662C Binary Table

CF662C Binary Table 题意&#xff1a; 有一个 n 行 m 列的表格&#xff0c;每个元素都是 0/1 &#xff0c;每次操作可以选择一行或一列&#xff0c;把 0/1 翻转&#xff0c;即把 0 换为 1 &#xff0c;把 1 换为 0 。请问经过若干次操作后&#xff0c;表格中最少有多少个 1 …