zoukankan      html  css  js  c++  java
  • UVA 538

    UVA 538 - Balancing Bank Accounts

    题目链接

    题意:给定一些人的欠钱关系,要求在n-1次内还清钱,问方案

    思路:贪心,处理出每一个人最后钱的状态,然后直接每一个人都和最后一个人操作就可以

    代码:

    #include <cstdio>
    #include <cstring>
    #include <iostream>
    #include <string>
    #include <map>
    using namespace std;
    
    const int N = 25;
    
    int n, m, have[N];
    map<string, int> hash;
    string name[N];
    
    int main() {
    	int cas = 0;
    	while (~scanf("%d%d", &n, &m) && n || m) {
    		hash.clear();
    		memset(have, 0, sizeof(have));
    		for (int i = 1; i <= n; i++) {
    			cin >> name[i];
    			hash[name[i]] = i;
    		}
    		string a, b; int val;
    		while (m--) {
    			cin >> a >> b >> val;
    			int u = hash[a], v = hash[b];
    			have[u] += val;
    			have[v] -= val;
    		}
    		printf("Case #%d
    ", ++cas);
    		for (int i = 1; i < n; i++) {
    			if (have[i] < 0)
    				cout << name[i] << " " << name[n] << " " << -have[i] << endl;
    			else if (have[i] > 0)
    				cout << name[n] << " " << name[i] << " " << have[i] << endl;
    			have[n] -= have[i];
    		}
    		printf("
    ");
    	}
    	return 0;
    }


  • 相关阅读:
    I/O模型
    同步异步与协程
    GIL(全局解释器锁)
    解决pycharm启动慢
    操作系统发展史
    TCP和UDP
    粘包问题
    网络编程
    异常
    常用函数汇总
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/4014467.html
Copyright © 2011-2022 走看看