Codeforces Gym 100513D D. Data Center 前缀和 排序
D. Data Center
Time Limit: 20 Sec
Memory Limit: 256 MB
题目连接
http://codeforces.com/contest/560/problem/B
Description
The startup "Booble" has shown explosive growth and now it needs a new data center with the capacity of m petabytes. Booble can buy servers, there are n servers available for purchase: they have equal price but different capacities. The i-th server can store ai petabytes of data. Also they have different energy consumption — some servers are low voltage and other servers are not.
Booble wants to buy the minimum number of servers with the total capacity of at least m petabytes. If there are many ways to do it Booble wants to choose a way to maximize the number of low voltage servers. Booble doesn't care about exact total capacity, the only requirement is to make it at least m petabytes.
Input
The first line contains two integer numbers n and m (1 ≤ n ≤ 2·105, 1 ≤ m ≤ 2·1015) — the number of servers and the required total capacity.
The following n lines describe the servers, one server per line. The i-th line contains two integers ai, li (1 ≤ ai ≤ 1010, 0 ≤ li ≤ 1), where ai is the capacity, li = 1 if server is low voltage and li = 0 in the opposite case.
It is guaranteed that the sum of all ai is at least m
Output
Print two integers r and w on the first line — the minimum number of servers needed to satisfy the capacity requirement and maximum number of low voltage servers that can be bought in an optimal r servers set.
Print on the second line r distinct integers between 1 and n — the indices of servers to buy. You may print the indices in any order. If there are many solutions, print any of them.
Sample Input
4 10
3 1
7 0
5 1
4 1
Sample Output
2 1
4 2
HINT
题意
有个人要买电池,要求买尽量少的电池,使得满足容量大于等于m,并且使得低能耗的电池尽量多
题解:
先排个序,判断出得至少买多少个电池
然后开始暴力枚举低能耗的电池个数,肯定优先拿电量大的,然后扫一遍就好了
代码
- #include <cstdio>
- #include <cmath>
- #include <cstring>
- #include <ctime>
- #include <iostream>
- #include <algorithm>
- #include <set>
- #include <vector>
- #include <sstream>
- #include <queue>
- #include <typeinfo>
- #include <fstream>
- #include <map>
- #include <stack>
- typedef long long ll;
- using namespace std;
- //freopen("D.in","r",stdin);
- //freopen("D.out","w",stdout);
- #define sspeed ios_base::sync_with_stdio(0);cin.tie(0)
- #define test freopen("test.txt","r",stdin)
- const int maxn=;
- #define mod 1000000007
- #define eps 1e-9
- const int inf=0x3f3f3f3f;
- const ll infll = 0x3f3f3f3f3f3f3f3fLL;
- inline ll read()
- {
- ll x=,f=;char ch=getchar();
- while(ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}
- while(ch>=''&&ch<=''){x=x*+ch-'';ch=getchar();}
- return x*f;
- }
- //**************************************************************************************
- struct node
- {
- ll x,y,z;
- };
- bool cmp(node a,node b)
- {
- return a.x>b.x;
- }
- bool cmp1(node a,node b)
- {
- if(a.y==b.y)
- return a.x>b.x;
- return a.y>b.y;
- }
- node a[maxn];
- ll sum1[maxn];
- ll sum2[maxn];
- int main()
- {
- int n=read();
- ll m=read();
- for(int i=;i<=n;i++)
- a[i].x=read(),a[i].y=read(),a[i].z=i;
- sort(a+,a+n+,cmp);
- ll sum=;
- int num=;
- for(int i=;i<=n;i++)
- {
- num=i;
- sum+=a[i].x;
- if(sum>=m)
- break;
- }
- sort(a+,a+n+,cmp1);
- int flag=;
- for(int i=;i<=n;i++)
- if(a[i].y!=)
- {
- flag=i;
- break;
- }
- int num1=,num2=;
- if(flag==)
- flag=n+;
- for(int i=;i<flag;i++)
- {
- sum1[num1]=sum1[num1-]+a[i].x;
- num1++;
- }
- for(int i=flag;i<=n;i++)
- {
- sum2[num2]=sum2[num2-]+a[i].x;
- num2++;
- }
- for(int i=num;i>=;i--)
- {
- if(sum1[i]+sum2[num-i]>=m)
- {
- cout<<num<<" "<<i<<endl;
- for(int j=;j<=i;j++)
- cout<<a[j].z<<" ";
- for(int j=flag;j<flag+num-i;j++)
- cout<<a[j].z<<" ";
- cout<<endl;
- return ;
- }
- }
- }
Codeforces Gym 100513D D. Data Center 前缀和 排序的更多相关文章
- Codeforces Gym 100637A A. Nano alarm-clocks 前缀和处理
A. Nano alarm-clocks Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100637/p ...
- Codeforces Gym 100637A A. Nano alarm-clocks 前缀和
A. Nano alarm-clocks Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100637/p ...
- Codeforces Round #296 (Div. 1) C. Data Center Drama 欧拉回路
Codeforces Round #296 (Div. 1)C. Data Center Drama Time Limit: 2 Sec Memory Limit: 256 MBSubmit: xx ...
- Codeforces 950.E Data Center Maintenance
E. Data Center Maintenance time limit per test 1 second memory limit per test 512 megabytes input st ...
- Codeforces gym 101343 J.Husam and the Broken Present 2【状压dp】
2017 JUST Programming Contest 2.0 题目链接:Codeforces gym 101343 J.Husam and the Broken Present 2 J. Hu ...
- Codeforces Gym H. Hell on the Markets 贪心
Problem H. Hell on the MarketsTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vj ...
- CodeForces 816B Karen and Coffee(前缀和,大量查询)
CodeForces 816B Karen and Coffee(前缀和,大量查询) Description Karen, a coffee aficionado, wants to know the ...
- Data Center手册(4):设计
基础架构 拓扑图 Switching Path L3 routing at aggregation layer L2 switching at access layer L3 switch融合了三种功 ...
- Data Center手册(2): 安全性
有个安全性有下面几种概念: Threat:威胁 Vulnerability: 安全隐患 Attack: 攻击 有关Threat 常见的威胁有下面几种 DoS(Denial of Service拒绝服务 ...
随机推荐
- 解决Jsoup网页抓取过程中需要cookie的问题
最近在做城觅网的信息抓取,发现城觅网上海与北京的url是一样的.那怎样才确定信息的来源呢?折腾了半天,才发现城觅网是使用cookie的,如果你把网站的cookie禁用了,就无法在上海与北京之间切换了. ...
- 五分钟solr4.5教程(搭建、运行)
环境要求 jdk1.6及以上版本 solr发布版本 下载地址 http://lucene.apache.org/solr/mirrors-solr-latest-redir.html? 启动solr ...
- Visual Studio 2010中创建ASP.Net Web Service
转自:http://blog.csdn.net/xinyaping/article/details/7331375 很多人在论坛里说,在Visual Studio 2010中不能创建“ASP.Net ...
- 擦亮自己的眼睛去看SQLServer之简单Select(转)
摘要:这篇文章主要和大家讨论几乎所有人都熟悉,但不少人又陌生的一条select语句. 这篇文章主要和大家讨论几乎所有人都熟悉,但不少人又陌生的一条select语句.不知道大家有没有想过到底是什么东西让 ...
- Cloudera的安装
To enable these parts of the tutorial, choose one of the following options: To use Cloudera Express ...
- Activity的活动周期
Android 使用task来管理Activity.是一个栈的形式.遵循后进先出原则. Activity的四种状态: 运行状态(用户可以操作该Activity).暂停状态(用户可见该Activity, ...
- 【和我一起学python吧】Python解释执行原理
这里的解释执行是相对于编译执行而言的.我们都知道,使用C/C++之类的编译性语言编写的程序,是需要从源文件转换成计算机使用的机器语言,经过链接器链接之后形成了二进制的可执行文件.运行该程序的时候,就可 ...
- [LeetCode] Add Digits (a New question added)
Given a non-negative integer num, repeatedly add all its digits until the result has only one digit. ...
- ESXI安装
1.设置从USB启动 按DEL进入BIOS设置 参考http://www.upanok.com/jiaocheng/68.html 先插入USB,在选择ADVANCAED BIOS FEATURES ...
- FLEX实现两侧边栏固定中间自适应布局
<style type="text/css"> #outer{ display: flex; width: 100%; flex-flow: row nowrap; } ...