链接:https://ac.nowcoder.com/acm/contest/1168/H

题目:


题目描述

邓志聪是一位非常聪明的小伙子,这次他在某个学校当班主任,他班上有n个学生,然而有些学生非常的讨厌邓志聪。一次考试结束后,邓志聪想知道这些学生的考试情况,于是一个一个叫这些学生叫去办公室问他们,但是有些学生并没有讲真话,第i个学生说:“有ai个人分数比我高,bi个人分数比我低。”邓志聪想知道最少有几个学生没有说真话,你能帮助他吗?(可能有相同的分数)

输入描述:

第一行一个整数n,接下来每行两个整数,第i+1行两个整数代表ai,bi。(1<=n<=100000,0<=ai,bi<=n)

输出描述:

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

输入

3
1 1
2 2
0 2

输出

1

解题思路:


题目要求最少的说谎人数,反向即求最多有多少人没有说谎。

对于第i个学生,由可以确定一个区间(),该区间内的所有学生排名相同,且共有个人。对于一个区间,出现的次数可能大于次,这说有一定有人说谎了,所以最终可以确定一个三元组,,

方法1:

对这些三元组按照R从小到大排序,对于拍完序的第i个元组,在之间二分找到一个最大的j,使得,不断更新答案

方法2:

统计元组中的R对应的所有L,1~n遍历R,枚举R对应的所有L,更新答案

基本思路:确定同排名的人所在的所有区间,寻找一个区间集合满足上一个区间的R<下一个区间的L(目的是得到一个连续的排名),确定区间集合中的最大人数。

ac代码:


方法1:

#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e5+10;
struct node{int l, r, v;friend bool operator < (node a, node b){return a.r == b.r ? a.l < b.l : a.r < b.r;}
}c[maxn];
int n, a, b, L, R;
int f[maxn], p[maxn];
map<pair<int, int>, int> m;
int main() {//freopen("/Users/zhangkanqi/Desktop/11.txt","r",stdin);scanf("%d", &n);int num = 1;for(int i = 1; i <= n; i++){scanf("%d %d", &a, &b);L = a+1, R = n-b;if(L<=R){if(m[make_pair(L, R)] == 0){c[num].l = L;c[num++].r = R;m[make_pair(L, R)] = 1;//相同的区间只在c中存储一次}else m[make_pair(L, R)]++;//统计区间出现的次数}}num--;sort(c+1,c+1+num);for(int i = 1; i <= num; i++){c[i].v = min(m[make_pair(c[i].l,c[i].r)], c[i].r-c[i].l+1);p[i] = c[i].r;}for(int i = 1; i <= num; i++){int last = lower_bound(p+1, p+1+num, c[i].l)-p-1;//最后一个小于c[i].l的下标//printf("last%d\n", last);f[i] = max(f[i-1], f[last]+c[i].v);}printf("%d\n", n-f[num]);return 0;
}

方法2:

#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e5+10;
struct node{int l, r;
}c[maxn];
vector<int> p[maxn];//p[i]中存储(L,R)中R=i的所有L值
int n, a, b, L, R;
int f[maxn];
map<pair<int, int>, int> m;
int main()
{//freopen("/Users/zhangkanqi/Desktop/11.txt","r",stdin);scanf("%d", &n);for(int i = 1; i <= n; i++){scanf("%d %d", &a, &b);L = a+1, R = n-b;if(L<=R){m[make_pair(L, R)]++;//统计区间出现的次数if(m[make_pair(L,R)] == 1)p[R].push_back(L);}}for(int i = 1; i <= n; i++){f[i] = f[i-1];for(int j = 0; j < p[i].size(); j++){int cnt = min(i-p[i][j]+1, m[make_pair(p[i][j], i)]);//(L,R)区间出现的次数f[i] = max(f[i], f[p[i][j]-1]+cnt);}}printf("%d\n", n-f[n]);return 0;
}

【2019华东交通校赛:H】谁在说谎(思维)相关推荐

  1. 递推(2019暑期集训第一次校赛-H.统计ccsu)

    2019暑期集训第一次校赛-H.统计ccsu 链接:https://ac.nowcoder.com/acm/contest/1068/H 来源:牛客网 题目描述 给一个长度不超过1e5的字符串s,字符 ...

  2. 2019 ICPC 南昌网络赛 H. The Nth Item

    2019 ICPC 南昌网络赛 H. The Nth Item 题目大意:已知一个数列F(n): F(0)=0,F(1)=1 F(n)=3∗F(n−1)+2∗F(n−2),(n≥2) ​ 给你一个操作 ...

  3. 【计蒜客 - 2019南昌邀请赛网络赛 - H】Coloring Game(找规律,思维dp)

    题干: David has a white board with 2 \times N2×N grids.He decides to paint some grids black with his b ...

  4. 西北大学2019年春季校赛题解(G-L)

    G. 房间迷宫 裸的最短路,spfa和dij都行.因为每个数字的因子不会很多. 话说现场赛过的人好少,都是RE什么的奇怪错误,看代码也是最短路,不知道什么锅QAQ,就算你过了吧..因为这个题赛前预估算 ...

  5. 2019长安大学ACM校赛网络同步赛 L XOR (规律,数位DP)

    链接:https://ac.nowcoder.com/acm/contest/897/L 来源:牛客网 XOR 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言6 ...

  6. 2019长安大学ACM校赛网络同步赛 J Binary Number(组合数学+贪心)

    链接:https://ac.nowcoder.com/acm/contest/897/J 来源:牛客网 Binary Number 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32 ...

  7. 2019长安大学ACM校赛网络同步赛 L XOR

    题意 求区间内有多少数x满足x^4x^5x=0 1≤l≤r≤1018. 题解 根据异或的性质可以推到 x^4x=5x -->x^4x=x+4x 即x和4x每一位都不同,即x和(x<< ...

  8. 2019长安大学ACM校赛网络同步赛 Trial of Devil

    链接:https://ac.nowcoder.com/acm/contest/view-submission?submissionId=40669755 来源:牛客网 题目描述 As an acmer ...

  9. 第15届上海大学程序设计联赛夏季赛暨上海高校金马五校赛H

    思路: 首先要知道:11+12+13+14+...++1n=ln(n)+C \dfrac{1 }{1} + \dfrac{1 }{2} + \dfrac{1 }{3} + \dfrac{1 }{4}+ ...

  10. 埃森哲杯第十六届上海大学程序设计联赛春季赛暨上海高校金马五校赛H题小Y与多米诺骨牌(线段树优化dp)

    题意 题目链接:https://www.nowcoder.com/acm/contest/91/H 来源:牛客网 题解 设l[i]l[i]l[i]为向左推第iii个骨牌最远能影响到的骨牌的编号,r[i ...

最新文章

  1. 深入研究 System.out.println()
  2. 邮件客户端WebMail Pro v7.7.5发布,在线订购限时75折优惠!
  3. 记录一次异常 出现不支持的 SQL92 标记: 70
  4. c语言编程*字母图形,BIT网教c语言练习_编程复习1输出图形
  5. GDCM:使用Stream Image Writer伪造图像的测试程序
  6. 最短路--DijkstraFloyedSPFA
  7. 产品经验谈:设计思维 统计思维
  8. 十四个方法提高博客的页面访问量
  9. security中的@EnableGlobalMethodSecurity注解详解
  10. 按值传递和按引用传递的区别_c++按值、地址、引用传递参数
  11. 小程序数据框有重影_小程序开发(二):数据绑定
  12. 聆听自由的声音----Linux下声卡驱动软件ALSA的安装与配置
  13. matlab如何获得数组有多少数,请问MATLAB里有得到一个数组中相同数有多少个的函数么?...
  14. UGUI 实现屏幕外怪物的指示箭头
  15. Facebook三方登陆流程
  16. 并行计算、分布式计算、集群计算和网格计算的介绍,以及主要有哪些区别?
  17. 计算机是人类的好伴侣 作文,电脑真好作文
  18. 最新出炉的阿里巴巴面试题及答案汇总(513页)
  19. pep8 python 编码方式_PEP8 Python 编码规范整理
  20. 用instsrv.exe+srvany.exe将应用程序安装为windows服务

热门文章

  1. 医学遗传学词汇英语术语英文(Glossary) 5
  2. 用户列表 html,用户列表.html
  3. 行军导航过程中导向箭头
  4. 创维广电服务器无线,创维电视有线联网和无线联网的两种方法分享!
  5. linux下安装配置nginx,Linux下安装与配置nginx
  6. python用模块读取xml文件_Python之xml文档及配置文件处理(ElementTree模块、ConfigParser模块)...
  7. c语言单分支编程题,C语言习题集(分支和选择).doc
  8. swagger整合springMVC
  9. Three.js中的矩阵
  10. 在阿里云上搭建自己的git服务器