题意:

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. Python列表推导式玩法

    前言 列表做为python的基础,是必须学习的语法之一.一些基础的之前已经是反复温习和使用了,今天我们来学习它的进阶版-->列表推导式. 列表推导式: 优点:是将所有的值一次性加载到内存中,相比 ...

  2. 有了链路日志增强,排查Bug小意思啦!

    在工作中,相信大家最怕的一件事就是听到有人在工作群艾特你:某某功能报错啦... 然后你就得屁颠屁颠的去服务器看日志,日志量少还好点,多的话找起来太麻烦了.不太容易直接定位到关键地方. 东找找西找找,好 ...

  3. 通过trace分析优化其如何选择执行计划

    mysql5.6提供了对sql的跟踪trace,通过trace文件能够进一步了解为什么优化其选择执行计划a而不选b执行计划,帮助我们更好的理解优化其的行为. 使用方式:首先打开trace,设置格式为j ...

  4. ctfhub技能树—信息泄露—hg泄露

    打开靶机 查看页面信息 使用dvcs-ripper工具进行处理 ./rip-hg.pl -v -u http://challenge-cf630b528f6f25e2.sandbox.ctfhub.c ...

  5. 5.2 Spring5源码--Spring AOP源码分析二

    目标: 1. 什么是AOP, 什么是AspectJ 2. 什么是Spring AOP 3. Spring AOP注解版实现原理 4. Spring AOP切面原理解析 一. 认识AOP及其使用 详见博 ...

  6. SQL 语法速成手册

    本文针对关系型数据库的一般语法.限于篇幅,本文侧重说明用法,不会展开讲解特性.原理. 一.基本概念 数据库术语 数据库(database) - 保存有组织的数据的容器(通常是一个文件或一组文件). 数 ...

  7. C# 正则表达式 -- 复习

    符号解释: \ 特殊的字符,转义 ^ 匹配输入的字符串的开始位置 $ 匹配输入的字符串的结束位置 * 匹配0次或多次,等价于{0,} + 匹配1次或多次,等价于{1,} ? 匹配0次或1次,等价于{0 ...

  8. Java并发编程常识

    这是why的第 85 篇原创文章 写中间件经常要做两件事: 1.延迟加载,在内存缓存已加载项. 2.统计调用次数,拦截并发量. 就这么个小功能,团队里的人十有八九写错. 上面这句话不是我说的,是梁飞在 ...

  9. 浅析Asp.Net Core框架IConfiguration配置

    目录 一.建造者模式(Builder Pattern) 二.核心接口与配置存储本质 三.简易QueryString配置源实现 四.宿主配置与应用配置 一.建造者模式 为什么提建造者模式?在阅读.NET ...

  10. nodejs的调试debug

    目录 简介 开启nodejs的调试 调试的安全性 使用WebStorm进行nodejs调试 使用Chrome devTools进行调试 使用node-inspect来进行调试 其他的debug客户端 ...