problem a

【题目讲解】Sum Problem & A + B Problem II 这道英文题看起来很唬人,其实就是个垃圾,废话不多说,上代码! Sum Problem 显示标签 题目讨论题目统计全部提交 时间限制:C/C++ 500MS,其他语言 1000MS 内存限制:C/C++ 32MB,其他语言 64MB 难度:普及+/提高 出题人:深学 描述 Hey, welcome to HDOJ(Hangzhou Dianzi University Online Judge). In this problem, your task is to calculate SUM... 阅读详情

 

Description

一次考试共有n个人参加,第i个人说:“有ai个人分数比我高,bi个人分数比我低。”问最少有几个人没有说真话(可能有相同的分数)

Input

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

Output

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

Sample Input

3

2 0

0 2

2 2

Sample Output

1

HINT

100%的数据满足: 1≤n≤100000   0≤ai、bi≤n

 

第一种思路:

     设dp[i]表示在前i名中最多有多少人说真话,则n-dp[n]即为所求。注意,如果有一个人的名次区间为[l, r],那么我们只在dp[r]中考虑他。

状态转移方程:dp[i] = max{dp[j-1]+min(sum[j][i],i-j+1)} 其中sum[j][i]表示名次区间为[j, i]的人数。// min(sum[j][i],i-j+1):如果存在说假话的人,那sum[j][i]有可能大于i-j+1,不能取。

时间复杂度为O(n^2),需要进行优化。

考虑到大多数sum[j][i]为0,为冗余数据,不必枚举,所以我们建立一个数组match[i][j]来表示第j个数k使得sum[k][i]不为0(c++可以使用vector),减少决策的枚举量。

为了方便记录sum[i][match[i][j]],我使用了map(否则空间开不下,且申请内存时间过长),所以总时间复杂度为O(nlogn)

Map用法太神奇了,O r z了!!!

     第二种思路:(自己不会,先粘过来,慢慢领悟……)

其实我们可以很巧妙的把这道题转化成一道线段覆盖的问题,怎么转化呢?

对于每一个描述,我们可以根据他所描述的比他高的和比他矮的人数来构造一条线段,左端点l即为y+1,右端点r为n-x。

当我们转化成线段以后,这一段线段就表示着分数相同的人数,那么显然,只有与这个线段完全重合的线段是符合要求的,对于有交集的线段一定是有一个说谎的,但是对于完全重合的线段,还是有可能出现说谎的情况,因为,当完全重合的线段的数量大于这个线段的长度时,就有num-len个人说谎。

这样我们就可以把这个问题转化成一个线段覆盖的问题了,我们只需要求出有多少重合的线段,那么这个线段的权值就是这个数。然后我们再做带权值的线段覆盖就好了。

至于怎么在O(n+n*log(n))的时间内做出来呢:先按照右端点排序,然后从前向后枚举每一个线段,用f数组记录在当前坐标时能取到的最大值:f[a[i].r]=f[a[i].l-1]+a[i].v;

至于为什么是f[a[i].l-1]呢?因为由于这个问题的特殊性,可能会出现【x,x】这种线段,所以为了避免比较麻烦的问题,就这样处理了。再做的时候还需要一直维护着f数组,我们用一个now变量,一直跟着右端点走,总共用(n)的时间来维护f数组。

最后还有一点,其实这个题可以不用map(因为我不会。。。)

#define MAXN 100010UL
#include<cstdio>
#include<map>
#include<vector>
using namespace std;
int n,dp[MAXN];
map<pair<int,int>,int>op;
vector<int>ex[MAXN];
int MAX(int a,int b){
    return a>b?a:b;
}
int MIN(int a,int b){
    return a<b?a:b;
}
int main(){
    scanf("%d",&n);
    int x,y;
    for(int i=1;i<=n;i++){
        scanf("%d%d",&x,&y);
        op[make_pair(x+1,n-y)]++;
        ex[n-y].push_back(x+1);
    }
    for(int i=1;i<=n;i++){
        dp[i]=dp[i-1];
        for(int j=0;j<ex[i].size();j++){
            dp[i]=MAX(dp[ex[i][j]-1]+MIN(i-ex[i][j]+1,op[make_pair(ex[i][j],i)]),dp[i]);
        }
    //    printf("%d\n",dp[i]);
    }
    printf("%d",n-dp[n]);
//    while(1);
}

 

【UOJ77】A + B Problem 【题目链接】 点击打开链接 【思路要点】 最小割,考虑在为每个元素 iii 在源汇之间建点 pointi,0point_{i,0}pointi,0​ ,连边 (s,pointi,0,bi),(t,pointi,1,wi)(s,point_{i,0},b_i),(t,point_{i,1},w_i)(s,pointi,0​,bi​),(t,pointi,1​,wi​) ,此时的最小割即为... 阅读详情

相关推荐

A+B Problem(高精)

高精度加法,相当于 a+b problem,。

Pretty Boy Fox的博客 912

problem a [HAOI2011]

题目传送门 题目描述: 一次考试共有n个人参加,第i个人说:“有ai个人分数比我高,bi个人分数比我低。”问最少有几个人没有说真话(可能有相同的分数) 输入格式: 第一行一个整数n,接下来n行每行两个整数,第i+1行的两个整数分别代表ai、bi 输出格式: 一个整数,表示最少有几个人说谎 样例输入: 3...

weixin_33939843的博客 333

传感器:MQ-5燃气模块测量燃气值(底部附代码)

本篇文章介绍使用MQ-5燃气模块测量燃气值,CPU还是选择单片机,MQ-5主要使用的技术为ADC,燃气对于单片机来说是模拟信号,需要转换为数字信号,再经过相关计算公式将燃气模拟值转换成对应的燃气数值,便于人们方便查看。例如家庭使用燃气模块测量燃气值,如果燃气值超过一定的范围,可以外设一个报警装置,保证家庭的生命安全。(1)ADC(analog to digital converter)即模数转换器,它可以将模拟信号转换为数字信号。按照其转换原理主要分为逐次逼近型、双积分型、电压频率转换型三种。STM32F1

Mr_zhang1911116的博客 1万+

[luogu] P2519 [HAOI2011]problem a (贪心)

P2519 [HAOI2011]problem a 题目描述 一次考试共有n个人参加,第i个人说:“有ai个人分数比我高,bi个人分数比我低。”问最少有几个人没有说真话(可能有相同的分数) 输入输出格式 输入格式: 第一行一个整数n,接下来n行每行两个整数,第i+1行的两个整数分别代表ai、bi 输出格式: 一个整数,表示最少有几个人说谎 输入输出样例 输入样例#1: 复制 3 2 0 ...

a6823202的博客 270

微信小程序使用ucharts折线图,有负数显示0刻度线

当数据有负数和正数的时候默认不会显示0刻度线,不方便看出正负对比。

欢迎来到我的博客!在这里,我将分享我在前端开发方面的知识和经验。让我们一起探索前端开发的无限可能! 1582

suse ha for sap scale-up性能优化场景安装配置

suse ha for SAP安装配置

jetliu05的博客 2139

codeforces1327C. Game with Chips

C. Game with Chips time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output Petya has a rectangular Board of sizen×mn×m. Initially,kkchi...

。 526

GLDAS数据高效处理指南:基于Matlab的NC4转GeoTIFF实战解析

本文提供了一份基于Matlab的GLDAS数据处理实战指南,详细解析了如何将NetCDF4格式的GLDAS数据高效、准确地批量转换为GIS友好的GeoTIFF格式。文章核心内容包括数据理解、环境搭建、核心代码逐步拆解、效率提升技巧以及常见避坑方案,旨在帮助全球生态、水文与气候领域的研究者打通数据预处理的关键环节,提升科研工作效率。

weixin_29094775的博客 311

[bzoj2298][HAOI2011]problem a

2298: [HAOI2011]problem ahttp://www.lydsy.com/JudgeOnline/problem.php?id=2298 Time Limit: 10 Sec Memory Limit: 256 MB Submit: 696 Solved: 307 [Submit][Status][Discuss] Description一次考试共有n个人参加,第i个人

Vampire 1720

嵌入式代码审计中常见的漏洞(四)

经过漫长时间的迭代更新,内容从一开始的碎片化网罗搜集,到排版与整合划分,再到学习与实践验证,最后摒弃初始,用自己的语言与实践结论通俗的将它展现出来。强化知识技能的同时也为读者带来更好的阅读体验。 本篇介绍了以下代码安全问题: 编号 漏洞 1 敏感信息硬编码 2 未初始化安全 3 越界访问 4 迭代器失效 5 迭代器尾部解引用

武天旭的博客 3318

MATLAB算法实战应用案例精讲-【数模应用】校准曲线(附MATLAB、python和R语言代码实现)

模型校准曲线(Calibration Curve),也称为可靠性曲线(Reliability Curve)或概率校准曲线(Probability Calibration Curve),是一种评估分类模型输出概率准确性的图形工具。它可以帮助我们理解模型的预测概率是否与实际标签的分布一致。校准曲线通常包括以下步骤:计算模型预测概率:对于测试集中的每个样本,模型会输出一个概率值,表示样本属于正类的概率。将数据分桶:将这些概率值分成若干个等宽的桶(例如10个桶),每个桶中的样本具有相似的预测概率。

qq_36130719的博客 559

【动态规划】bzoj2298: [HAOI2011]problem a

建模超级妙…… Description 一次考试共有n个人参加,第i个人说:“有ai个人分数比我高,bi个人分数比我低。”问最少有几个人没有说真话(可能有相同的分数) Input 第一行一个整数n,接下来n行每行两个整数,第i+1行的两个整数分别代表ai、bi Output 一个整数,表示最少有几个人说谎 Sample Input 3 2 0 0 2 ...

weixin_30451709的博客 153

手把手带你死磕ORBSLAM3源代码(一)目录详解

ORB-SLAM3是一种基于特征点的稀疏实时单目SLAM(Simultaneous Localization and Mapping)系统。它是ORB-SLAM系列模型的第三代版本,用于在无人机、机器人和增强现实等领域中进行实时定位和建图。ORB-SLAM3使用了一种特征点提取和描述算法,称为ORB(Oriented FAST and Rotated BRIEF)。该算法能够提取图像中的稳定特征,并将其用于地图建立和相机定位。

anananajiushiwo的博客 2301

A+B Problem——经典中的经典

A+B Problem,这道题,吸收了天地的精华,是当之无愧的经典中的经典中的经典。自古以来OIer都会经过它的历练(这不是白说吗?),下面就有我herobrine来讲讲这道题的各种做法。 好吧,同志们,我们就从这一题开始,向着蒟蒻 呸,大佬的路进发。 任何一个伟大的思想,都有一个微不足道的开始。 前方高能 C #include &amp;lt;stdio.h&amp;gt; int main() { i...

全机房最蒟蒻的博客 9784

OTG原理讲解

摘要:USB OTG(On-The-Go)是USB 2.0的重要功能,允许设备在主机和从机间动态切换,实现设备间的直接通信。其核心机制是通过ID引脚电平判断角色:Micro-USB中接地为Host,悬空为Device;USB-C则通过CC引脚协商。电路设计需处理ID引脚连接和VBUS电源控制,MCU根据ID状态配置USB控制器模式。典型应用包括手机连接U盘、键盘等外设,极大扩展了移动设备的连接能力。

m0_49476241的博客 3223

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

所有语言的A+B Problem

文章目录A+B Problem 不同的语言 A+B Problem 不同的语言 c #include <stdio.h> int main() { int a,b; scanf("%d%d",&a,&b); printf("%d",a+b); return 0; } cpp #include <cstdio> #include <iostre...

qq_43192522的博客 567

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

ZOJ 1001 A + B Problem

ZOJ Problem Set - 1001 A + B Problem Time Limit: 2 Seconds      Memory Limit: 65536 KB Calculate a + b Input The input will consist of a series of pairs of integers a and b,separated b

jianjun的专栏 632

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

HDU.1000 A + B Problem

前言 本人目前大二,目前正值新型肺炎疫情期间,空余时间与其在家里无所事事,倒不如每天刷上一两道算法题、写写解题报告总结总结。 所以每天都写至少一篇题解博客吧,同时也希望全国的疫情能快速消退,加油! 原题 HDU.1000 A + B Problem 分类 杂题 题意 计算两个整数的和。 每行两个数据,以文件结尾为终止标志。 虽然没有说清楚整数的范围,但是毕竟也是HDU第一道题,实测没有设置太坑...

God-Excious的博客 1607

ZOJ1001 A + B Problem

A + B Problem Time Limit: 2 Seconds      Memory Limit: 65536 KB Calculate a + b Input The input will consist of a series of pairs of integers a and b,separated by a space, one pair of inte

江枭的专栏 753

A+B Problem

A+B Problem Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description Calculate a+b. Input Two integer a,b (0 Output Output a+b. Example Input 1

Sona的绯闻男友的博客 419

A + B Problem II

A + B Problem IITime Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 169117    Accepted Submission(s): 32432 Problem DescriptionI have a very simp

u011582187的专栏 717

P1001 A+B Problem【测试】

强烈推荐。算法竞赛中要求的输出格式中,ab。若包含了这些内容,将会被认为是,即洛谷上的WA。在对比代码输出和标准输出时,系统将忽略每一行结尾的空格,以及最后一行之后多余的换行符。若因此类问题出现本机似乎输出了正确的结果,但是实际提交结果为错误的现象,请勿认为是洛谷评测机出了问题,而是你的代码中可能存在多余的输出信息。用户可以参考在题目末尾提供的代码。此外,,以避免不同平台的评测产生差异。最后,请不要在对应的题目讨论区中发布自己的题解,请发布到题解区域中,否则将处以删除或禁言的处罚。

海岛Blog 1059

A+B Problem II

A+B Problem II 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 I have a very simple problem for you. Given two integers A and B, your job is to calculate the Sum of A + B. A,B must be positi

祖国的小果abc的专栏 1160

A + B Problem

题目描述:A + B Problem输入:多组测试数据,第一行有两个小于1e9的整数,对这两个数求和,最后当EOF标志的时候结束。输出:对这两个数求和的结果样例输入:2 31 9样例输出:510其它:Just for try & test#define PB_ID 1 #include long a,b;int main(){    while(scanf("%ld

namgking的专栏 545

p1000 A+B Problem

A+B Problem Description Calculate a + b. Input Two integers a, b (0 <= a, b <= 10). Output Output a + b. Sample Input 1 1 2 Sample Output 1 3 这是各大OJ的看家题目了……计算两个数的和,且非高精度计算 但总要...

DYP_SimonGreenall的博客 316
下一篇: 采花
Lenicodes
博客等级 码龄8年 1粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值