NEERC 1999 Advertisement /// oj22646
2024-09-06 10:42:30
题目大意:
输入k,n ;k为每位慢跑者最少应看到的广告牌数
接下来n行 描述第 i 位慢跑者的途径路段
输出需要设立的广告牌数 接下来每行为设立地点
Sample Input
5 10
1 10
20 27
0 -3
15 15
8 2
7 30
-1 -10
27 20
2 9
14 21
Sample Output
19
-5
-4
-3
-2
-1
0
4
5
6
7
8
15
18
19
20
21
25
26
27
题解:https://blog.csdn.net/shuangde800/article/details/7828537
#include<iostream>
#include<algorithm>
#include<stdio.h>
#include<stdlib.h>
#include<cstring>
using namespace std;
struct num
{
int a,b;
bool operator<(const num& p)const {
return b<p.b;
};
}jog[];
bool vis[];
int main()
{
int n,k;
while(~scanf("%d%d",&k,&n))
{
int st=,ed=,ans=;
for(int i=;i<n;i++)
{
int p,q; scanf("%d%d",&p,&q);
jog[i].a=min(p,q)+;
jog[i].b=max(p,q)+;
st=min(st,jog[i].a);
ed=max(ed,jog[i].b);
}
sort(jog,jog+n);
// for(int i=0;i<n;i++)
// printf("%d %d %d\n",jog[i].a-10000,jog[i].b-10000,jog[i].b-jog[i].a);
memset(vis,,sizeof(vis));
for(int i=;i<n;i++)
{
int len=jog[i].b-jog[i].a+;
if(len<=k)
{
for(int j=jog[i].a;j<=jog[i].b;j++)
if(!vis[j]) vis[j]=,ans++;
}
else
{
int cnt=;
for(int j=jog[i].a;j<=jog[i].b;j++)
if(vis[j]) cnt++;
if(cnt>=k) continue;
for(int j=jog[i].b;j>=jog[i].a;j--)
if(!vis[j])
{
vis[j]=; cnt++; ans++;
if(cnt>=k) break;
}
}
}
printf("%d\n",ans);
for(int i=st;i<=ed;i++)
if(vis[i]) printf("%d\n",i-);
printf("\n");
}
return ;
}
最新文章
- shiro权限管理框架与springmvc整合
- button与input[type=”button”]的区别
- 【jQuery EasyUI系列】 创建展开行明细编辑表单的CRUD应用
- PHP写入Txt
- python: 生成guid
- MySQL主从复制技术(纯干货)
- easy_painting
- 关于web测试收集
- RecyclerView详解
- hbase 问题整理
- 自定义控制台程序导出Dynamics 365实体信息到Excel中。
- java工具类 获取包下所有类
- 手动增加pe节并修改oep
- NodeJs针对Express框架配置Mysql进行数据库操作
- 3-安装hive
- CentOS下mysql数据库常用命令
- NodeJS开发环境配置
- 单元测试,模拟用户Get登陆,并携带登录后的token访问接口
- 从操作系统rm数据文件后,利用句柄与rman恢复的过程。(已验证)
- SQL Server Reporting Service 报错:报表服务器无法解密用于访问报表服务器数据库中的敏感数据或加密数据的对称密钥,必须还原备份密钥或删除所有加密的内容。