Codeforces Round #401 (Div. 2) (solve 4 of 5)

A - Shell Game【暴力】

題意:

1.有三個坑,小球在其中一個坑。
2.執行 n 次交換後,告訴你最後小球的坑位 x
3.奇數次(1.3.5...) 交換前兩個坑,偶數次(2.4.6...) 交換後兩個坑。
4.數據範圍:1n2×1090x2

思路:

1.週期爲 6 ,所以對 n 做優化,n=n%6
2.暴力枚舉坑的位置012 ,每次模擬 n 次交換。

代碼:

#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
typedef pair<int,int> pii;
int n, x;
bool judge(int i) {
    int a[3];
    n %= 30;
    memset(a, 0, sizeof(a));
    a[i] = 1;
    for(int i = 1; i <= n; i++) {
        if(i % 2 == 0) swap(a[1], a[2]);
        else swap(a[0], a[1]);
    }

    if(a[x] == 1) return true;
    return false;
}
int main() {
    scanf("%d%d", &n, &x);
    for(int i = 0; i < 3; i++) {
        if(judge(i)) {
            cout << i << endl;
            return 0;
        }
    }
    return 0;
}

B.Game of Credit Cards【貪心】

題意:

1.這題的作者估計也是希望夏洛克和莫里亞蒂搞基的。
2.給你兩串長度爲 n 的數字,第一串是夏洛克的,第二串是莫里亞蒂的。
3.比對每一位,數字小的要被彈腦殼。
4.調整數字順序。求莫里亞蒂最少被彈次數,和夏洛克最多被彈次數。
(PS.因爲小莫比較受,所以應該少被彈)

思路:

1.問題一的貪心策略:從小到大sort兩人的數字。每一次攻夏拿出一個當前最小數字,小莫應該拿出儘可能小的不被彈的數字。
2.問題二的貪心策略:從大到小sort兩人的數字。每一次小莫拿出一個當前最大數字,攻夏應該拿出儘可能大的被彈的數字。

代碼:

#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
typedef pair<int,int> pii;
int a[1010], b[1010];
bool cmp(const int &a, const int &b) {
    return a > b;
}
int main() {
    int n;
    cin >> n;
    string s1, s2;
    cin >> s1 >> s2;
    for(int i = 0; i < n; ++ i) a[i] = s1[i] - '0';
    for(int i = 0; i < n; ++ i) b[i] = s2[i] - '0';
    sort(a, a + n);
    sort(b, b + n);
    int idx1 = 0, idx2 = 0;
    while(idx1 < n && idx2 < n) {
        if(a[idx1] > b[idx2]) idx2++;
        else idx1++, idx2++;
    }
    cout << n - idx1 << endl;
    idx1 = 0, idx2 = 0;
    sort(b, b + n, cmp);
    sort(a, a + n, cmp);
    int maxx = b[0];
    while(idx1 < n && a[idx1] >= maxx) idx1++;
    while(idx1 < n && idx2 < n) {
        if(b[idx2] > a[idx1]) idx1++, idx2++;
        else idx1++;
    }
    cout << idx2 << endl;
}

C - Alyona and Spreadsheet【DP】

戳上面鏈接直達題解BLOG

D - Cloud of Hashtags【貪心】

戳上面鏈接直達題解BLOG

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章