• 【习题 6-7 UVA


    【链接】 我是链接,点我呀:)
    【题意】

    在这里输入题意

    【题解】

    模拟就好

    【代码】

    /*
    1.Shoud it use long long ?
    2.Have you ever test several sample(at least therr) yourself?
    3.Can you promise that the solution is right? At least,the main ideal
    4.use the puts("") or putchar() or printf and such things?
    5.init the used array or any value?
    6.use error MAX_VALUE?
    7.use scanf instead of cin/cout?
    */
    #include <bits/stdc++.h>
    using namespace std;
    
    const int N = 100;
    
    int n, m, Q;
    int rest[N + 10];
    pair<vector <int>, vector <int> >  v[N + 10];
    map <int, int> cnt[N+10];
    
    int main() {
    	#ifdef LOCAL_DEFINE
    		freopen("F:\c++source\rush_in.txt", "r", stdin);
    		freopen("F:\c++source\rush_out.txt", "w", stdout);
    	#endif
    	ios::sync_with_stdio(0), cin.tie(0);
    	int Kase = 0;
    	while (cin >> n && n) {
    		for (int i = 1; i <= n; i++) cin >> rest[i];
    		cin >> m;
    		for (int i = 1; i <= m; i++) {
    			v[i].first.clear(), v[i].second.clear();
    			cnt[i].clear();
    			int x;
    			cin >> x;
    			while (x != 0) {
    				if (x < 0) {
    					cnt[i][-x]++;
    					v[i].first.push_back(-x);
    				}
    				else {
    					v[i].second.push_back(x);
    				}
    				cin >> x;
    			}
    		}
    
    		cout << "Case " << ++Kase << ": ";
    		bool alive = true;
    		cin >> Q;
    		for (int i = 1; i <= Q; i++) {
    			bool ok = false;
    			for (int j = 1; j <= m; j++) {
    				bool ok1 = true;
    				for (int x : v[j].first) {
    					if (rest[x] < cnt[j][x]) ok1 = false;
    				}
    				if (ok1) {
    					for (int x : v[j].first) {
    						rest[x]--;
    					}
    					for (int x : v[j].second) {
    						rest[x]++;
    					}
    					ok = true;
    					break;
    				}
    			}
    			if (!ok) {
    				alive = ok;
    				cout << "dead after " << i-1 << " transitions" << endl;
    				break;
    			}
    		}
    		if (alive) {
    			cout << "still live after " << Q << " transitions" << endl;
    		}
    		cout << "Places with tokens:";
    		for (int i = 1; i <= n; i++)
    			if (rest[i])
    				cout << " " << i << " " << "(" << rest[i] << ")";
    		cout << endl << endl;
    	}
    	return 0;
    }
    
  • 相关阅读:
    jmeter_逻辑控制器
    Mysql-10 存储过程
    Mysql-9 视图
    NAS性能测试
    win系统定时任务设置
    服务端监控有哪些客户端链接了服务
    centos8 添加端口号
    centos8下安装gitlab服务
    【Unity】Galgame视觉小说游戏 其脚本解释器的一种实现
    【个人向】ctf比赛出的一道逆向游戏题——GameTime题解
  • 原文地址:https://www.cnblogs.com/AWCXV/p/7881450.html
Copyright © 2020-2023  润新知