zoukankan      html  css  js  c++  java
  • 【习题 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;
    }
    
  • 相关阅读:
    karto 资料
    底盘运动学
    QT中搜索文件列表
    Qt中引入boost库
    AGV调度理论链接
    qt开发杂记
    C++代码读取ping的网络延时
    结构体解析数据
    QJson 的简单使用
    Vue中问题总结 与未解决问题总结
  • 原文地址:https://www.cnblogs.com/AWCXV/p/7881450.html
Copyright © 2011-2022 走看看