Codeforces 161 B. Discounts (贪心)
题目链接:http://codeforces.com/contest/161/problem/B
题意:
有n个商品和k辆购物车,给出每个商品的价钱c和类别t(1表示凳子,2表示铅笔),如果一辆购物车中有凳子,那么这辆购物车中最便宜的那个物品的价格能减少50%,问你如何放这些物品才能使总价钱最少。
思路:
简单贪心,判断凳子数量是否大于等于k行。
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
typedef pair <LL, int> P;
const int N = ;
LL a[N];
P val[N], val2[N];
LL inf = 1e9 + ;
vector <int> res[N];
int main()
{
int n, m;
scanf("%d %d", &n, &m);
int pos = , pos2 = , c;
for(int i = ; i <= n; ++i) {
scanf("%lld %d", a + i, &c);
if(c == ) {
val2[++pos2].first = a[i];
val2[pos2].second = i;
} else {
val[++pos].first = a[i];
val[pos].second = i;
}
}
sort(val + , val + pos + );
sort(val2 + , val2 + pos2 + );
double ans = ;
int f = ;
if(pos >= m) {
int i, j;
for(i = pos, j = m - ; j; --i, --j) {
ans += val[i].first * 1.0 / ;
res[++f].push_back(val[i].second);
}
++f;
for(; i >= ; --i) {
ans += val[i].first;
res[f].push_back(val[i].second);
}
for(i = pos2; i > ; --i) {
ans += val2[i].first;
res[f].push_back(val2[i].second);
}
if((val[].first >= val2[].first && pos2)) {
ans += val[].first;
ans += val2[].first*1.0 / ;
res[f].push_back(val[].second);
res[f].push_back(val2[].second);
} else if(pos2) {
ans += val2[].first;
ans += val[].first*1.0 / ;
res[f].push_back(val2[].second);
res[f].push_back(val[].second);
} else {
ans += val[].first*1.0 / ;
res[f].push_back(val[].second);
}
} else {
for(int i = pos; i; --i) {
ans += val[i].first * 1.0 / ;
res[++f].push_back(val[i].second);
}
int i, j;
for(i = pos2, j = pos + ; i && j <= m; --i, ++j) {
ans += val2[i].first;
res[++f].push_back(val2[i].second);
}
for(; i; --i) {
ans += val2[i].first;
res[f].push_back(val2[i].second);
}
}
printf("%.1f\n", ans);
for(int i = ; i <= m; ++i) {
printf("%d ", res[i].size());
for(int j = ; j < res[i].size(); ++j) {
printf("%d%c", res[i][j], j == res[i].size() - ? '\n': ' ');
}
}
return ;
}
Codeforces 161 B. Discounts (贪心)的更多相关文章
- codeforces 704B - Ant Man 贪心
codeforces 704B - Ant Man 贪心 题意:n个点,每个点有5个值,每次从一个点跳到另一个点,向左跳:abs(b.x-a.x)+a.ll+b.rr 向右跳:abs(b.x-a.x) ...
- CodeForces - 50A Domino piling (贪心+递归)
CodeForces - 50A Domino piling (贪心+递归) 题意分析 奇数*偶数=偶数,如果两个都为奇数,最小的奇数-1递归求解,知道两个数都为1,返回0. 代码 #include ...
- Codeforces 731B Coupons and Discounts(贪心)
题目链接 Coupons and Discounts 逐步贪心即可. 若当前位为奇数则当前位的下一位减一,否则不动. #include <bits/stdc++.h> using name ...
- Codeforces 161 D. Distance in Tree (树dp)
题目链接:http://codeforces.com/problemset/problem/161/D 题意: 给你一棵树,问你有多少对点的距离为k. 思路: dp[i][j]表示离i节点距离为j的点 ...
- CodeForces 176A Trading Business 贪心
Trading Business 题目连接: http://codeforces.com/problemset/problem/176/A Description To get money for a ...
- Codeforces Gym 100803C Shopping 贪心
Shopping 题目连接: http://codeforces.com/gym/100803/attachments Description Your friend will enjoy shopp ...
- Codeforces 486C Palindrome Transformation(贪心)
题目链接:Codeforces 486C Palindrome Transformation 题目大意:给定一个字符串,长度N.指针位置P,问说最少花多少步将字符串变成回文串. 解题思路:事实上仅仅要 ...
- Codeforces 1154D - Walking Robot - [贪心]
题目链接:https://codeforces.com/contest/1154/problem/D 题解: 贪心思路,没有太阳的时候,优先用可充电电池走,万不得已才用普通电池走.有太阳的时候,如果可 ...
- codeforces 735C Tennis Championship(贪心+递推)
Tennis Championship 题目链接:http://codeforces.com/problemset/problem/735/C ——每天在线,欢迎留言谈论. 题目大意: 给你一个 n ...
随机推荐
- HDU 1231 最大连续子序列
和前面两道题一样 不过这题要求输出子序列首尾的元素的值,而且如果所有元素都小于0的话,规定子序列的和为0,并输出整个序列的首尾元素. //#define LOCAL #include <iost ...
- VC++菜单
2.1 如何动态添加和删除菜单项 AppendMenu InsertMenu DeleteMenu ////////////////////////////////////////////////// ...
- BZOJ 1555 KD之死
贪心,按t+w排序维护不一定放到拖车上的大根堆. #include<iostream> #include<cstdio> #include<cstring> #in ...
- BZOJ 3391 Tree Cutting网络破坏
不想写. #include<iostream> #include<cstdio> #include<cstring> #include<cstdlib> ...
- 判断https
判断https <script> if(window.location.protocol=='https:'){ window.location.href='http://e.abchin ...
- 大数据时代的技术hive:hive介绍
我最近研究了hive的相关技术,有点心得,这里和大家分享下. 首先我们要知道hive到底是做什么的.下面这几段文字很好的描述了hive的特性: 1.hive是基于Hadoop的一个数据仓库工具,可以将 ...
- Php 笔记2-----手机端 与 php服务器的通信
对于 手机端 和 php服务器的通信,是不存在表单这一概念的 ,除非自己去实现, 所以通常情况下步骤是: 假定上传的是字符串. 1 手机端的流程是 把文件或者字符串,转化为 特定的流. 2 通过h ...
- Jersey搭建Restful服务器 on Ubuntu
自己试着在Ubuntu上搭建一个 1.首先安装eclipse和tomcat sudo apt-get install eclipse tomcat7 -y 2.把tomcat的group assign ...
- 开源堡垒机GateOne的安装、配置笔记
因为内部临时需要这么一套系统,所以搜搜查查,搞定了系统部署,使用pam认证的配置. 系统初始化是使用CentOS 6.5 Mini x64版本. 首先exports http_proxy和http ...
- java学习随笔--- 捣蛋vector
最近比较有时间啦,有时间搞下java,个人觉得学这门语言语法太多啦,不一一去学习啦,心血来潮,挂了个struct2的源代码,一入深似海啊,看得我天花缭乱,从最简单的开始吧 public static ...