题意:

t组输入,你有n个数,还有k个朋友,每一个朋友需要wi个数。意思就是你要给第i个朋友分配wi个数,输入保证w1+w2+...+wk=n

一个朋友的兴奋值是你分配给他的数中最大值加上最小值的和(如果某个朋友只有一个数,那最小值和最大值都是一样的)。

题解:

首先对于只需求一个数的朋友,我们应该先处理,给他分配最大的数给他,因为这样这些大数会被加两遍。

然后我们安排剩下的人。我们知道一个人的贡献只和最大值最小值有关,中间那些是什么并不关心,所以我们从拿的最多的那个人开始,因为当前剩下的数中,最小和最大的那两个数肯定是要被计算的,所以我们把这两个数给到这个人,中间的话我们考虑贪心,把剩下尽可能小的数尽可能给他。

代码:

#include <stdio.h>
#include <string.h>
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
const int maxn=2e5+10;
#define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
ll v[maxn],w[maxn];
int main()
{
ll t;
scanf("%I64d",&t);
while(t--)
{
ll n,k,ans=0;
scanf("%I64d%I64d",&n,&k);
for(ll i=0; i<n; ++i)
{
scanf("%I64d",&v[i]);
}
sort(v, v + n);//����
int t = n-1;
for(ll i=0;i<k;++i)
{
scanf("%I64d",&w[i]);
if(w[i]==1)
{
ans=ans+2*v[t];
//printf("%I64d***\t",ans);
t--;
}
}
// for(int i=0;i<k;++i)
// {
//
// else
// {
// break;
// }
// }
/*
for (int i = 0; i < k; i++)
{
cin >> w[i];
if (w[i] == 1)
{
ans += v[t] * 2;//���Ϊ1������䵱ǰ����ֵ
t--;//�������ֵ���±�
}
}
*/
sort(w, w + k);//����
//int y = k - temp;
int l = 0;
for (int i = k-1; i>=0; i--) //�ȷ���b[i]���ֵ��������ȥ������С��ֵ��
{
if (w[i] != 1)
{
ans = ans + v[t] + v[l];//���ϵ�ǰ��С��ֵ�͵�ǰ����ֵ
l = l + (w[i] - 1);//������Сֵ���±�
t--;//�������ֵ���±�
} }
cout << ans << endl;
/*
for(ll i=0;i<k;++i)
{
scanf("%I64d",&w[i]);
}
sort(v,v+n);
sort(w,w+k);
ll sum=0;
ll start=0,i,j;
n--;
for(i=0;i<k;++i)
{
if(w[i]==1)
{
sum=sum+2*v[n];
//printf("%I64d***\n",sum);
n--;
}
else
{
break;
}
}
for(j=k-1;j>=i;--j)
{
sum=sum+v[start]+v[n];
start+=(w[i]-1);
n--;
}
printf("%I64d\n",sum);
*/
}
return 0;
}

Codeforces Round #652 (Div. 2) C. RationalLee 贪心的更多相关文章

  1. Codeforces Round #652 (Div. 2) C. RationalLee(贪心)

    题目链接:https://codeforces.com/contest/1369/problem/C 题意 将 $n$ 个数分给 $k$ 个人,每个人分 $w_i$ 个数($\sum_{i = 1}^ ...

  2. Codeforces Round #652 (Div. 2) E. DeadLee 贪心

    题意: 派会上有n种食物,每种食物有wi份.有m个朋友,每一个朋友有两种他喜欢吃的食物xi,yi.你需要判断他的朋友是否都能吃到食物.如果都能吃到食物,那么要输出朋友来的顺序,不能的话输出" ...

  3. Codeforces Round #652 (Div. 2) E. DeadLee(贪心)

    题目链接:https://codeforces.com/contest/1369/problem/E 题意 Lee 有 $n$ 种不同种类的食物和 $m$ 个朋友,每种食物有 $w_i$ 个,每个朋友 ...

  4. Codeforces Round #202 (Div. 1) A. Mafia 贪心

    A. Mafia Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/348/problem/A D ...

  5. Codeforces Round #382 (Div. 2)B. Urbanization 贪心

    B. Urbanization 题目链接 http://codeforces.com/contest/735/problem/B 题面 Local authorities have heard a l ...

  6. Codeforces Round #164 (Div. 2) E. Playlist 贪心+概率dp

    题目链接: http://codeforces.com/problemset/problem/268/E E. Playlist time limit per test 1 secondmemory ...

  7. Codeforces Round #180 (Div. 2) B. Sail 贪心

    B. Sail 题目连接: http://www.codeforces.com/contest/298/problem/B Description The polar bears are going ...

  8. Codeforces Round #192 (Div. 1) A. Purification 贪心

    A. Purification Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/329/probl ...

  9. Codeforces Round #274 (Div. 1) A. Exams 贪心

    A. Exams Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/480/problem/A Des ...

随机推荐

  1. Hbase RIT故障修复

    业务场景: RocketMQ+Storm+Hbase 组件版本: RocketMQ:3.4.6 Storm:1.2.1 Hbase:1.2.1 1. 问题描述 4月15号早上发现业务系统前一天数据量明 ...

  2. linux线程数限制与zabbix监控

    Linux最大线程数限制及当前线程数查询 最大线程数计算方式: n = total_memory/128k; Linux用户线程数限制而导致的程序异常为 java.lang.OutOfMemoryEr ...

  3. 【Linux】fio测试读写速度

    需要安装fio yum install fio -y 有很多依赖包     FIO用法: 随机读:(可直接用,向磁盘写一个2G文件,10线程,随机读1分钟,给出结果) fio -filename=/h ...

  4. 【Python】用字母生成图像

    用字母生成图像会用到matplotlib.pyplot库 所以需要安装这个库 pip install matplotlib 等待安装完成即可 ps:由于网络原因,会出现多次的timeout,可以使用国 ...

  5. 基础练习(上) - 蓝桥杯(Python实现)

    闰年判断: 题目: 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 给定一个年份,判断这一年是不是闰年. 当以下情况之一满足时,这一年是闰年: 1. 年份是4的倍数而不是100的倍数 ...

  6. library cache pin解决方法

    library cache pin大部分都是因为编译存储过程造成的 查找造成问题的数据库对象(一般为存储过程) SELECT * FROM v$session_wait WHERE event = ' ...

  7. C# 中的动态类型

    翻译自 Camilo Reyes 2018年10月15日的文章 <Working with the Dynamic Type in C#> [1] .NET 4 中引入了动态类型.动态对象 ...

  8. 写给 Linux 初学者的一封信

    大家好,我是肖邦. 这篇文章是写给 Linux 初学者的,我会分享一些作为初学者应该知道的一些东西,这些内容都是本人从事 Linux 开发工作多年的心得体会,相信会对初学者有所帮助.如果你是 Linu ...

  9. 一个非常棒的Go-Json解析库

    json是一种数据格式,经常被用作数据交换,页面展示,序列化等场景,基本每种语言都有对应的json解析框架,Go语言也不例外,并且内置了json库,基本能够满足一些普通开发场景,但有些复杂场景下就不太 ...

  10. navicat premium 11.0.17 破解版

    下载地址: 链接:https://pan.baidu.com/s/1zBoKRAaQZb2p2weelJpKMQ       提取码:b8dd 一款功能强大的数据库管理工具Navicat Premiu ...