首页 > 其他分享 >abc323D 合并泥巴

abc323D 合并泥巴

时间:2024-03-09 10:12:20浏览次数:26  
标签:int 合并 abc323D ans 泥巴 define mp

题面:有n种泥巴,第i种有c[i]块,大小为s[i]。每次操作可以选择2块大小同为x的泥巴,将其合并成1块大小为2x的泥巴。操作次数不限,问最终至少有多少块泥巴?
范围:n<=1E5; s[i],c[i]<=1E9

思路:贪心,从小到大,能合并就合并,结果肯定是最少的。注意map的使用,如何实现边遍历边删除。

#include <bits/stdc++.h>
using namespace std;
#define int long long
#define rep(i,a,b) for(int i=a; i<=b; i++)
#define per(i,a,b) for(int i=b; i>=a; i--)

void solve() {
    int n;
    cin >> n;
    map<int,int> mp;
    rep(i,1,n) {
        int s, c;
        cin >> s >> c;
        mp[s] += c;
    }
    int ans = 0;
    while (!mp.empty()) {
        auto [k,v] = *mp.begin();
        mp.erase(mp.begin());
        if (v > 1)
            mp[k*2] += v / 2;
        ans += v % 2;
    }
    cout << ans << "\n";
}

signed main() {
    cin.tie(0)->sync_with_stdio(0);
    int t = 1;
    while (t--) solve();
    return 0;
}

标签:int,合并,abc323D,ans,泥巴,define,mp
From: https://www.cnblogs.com/chenfy27/p/18062302

相关文章

  • 解决easyexcel合并单元格数组求和重复问题
    背景EasyExcel(根据条件动态合并单元格的重复数据))_Violet-CSDN博客_easyexcel动态合并单元格现有的订单导出是使用的easyExcel完成的.对于相同单元格的合并是自定义的策略,问题是对于重复单元格的值会合并,表格求和时值会虚高现需要对合并格做修改,做到值只有一个。思路sheet合并......
  • EasyExcel合并行处理并优化
    业务场景由于业务需要导出如下图中订单数据和订单项信息,而一个订单对应多个订单项,所以会涉及到自定义合并行 1.简单处理项目使用的EasyExcel,经查找发现Excel种有个AbstractMergeStrategy抽象类,可以用于合并单元格。于是先简单的写一个工具类实现根据数据自定义合并单元行,基本......
  • spNet_旧项目升级_Startup_Program合并
    Program.cs和Startup.cs合并成Program.cs合并Startup.cs到Program.cs:将Startup.cs中的ConfigureServices方法中的代码移动到Program.cs中varbuilder=WebApplication.CreateBuilder(args);之后。将Startup.cs中的Configure方法中的代码移动到varapp=builder.Build();之......
  • 使用 LVM 将多个硬盘合并,解决 /home 目录容量不足问题
    使用LVM将多个硬盘合并,解决/home目录容量不足问题误伤这又何妨于2023-11-0821:38:42发布阅读量698收藏点赞数11文章标签:5G运维版权你是否有这样一个难题,由于在安装系统时仅仅给了/home目录100G硬盘大小,但过了一段时间,发现“哎,100G不够用了,当初怎么不多分点呢。”你......
  • 使用python编程实现多个csv文件数据的合并和输出
    具体代码importpandasaspdimportosdf01=pd.read_csv("D:\\12140\\Desktops\\111\\t11.csv",encoding='utf-8',dtype='str')df02=pd.read_csv("D:\\12140\\Desktops\\111\\t12.csv",encoding='utf-......
  • 617. 合并二叉树 c
    /***Definitionforabinarytreenode.*structTreeNode{*intval;*structTreeNode*left;*structTreeNode*right;*};*/structTreeNode*mergeTrees(structTreeNode*root1,structTreeNode*root2){if(!root1&&!roo......
  • LeetCode75 1768.交替合并字符串
    1768.交替合并字符串https://leetcode.cn/problems/merge-strings-alternately/description/?envType=study-plan-v2&envId=leetcode-75publicStringmergeAlternately(Stringword1,Stringword2){intlen1=word1.length();intlen2=word2.length()......
  • python-合并大型Excel
    使用openpyxl库实在是太慢,使用openpyxl的只读模式又需要excel的准确尺寸信息,但是每个excel的尺寸都不一样。我使用zipfile解压excel文件,直接读取xml文件进行合并:importosfromopenpyxlimportload_workbookfromopenpyxlimportWorkbookimportzipfileimportretotal_......
  • 由区间合并->离散化
    `#include<iostream>#include<cstring>#include<vector>#include<algorithm>usingnamespacestd;typedefpair<int,int>PII;//数对type-类型define-定义pair-一对constintN=300......
  • 合并与分离及分离借形
    合并ctrl+j(join)其中,当选择多个物体时,-Selected选中项,是橙红色-Active活动项,橙黄色合并的方向为:Selected->Active分离选中一部分顶点分离编辑模式下,Ctrl+L(Link)选中相连项。拆分选中一部分顶点拆分,但仍属于同一物体。分离借形一种常见的手法S......