博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Codeforces Round #390 (Div. 2) - D
阅读量:6118 次
发布时间:2019-06-21

本文共 1988 字,大约阅读时间需要 6 分钟。

 

题目链接:http://codeforces.com/contest/754/problem/D

题意:给定n个区间,现在让你从这n个区间里面选k个区间,使得这k个区间的交的尽可能的大。

思路:参考HDU 5700区间交。枚举左端点,用multiset维护右端点,因为set自带排序,所以set的第一个元素就是当前最小的右端点,而枚举的i就是当前最大的左端点,然后更新答案。 本题的区间会取值会有负数,所以需要离散化一下。 另外也可以用线段树来实现。

#define _CRT_SECURE_NO_DEPRECATE#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;typedef long long int LL;const int MAXN = 3e5 + 10;vector
>G[MAXN];pair
p[MAXN];LL L[MAXN];int main(){//#ifdef kirito// freopen("in.txt", "r", stdin);// freopen("out.txt", "w", stdout);//#endif// int start = clock(); int n,k; while (~scanf("%d%d", &n,&k)){ for (int i = 0; i < MAXN; i++){ G[i].clear(); } for (int i = 0; i < n; i++){ scanf("%I64d%I64d", &p[i].first, &p[i].second); L[i] = p[i].first; } sort(L, L + n); int size = unique(L, L + n) - L; for (int i = 0; i < n; i++){ int idx = lower_bound(L, L + size, p[i].first) - L; G[idx].push_back(make_pair(p[i].second, i + 1)); } LL ans = 0; multiset
>se; for (int i = 0; i < size; i++){ for (int j = 0; j < G[i].size(); j++){ se.insert(G[i][j]); } while ((int)se.size()>k){ se.erase(se.begin()); } if ((int)se.size() == k && (se.begin()->first) >= L[i]){ ans =max( se.begin()->first - L[i]+1,ans); } } printf("%I64d\n", ans); if (ans == 0){ for (int i = 1; i <= k; i++){ printf("%d ", i); } } else{ se.clear(); for (int i = 0; i < size; i++){ for (int j = 0; j < G[i].size(); j++){ se.insert(G[i][j]); } while ((int)se.size()>k){ se.erase(se.begin()); } if ((int)se.size() == k&& se.begin()->first >= L[i] && (se.begin()->first - L[i] + 1) == ans){ for (multiset
>::iterator it = se.begin(); it != se.end(); it++){ printf("%d ", it->second); } break; } } } printf("\n"); }//#ifdef LOCAL_TIME// cout << "[Finished in " << clock() - start << " ms]" << endl;//#endif return 0;}

 

转载于:https://www.cnblogs.com/kirito520/p/6262396.html

你可能感兴趣的文章
Scroll Depth – 衡量页面滚动的 Google 分析插件
查看>>
Windows 8.1 应用再出发 - 视图状态的更新
查看>>
自己制作交叉编译工具链
查看>>
Qt Style Sheet实践(四):行文本编辑框QLineEdit及自动补全
查看>>
[物理学与PDEs]第3章习题1 只有一个非零分量的磁场
查看>>
深入浅出NodeJS——数据通信,NET模块运行机制
查看>>
onInterceptTouchEvent和onTouchEvent调用时序
查看>>
android防止内存溢出浅析
查看>>
4.3.3版本之引擎bug
查看>>
SQL Server表分区详解
查看>>
使用FMDB最新v2.3版本教程
查看>>
SSIS从理论到实战,再到应用(3)----SSIS包的变量,约束,常用容器
查看>>
STM32启动过程--启动文件--分析
查看>>
垂死挣扎还是涅槃重生 -- Delphi XE5 公布会归来感想
查看>>
淘宝的几个架构图
查看>>
Android扩展 - 拍照篇(Camera)
查看>>
JAVA数组的定义及用法
查看>>
充分利用HTML标签元素 – 简单的xtyle前端框架
查看>>
设计模式(十一):FACADE外观模式 -- 结构型模式
查看>>
iOS xcodebuile 自动编译打包ipa
查看>>