CodeForces - 612D 思维
题意:
给你n个线段和一个整数k,你需要找出来所有能被任意k条线段同时覆盖的区间个数的最小值,并按从左到右的顺序输出每个区间。
题解:
对于题目输入的n个线段的左端点L,右端点R,把它们分开放在结构体里面。结构体的值为右端点或者左端点的值,如果这个点是右端点就标记为0,否则标记为1.
然后对结构体排序,如果结构体的值相等就把标记为0的结构体放在前面,否则就按照值从小到大排序
然后从0开始对结构体进行遍历,如果遇到右端点那么线段重合数量cnt加1,如果遇到左端点,那么肯定会有一个线段到达了使用的最右边界,就让cnt减1
具体见代码:
1 #include<cstdio>
2 #include<algorithm>
3 #include<cstring>
4 #include<cmath>
5 #include<string>
6 #include<iostream>
7 #include<cstdlib>
8 #include<queue>
9 #define N 1010000
10 #define INF 0x3f3f3f3f
11 #define MOD 100007
12 using namespace std;
13 struct node
14 {
15 int d,sign;
16 } e[2*N];
17 bool cmp(node q,node qq)
18 {
19 if(q.d==qq.d)
20 return q.sign<qq.sign;//0 1 ,0在前
21 return q.d<qq.d;
22 }
23 int lpos[N];
24 int rpos[N];
25 int main()
26 {
27 int cnt,n,k,l,r,le;
28 scanf("%d %d",&n,&k);
29 le=0;
30 for(int i=1; i<=n; i++)
31 {
32 scanf("%d %d",&l,&r);
33 e[le].d=l;
34 e[le++].sign=0;//左端点
35 e[le].d=r;
36 e[le++].sign=1;//右端点
37 }
38 sort(e,e+le,cmp);
39 int num=0;
40 cnt=0;//记录在此点以及之前左端点的出现次数
41 for(int i=0; i<le; i++)
42 {
43 if(!e[i].sign)
44 {
45 cnt++;
46 if(cnt==k)
47 lpos[num]=e[i].d;
48 }
49 else
50 {
51 cnt--;
52 if(cnt==(k-1))
53 rpos[num++]=e[i].d;
54 }
55 }
56 printf("%d\n",num);
57 for(int i=0; i<num; i++)
58 printf("%d %d\n",lpos[i],rpos[i]);
59 }
CodeForces - 612D 思维的更多相关文章
- Codeforces 424A (思维题)
Squats Time Limit: 1000MS Memory Limit: 262144KB 64bit IO Format: %I64d & %I64u Submit Statu ...
- Codeforces 1060E(思维+贡献法)
https://codeforces.com/contest/1060/problem/E 题意 给一颗树,在原始的图中假如两个点连向同一个点,这两个点之间就可以连一条边,定义两点之间的长度为两点之间 ...
- Queue CodeForces - 353D (思维dp)
https://codeforces.com/problemset/problem/353/D 大意:给定字符串, 每一秒, 若F在M的右侧, 则交换M与F, 求多少秒后F全在M左侧 $dp[i]$为 ...
- Codeforces 612D 前缀和处理区间问题
传送门:http://codeforces.com/problemset/problem/612/D (转载请注明出处谢谢) 题意: 给出数字n和k,n表示接下来将输入n个在x轴上的闭区间[li,ri ...
- codeforces 1244C (思维 or 扩展欧几里得)
(点击此处查看原题) 题意分析 已知 n , p , w, d ,求x , y, z的值 ,他们的关系为: x + y + z = n x * w + y * d = p 思维法 当 y < w ...
- CodeForces - 417B (思维题)
Crash Time Limit: 1000MS Memory Limit: 262144KB 64bit IO Format: %I64d & %I64u Submit Status ...
- CodeForces - 417A(思维题)
Elimination Time Limit: 1000MS Memory Limit: 262144KB 64bit IO Format: %I64d & %I64u Submit ...
- CodeForces 625A 思维
题意是说一个人喝酒 有两种办法 买塑料瓶的 a块钱 喝了就没了 或者是买玻璃瓶的b块钱 喝完还能卖了瓶子c块钱 求最多能喝多少瓶 在开始判断一次 a与b-c的关系 即两种方式喝酒的成本 如果a< ...
- Vladik and Complicated Book CodeForces - 811B (思维实现)
Vladik had started reading a complicated book about algorithms containing n pages. To improve unders ...
随机推荐
- Lniux 入门:03 用户及文件权限管理
1.1 实验内容 Linux 中创建.删除用户,及用户组等操作. Linux 中的文件权限设置. 1.2 实验知识点 Linux 用户管理 Linux 权限管理 通过第一节课程的学习,你应该已经知道, ...
- 技术基础 | Cassandra RBAC助你打击“虚拟海盗”,让他们对数据“战利品”望而不得
现如今,我们称虚拟世界里的海盗们为"黑客",他们所追寻的战利品就是在你数据库某处的数据. 而我们能够保证你的数据安全的工具之一,就是"Cassandra基于角色的访问 ...
- Java 使用URL类通过url下载网络资源
主要用到的类 地址类: URL http类: HttpURLConnection 输入流: InputStream 输出流: FileOutputStream 上代码 package com.demo ...
- 【Oracle】将数据库设为开机自启
由于某些特殊条件,需要将oracle数据库设置为开机自己,其实很简单 环境:oracle10gR2 1.修改/etc/oratab # This file is used by ORACLE util ...
- 主题模型值LDA
主题模型(topic model)是以非监督学习的方式对文集的隐含语义结构(latent semantic structure)进行聚类(clustering)的统计模型. 主题模型主要被用于自然语言 ...
- 03--Docker 容器和镜像常用命令
一.帮助命令 docker version docker info docker --help =====================镜像命令=========================== ...
- SpringMVC 通过commons-fileupload实现文件上传
目录 配置 web.xml SpringMVC配置文件 applicationContext.xml 文件上传 Controller 上传实现一 上传实现二 测试 依赖 配置 web.xml < ...
- Node.js躬行记(6)——自制短链系统
短链顾名思义是一种很短的地址,应用广泛,例如页面中有一张二维码图片,包含的是一个原始地址(如下所示),如果二维码中的链接需要修改,那么就得发代码替换掉. 原始地址:https://github.com ...
- 设计模式c++(3)——观察者模式
观察者模式定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖着都会收到通知并自动更新. 当两个对象之间松耦合,他们依然可以交互,但是不太清楚彼此的细节.观察者模式提供了一种对象设 ...
- Centos搭建spark
Centos搭建spark 一.spark介绍 二.spark安装前提 三.集群规划 四.spark安装 五.修改spark环境变量 六.修改spark-env.sh 七.修改slaves 八.将安装 ...