背景

机房大佬掉大分了,乐悲。

题意

给你几个箱子和每个箱子里装有的东西 \(a\) 和对应的重量 \(w\),现在要让每个箱子里都装有一个东西,每次可以移动任意一个箱子中的任意一个东西,代价为它的重量,问最小代价。

分析

贪心。首先最终状态里所有箱子一定只有一个东西,那么对于所有装东西的箱子,若装有 \(x\) 个东西,那么一定要把它的 \(x-1\) 个东西拿走。

由于东西数量和箱子数量相等,那么我们无需考虑每个箱子中的东西该放到那些箱子里,因为空箱子的数量一定是符合的。

那么就把每个箱子中的东西统计出来,从小到大排序,每个箱子的代价就是前 \(x-1\) 个东西的重量之和。

Code

#include<bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
#include<ext/pb_ds/hash_policy.hpp>
#include<ext/pb_ds/trie_policy.hpp>
#include<ext/pb_ds/priority_queue.hpp>
#define int long long
using namespace std;
using namespace __gnu_pbds;
//gp_hash_table<string,int>mp2;
//__gnu_pbds::priority_queue<int,greater<int>,pairing_heap_tag> q;
inline int read()
{
int w=1,s=0;char ch=getchar();
while(!isdigit(ch)){if(ch=='-')w=-1;ch=getchar();}
while(isdigit(ch)){s=s*10+(ch-'0');ch=getchar();}
return w*s;
}
const int mod=998244353;
const int maxn=1e6+10;
int n;
int a[maxn],w[maxn];
vector<int> v[maxn];
int ans=0;
bool f[maxn];
signed main()
{
// freopen("xxx.in","r",stdin);
// freopen("xxx.out","w",stdout);
cin>>n;
for(int i=1;i<=n;i++)
{
a[i]=read();
f[a[i]]=1;
}
for(int i=1;i<=n;i++)w[i]=read();
for(int i=1;i<=n;i++)
{
v[a[i]].push_back(w[i]);
}
for(int i=1;i<=n;i++)
{
if(f[i])
{
sort(v[i].begin(),v[i].end());
for(int j=0;j<v[i].size()-1;j++)
{
ans+=v[i][j];
}
}
}
cout<<ans;
return 0;
}

题解:AT_abc360_c [ABC360C] Move It的更多相关文章

  1. Sicily 1151: 简单的马周游问题(DFS)

    这道题嘛,直接使用DFS搜索,然后莫名其妙地AC了.后来看了题解,说是move的顺序不同的话可能会导致超时,这时便需要剪枝,真是有趣.原来自己是误打误撞AC了,hhh.题解还有另一种解法是先把一条完整 ...

  2. Leetcode-283 Move Zeroes

    #283.   Move Zeroes Given an array nums, write a function to move all 0's to the end of it while mai ...

  3. Han Move(细节题)

    Problem 1609 - Han Move Time Limit: 1000MS   Memory Limit: 65536KB    Total Submit: 620  Accepted: 1 ...

  4. 【LeetCode题解】数组Array

    1. 数组 直观地看,数组(Array)为一个二元组<index, value>的集合--对于每一个index,都有一个value与之对应.C语言中,以"连续的存储单元" ...

  5. C#版 - Leetcode 306. 累加数 - 题解

    版权声明: 本文为博主Bravo Yeung(知乎UserName同名)的原创文章,欲转载请先私信获博主允许,转载时请附上网址 http://blog.csdn.net/lzuacm. C#版 - L ...

  6. 算法(第四版)C# 习题题解——1.4

    写在前面 整个项目都托管在了 Github 上:https://github.com/ikesnowy/Algorithms-4th-Edition-in-Csharp 这一节内容可能会用到的库文件有 ...

  7. NOIP2012题解

    NOIP2012题解 Day1 Vigenère 密码 vigenere 直接模拟就好了,对于那张表找找规律就很短了. #include<iostream> #include<cst ...

  8. 题解 P1312 【Mayan游戏】

    题面 过长已遮挡 题意 体面已经陈述题意(这题没有考语文阅读理解) 题解 ** 我还记得我曾经给自己找的锅,给某些人讲课的时候说过一句话:体面越长的题,越简单.** 这句话没有错,我会用接下来解决这道 ...

  9. 喵哈哈村的魔法考试 Round #3 (Div.2) 题解

    A 题解:保证一个三角形的话,得两边之和大于第三边才行,所以都拿来判一判就好了. #include <iostream> using namespace std; int main(){ ...

  10. 【CF653G】Move by Prime 组合数

    [CF653G]Move by Prime 题意:给你一个长度为n的数列$a_i$,你可以进行任意次操作:将其中一个数乘上或者除以一个质数.使得最终所有数相同,并使得操作数尽可能小.现在我们想要知道$ ...

随机推荐

  1. Android 13 - Media框架(18)- CodecBase

    关注公众号免费阅读全文,进入音视频开发技术分享群! 从这一节开始我们会回到上层来看ACodec的实现,在这之前我们会先了解ACodec的基类CodecBase.CodecBase.h 中除了声明有自身 ...

  2. Android 13 - Media框架(11)- MediaCodec(一)

    关注公众号免费阅读全文,进入音视频开发技术分享群! MediaCodec 是 Android 平台上音视频编解码的标准接口,无论是使用软解还是硬解都要通过调用 MediaCodec来完成,是学习 An ...

  3. AI 画图真刺激,手把手教你如何用 ComfyUI 来画出刺激的图

    目前 AI 绘画领域的产品非常多,比如 Midjourney.Dalle3.Stability AI 等等,这些产品大体上可以分为两类: 模型与产品深度融合:比如 Midjourney.Dalle3 ...

  4. kubernetes configmap配置方法

    configmap解释 在k8s运行期间会有一些依赖的配置文件,他们存在宿主机中的一个目录中或者代码里,如果配置放生变化,pod在另一台服务器启动,在没有这些配置的时候,可能会导致pod无法正常运行, ...

  5. kubenetes中的pod删除策略 级联删除与非级联删除

    StatefulSet 有状态应用[有状态应用] 有状态:StatefulSet - 集群节点之间的关系. - 数据不完全一致. - 实例之间不对等的关系. - 依靠外部存储的应用. - 通过dns维 ...

  6. iOS MonkeyDev 尝试体验(非越狱开发)

    一.前言 随着iOS系统的逐渐开放,iOS越狱需求的人越来越少,那么在非越狱系统上面开发越狱插件那将是一个不错的选择,在github上面发现一个开源的Xcode工程模板. 整合了越狱开发的工具.重签名 ...

  7. Windows平台git clone文件路径太长报错

    问题描述 在Windows下拉取一些比较大的开源项目经常会提示文件路径太长(filename too long),然后死活都不成功 解决办法 1.配置git git config --system c ...

  8. k8s——api

    api概述 api是k8s系统的重要部分,组件之间的所有操作和通信均由apiserver处理的rest api调用,大多数情况下,api定义和实现都符合标准的http rest格式,可以通过kubct ...

  9. golang 的 net/http 和 net/rpc 的区别, rpc 效率比 http 高?

    在Go语言中,net/http 和 net/rpc 是两个不同的包,它们分别用于实现不同的网络通信模式: net/http: net/http 包主要用于构建Web服务和客户端,它实现了HTTP协议, ...

  10. JavaSE 关键字和标识符

    目录 关键字 标识符 标识符命名规则 标识符命名规范 字面值 关键字 具有特殊含义的 命名时不可以与关键字重名 标识符 也就是名字,对类名,变量名称,方法名称,参数名称等修饰 标识符命名规则 以字母, ...