当前位置: 首页 > news >正文

UVa 538 Balancing Bank Accounts

题目描述

题目要求根据给定的交易记录,计算每个人的净收支,然后输出一组新的交易,使得所有人的账户归零。输出的交易数最多为n−1n-1n1条。金额必须为非负整数。

输入格式

每个测试用例第一行包含两个整数nnn2≤n≤202 \le n \le 202n20)和ttt1≤t≤10001 \le t \le 10001t1000)。接下来nnn行每行一个人名。然后ttt行,每行格式name1 name2 amount,表示name1name1name1支付amountamountamountname2name2name2。输入以0 0结束。

输出格式

对于每个测试用例,输出Case #i,然后输出若干行交易(格式同输入),每条交易金额非负。每个测试用例输出后跟一个空行。

样例

输入

2 1 Donald Dagobert Donald Dagobert 15 4 4 John Mary Cindy Arnold John Mary 100 0 0

输出

Case #1 Dagobert Donald 15 Case #2 Mary John 140 Cindy John 10 Arnold John 150

题目分析

本题的核心是计算每个人的净余额,然后通过n−1n-1n1条交易将所有余额归零。

净余额计算

对于每笔交易A B amount,表示AAA支付给BBBamountamountamount。因此:

  • AAA的余额减少amountamountamount
  • BBB的余额增加amountamountamount

最终,所有余额之和应为000

平衡策略

将所有人中净余额为正者视为“债主”,净余额为负者视为“债务人”。为了用n−1n-1n1条交易完成平衡,可以选取一个人作为“中间人”,例如最后一个人。其他所有人的净余额直接与中间人进行结算:

  • 若某人净余额为正,则中间人支付给该人。
  • 若某人净余额为负,则该人支付给中间人。

这样总共最多n−1n-1n1条交易。

复杂度分析

O(n+t)O(n + t)O(n+t)

代码实现

// Balancing Bank Accounts// UVa ID: 538// Verdict: Accepted// Submission Date: 2016-12-21// UVa Run Time: 0.030s//// 版权所有(C)2016,邱秋。metaphysis # yeah dot net#include<bits/stdc++.h>usingnamespacestd;intmain(intargc,char*argv[]){cin.tie(0);cout.tie(0);ios::sync_with_stdio(false);intn,t,cases=0,amount;string name1,name2;while(cin>>n>>t,n>0){map<string,int>money;string names[30];for(inti=1;i<=n;i++){cin>>names[i];money[names[i]]=0;}for(inti=1;i<=t;i++){cin>>name1>>name2>>amount;money[name1]-=amount;money[name2]+=amount;}cout<<"Case #"<<++cases<<'\n';for(inti=1;i<n;i++){if(money[names[i]]>0)cout<<names[i]<<' '<<names[n]<<' '<<money[names[i]]<<'\n';if(money[names[i]]<0)cout<<names[n]<<' '<<names[i]<<' '<<abs(money[names[i]])<<'\n';}cout<<'\n';}return0;}
http://www.jsqmd.com/news/1042647/

相关文章:

  • 深入解析S12 MSCAN模块:硬件保护、时钟配置与低功耗设计实战
  • 思源宋体终极指南:7种字重免费开源字体解决你的中文排版难题
  • RevokeMsgPatcher深度解密:Windows平台即时通讯软件二进制补丁完整技术手册
  • 大模型转型攻略:小白程序员轻松入门,收藏这份从零到精通的学习指南!
  • ThumbmarkJS架构解析:从工厂模式到组件管理的设计哲学
  • MPC555/556微控制器架构解析:PowerPC内核、IMB总线与关键外设实战
  • MC9S12KG128内存映射控制(MMCV4)详解:突破64KB限制的嵌入式开发实战
  • Numix图标主题与Numix Circle、Numix Square的完美组合方案
  • Beyond Compare 5密钥生成器:3种终极解决方案完整指南
  • 5分钟快速掌握Android设备终极优化:Universal Android Debloater完整指南
  • 构建MLflow+Kubeflow协同架构:实现企业级机器学习平台工程化
  • Photoshop图层导出革命:如何用脚本引擎将设计效率提升90倍
  • 2026郑州黄金回收靠谱推荐|收的顶领跑实测避坑全攻略 - 奢侈品回收测评
  • 告别物品混乱:5步掌握HomeBox家庭物品管理系统
  • 链路层:亲密的网络旅程(十七):PPP 的“调参”艺术与多车道合流——LCP 的深度调优、链路体检与多链路聚合
  • 终极指南:如何用Canvas编辑器解决传统富文本编辑器的5大痛点
  • 2026黔南放心贵金属回收,CCIC 中检授权收黄金回收铂金回收白银回收持证实体门店 - 中安检金银铂钻回收
  • 2026北京海淀区爱马仕LV回收人气口碑榜单|五家本地实测高人气门店汇总 - 逸程
  • MC68HC908JG16微控制器:振荡器与系统集成模块的深度解析与实战配置
  • MPC555/556系统配置与保护寄存器详解:从原理到实战避坑指南
  • 034、Superpowers 技能体系:核心技能详解与实战
  • 成为开放科学讲师:TOPS Open Science 101教学资格获取与课程组织完整指南 [特殊字符]
  • 终极指南:在macOS上高效运行Windows应用的专业解决方案
  • grunt-nw-builder高级功能:实现Windows、Mac和Linux三平台同时打包的终极指南
  • 2026南昌放心贵金属回收,CCIC 中检授权收黄金回收铂金回收白银回收持证实体门店 - 中安检金银铂钻回收
  • MC68HC908SR12 LVI与BRK模块:嵌入式系统电源监控与硬件调试实战
  • 如何扩展javascript-typescript-langserver:添加自定义语言功能完整指南
  • 2026北京海淀区爱马仕LV回收人气口碑榜单|本地实测高人气门店汇总 - 逸程
  • 终极指南:为OBS直播添加免费实时字幕的完整解决方案
  • 网上登报遗失声明怎么弄?网上登报遗失要多少钱?