zoukankan      html  css  js  c++  java
  • Codeforces Round #699 (Div. 2)

    Codeforces Round #699 (Div. 2)

    A Space Navigation

    int main() {
        IOS;
        for (cin >> _; _; --_) {
            int x, y; cin >> x >> y; string s; cin >> s;
            for (auto c : s)
                if (x > 0 && c == 'R') --x;
                else if (x < 0 && c == 'L') ++x;
                else if (y > 0 && c == 'U') --y;
                else if (y < 0 && c == 'D') ++y;
            cout << (x || y ? "NO
    " : "YES
    ");
        }
        return 0;
    }
    

    B New Colony

    按照题意模拟石头的下落过程, 反正数据小

    int main() {
        IOS;
        for (cin >> _; _; --_) {
            cin >> n >> k; VI h(n); m = -1;
            for (auto &i : h) cin >> i;
            rep (i, 1, k) {
                rep (j, 1, n - 1)
                    if (h[j] > h[j - 1]) { ++h[j - 1], m = j; break; }
                    else if (j == n - 1) { m = -1; break; }
                if (m == -1) break;
            }
            cout << (m > -1 ? m : -1) << '
    ';
        }
        return 0;
    }
    

    C Fence Painting

    弄个两个集合, 一个是必须要涂一次颜色i的集合, 一种是颜色i随便涂的集合

    把不能图的颜色放在将涂这两个集合内之前的模板就行

    int a[N], b[N], c[N], p[N], d[N];
     
    int main() {
        IOS;
        for (cin >> _; _; --_) {
            cin >> n >> m; vector<VI> col(n + 1);
            rep(i, 1, n) cin >> a[i], p[i] = 0;
            rep(i, 1, n) {
                cin >> b[i];
                if (a[i] == b[i]) p[b[i]] = i;
                else col[b[i]].pb(i);
            }
            rep(i, 1, m) {
                cin >> c[i];
                if (!col[c[i]].empty()) {
                    while (!col[0].empty()) d[col[0].back()] = col[c[i]].back(), col[0].pop_back();
                    d[i] = col[c[i]].back(); col[c[i]].pop_back(); p[c[i]] = d[i];
                } else if (p[c[i]]) {
                    while (!col[0].empty()) d[col[0].back()] = p[c[i]], col[0].pop_back();
                    d[i] = p[c[i]];
                }
                else col[0].pb(i);
            }
            bool f = 1;
            for (auto& i : col) if (!i.empty()) f = 0;
            if (!f) { cout << "NO
    "; continue; }
            cout << "YES
    "; rep(i, 1, m) cout << d[i] << ' '; cout << '
    ';
        }
        return 0;
    }
    

    D AB Graph

    奇数直接在两个点之前反复跳即可

    偶数要找3个点, d[a][b] = d[b][c]

    其他无解

    int main() {
        IOS;
        for (cin >> _; _; --_) {
            cin >> n >> k; bool f = 0;
            rep (i, 1, n) cin >> d[i] + 1;
            rep (i, 1, n) rep (j, i + 1, n) if (d[i][j] == d[j][i] && !f) {
                cout << "YES
    "; cout << i << ' ';
                rep (t, 1, k) cout << (t & 1 ? j : i) << ' ';
                cout << '
    '; f = 1;
            }
            if (f) continue;
            if (k & 1) {
                cout << "YES
    "; cout << 1 << ' ';
                rep (i, 1, k) cout << (i & 1 ? 2 : 1) << ' ';
                cout << '
    ';
            }
            else if (n < 3) { cout << "NO
    "; continue; }
            else {
                cout << "YES
    "; int a = 0, b = 1, c = 2;
                while (d[a + 1][b + 1] != d[b + 1][c + 1]) a = (a + 1) %  3, b = (b + 1) % 3, c = (c + 1) % 3;
                //既然到了这里, 那么就不存在 d[a][b] == d[b][a], 那么 d[a][b] = d[b][c], 那么必然 (d[b][a] = d[c][b]) != (d[a][b] = d[b][c])
                vector<int> t = {a + 1, b + 1, c + 1, b + 1};
                rep (i, 0, k) cout << t[(i + (k % 4 == 0)) % 4] << ' '; cout << '
    ';
            }
        }
        return 0;
    }
    
  • 相关阅读:
    Web前端学习第五天——————HTML篇.019页面布局练习
    1111
    开发者如何利用数据分析提高收入
    开发者进行广告合作的几大误区
    高仿人人Android梦想版终极源码发送(转)
    移动开发者如何获取免费流量
    Inno setup常用代码【收藏】
    Inno setup常用代码补充【收藏】
    QT for Window程序部署
    Inno Setup自定义卸载文件名称【收藏】
  • 原文地址:https://www.cnblogs.com/2aptx4869/p/14383661.html
Copyright © 2011-2022 走看看