当前位置:网站首页>1324: [example 6.6] integer interval
1324: [example 6.6] integer interval
2022-07-07 10:32:00 【A program ape who beats the keyboard violently】
1324:【 example 6.6】 Integer interval
The time limit : 1000 ms Memory limit : 65536 KB
Submission number : 10710 Passing number : 6431
【 Title Description 】
Please program to complete the following tasks :
1. Read the number of closed intervals and their descriptions ;
2. Find a set with the least number of elements , So that for each interval , At least one integer belongs to the set , Output the number of elements of the collection .
【 Input 】
The first line contains the number of intervals nn,1≤n≤100001≤n≤10000, Next nn That's ok , Each line contains two integers a,ba,b, Separated by a space ,0≤a≤b≤100000≤a≤b≤10000, They are the start and end values of an interval .
【 Output 】
The number of set elements in the first line , For each interval, at least one integer belongs to the set , And the set contains the least number of elements .
【 sample input 】
4
3 6
2 4
0 2
4 7
【 sample output 】
2
【 Algorithm analysis 】
Algorithm model : to n Closed interval [ai,bi], Choose as few points as possible on the number axis , Make at least one point in each interval .
Algorithm : First click b1<=b2<=...<=bn Sort . Mark the right end of the current interval every time n, And move the current interval pointer to the right , Until the current interval does not contain n, Repeat the above operation .
【AC Code 】
#include<algorithm>
#include<math.h>
#include<stdio.h>
#include<string.h>
#include<iomanip>
#include<iostream>
#include<map>
#include<queue>
#include<string>
#include<vector>
using namespace std;
const int N=1e4+10;
inline int fread()
{
char ch=getchar();
int n=0,m=1;
while(ch<'0' or ch>'9')
{
if(ch=='-')m=-1;
ch=getchar();
}
while(ch>='0' and ch<='9')n=(n<<3)+(n<<1)+ch-48,ch=getchar();
return n*m;
}
void fwrite(int n)
{
if(n>9)fwrite(n/10);
putchar(n%10+'0');
}
int n,a[N],b[N],ans,m;
void qsort(int n,int m)// Multi keyword quick sorting
{
int i=n,j=m,mid=b[n+m>>1],mid1=a[n+m>>1];
while(i<=j)
{
while(b[i]<mid or(b[i]==mid and a[i]<mid1))i++;
while(b[j]>mid or(b[j]==mid and a[j]>mid1))j--;
if(i<=j)swap(b[i],b[j]),swap(a[i],a[j]),i++,j--;
}
if(n<j)qsort(n,j);
if(i<m)qsort(i,m);
}
signed main()
{
n=fread();
for(int i=1;i<=n;i++)a[i]=fread(),b[i]=fread();
qsort(1,n);
for(int i=1,j=-1;i<=n;i++)// While initializing the loop variable , initialization j
{// Make j=-1 You can make the operation of the first interval the same as that of other intervals
if(j>=a[i])continue;// If the current interval contains marked points , Just skip.
ans++,j=b[i];// Update marked points
}
fwrite(ans);
return 0;
}
The time limit : 1000 ms Memory limit : 65536 KB
Submission number : 10710 Passing number : 6431
【 Title Description 】
Please program to complete the following tasks :
1. Read the number of closed intervals and their descriptions ;
2. Find a set with the least number of elements , So that for each interval , At least one integer belongs to the set , Output the number of elements of the collection .
【 Input 】
The first line contains the number of intervals nn,1≤n≤100001≤n≤10000, Next nn That's ok , Each line contains two integers a,ba,b, Separated by a space ,0≤a≤b≤100000≤a≤b≤10000, They are the start and end values of an interval .
【 Output 】
The number of set elements in the first line , For each interval, at least one integer belongs to the set , And the set contains the least number of elements .
【 sample input 】
4
3 6
2 4
0 2
4 7
【 sample output 】
2
【 Algorithm analysis 】
Algorithm model : to n Closed interval [ai,bi], Choose as few points as possible on the number axis , Make at least one point in each interval .
Algorithm : First click b1<=b2<=...<=bn Sort . Mark the right end of the current interval every time n, And move the current interval pointer to the right , Until the current interval does not contain n, Repeat the above operation .
【AC Code 】
#include<algorithm>
#include<math.h>
#include<stdio.h>
#include<string.h>
#include<iomanip>
#include<iostream>
#include<map>
#include<queue>
#include<string>
#include<vector>
using namespace std;
const int N=1e4+10;
inline int fread()
{
char ch=getchar();
int n=0,m=1;
while(ch<'0' or ch>'9')
{
if(ch=='-')m=-1;
ch=getchar();
}
while(ch>='0' and ch<='9')n=(n<<3)+(n<<1)+ch-48,ch=getchar();
return n*m;
}
void fwrite(int n)
{
if(n>9)fwrite(n/10);
putchar(n%10+'0');
}
int n,a[N],b[N],ans,m;
void qsort(int n,int m)// Multi keyword quick sorting
{
int i=n,j=m,mid=b[n+m>>1],mid1=a[n+m>>1];
while(i<=j)
{
while(b[i]<mid or(b[i]==mid and a[i]<mid1))i++;
while(b[j]>mid or(b[j]==mid and a[j]>mid1))j--;
if(i<=j)swap(b[i],b[j]),swap(a[i],a[j]),i++,j--;
}
if(n<j)qsort(n,j);
if(i<m)qsort(i,m);
}
signed main()
{
n=fread();
for(int i=1;i<=n;i++)a[i]=fread(),b[i]=fread();
qsort(1,n);
for(int i=1,j=-1;i<=n;i++)// While initializing the loop variable , initialization j
{// Make j=-1 You can make the operation of the first interval the same as that of other intervals
if(j>=a[i])continue;// If the current interval contains marked points , Just skip.
ans++,j=b[i];// Update marked points
}
fwrite(ans);
return 0;
}
边栏推荐
- BigDecimal value comparison
- 1324:【例6.6】整数区间
- BUUCTF---Reverse---reverse1
- HAL库配置通用定时器TIM触发ADC采样,然后DMA搬运到内存空间。
- 【acwing】786. Number k
- leetcode-304:二维区域和检索 - 矩阵不可变
- TypeScript 接口继承
- Trajectory planning for multi-robot systems: Methods and applications 综述阅读笔记
- JMeter loop controller and CSV data file settings are used together
- 555电路详解
猜你喜欢
无法打开内核设备“\\.\VMCIDev\VMX”: 操作成功完成。是否在安装 VMware Workstation 后重新引导? 模块“DevicePowerOn”启动失败。 未能启动虚拟机。
CAS机制
成为优秀的TS体操高手 之 TS 类型体操前置知识储备
ThreadLocal会用可不够
Appx code signing Guide
使用U2-Net深层网络实现——证件照生成程序
Adb 实用命令(网络包、日志、调优相关)
搭建物联网硬件通信技术几种方案
【二开】【JeecgBoot】修改分页参数
Talking about the return format in the log, encapsulation format handling, exception handling
随机推荐
[homework] 2022.7.6 write your own cal function
Some superficial understanding of word2vec
.NET配置系统
php \n 换行无法输出
Multisim--软件相关使用技巧
基于HPC场景的集群任务调度系统LSF/SGE/Slurm/PBS
1323:【例6.5】活动选择
JMeter about setting thread group and time
Application of OpenGL gllightfv function and related knowledge of light source
CSAPP Bomb Lab 解析
Hdu-2196 tree DP learning notes
BUUCTF---Reverse---reverse1
STM32 Basics - memory mapping
Appx code signing Guide
CC2530 ZigBee iar8.10.1 environment construction
Elegant controller layer code
ThreadLocal会用可不够
宁愿把简单的问题说一百遍,也不把复杂的问题做一遍
leetcode-303:区域和检索 - 数组不可变
串口通讯继电器-modbus通信上位机调试软件工具项目开发案例