1. 程式人生 > 其它 >Acwing第46場周賽 2022-4-9

Acwing第46場周賽 2022-4-9

1.題目連結 4396.取石子

#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;

int n1, n2, k1, k2;

int main()
{
    cin >> n1 >> n2 >> k1 >> k2;
    
    if(n1 <= n2) puts("Second");
    else if(n1 > n2) puts("First");

    return 0;
}

2.題目連結 4397.卡牌

#include <iostream>
#include <cstring>
#include <algorithm>
#include <queue>

using namespace std;

const int N = 200010;

int n, m;
int a[N], b[N];
int ans;
priority_queue<int> q;

int main()
{
    cin >> n >> m;
    for (int i = 1; i <= n; i ++ )
    {
        scanf("%d", &a[i]);
        ans += a[i];
    }
    for (int i = 1; i <= n; i ++ ) scanf("%d", &b[i]);
    for (int i = 1; i <= n; i ++ )
    {
        int c = a[i] - b[i];  //差值越大越好
        q.push(c);
    }
   // cout << ans << endl;
    while(q.size() > m)
    {
        auto t = q.top();
        //cout << t << endl;
        if(t < 0) break;
        q.pop();
        ans -= t;
    }
    printf("%d\n", ans);
    return 0;
}

3.題目連結 4398.查詢字串

#include <iostream>
#include <cstring>
#include <algorithm>
#include <map>
#include <set>

using namespace std;

const int N = 10010;

char str[N][10];
map<int, string> heap;
map<string, int> mp;
map<string, int> hs;

void mp_insert(string str, int k)
{
    set<string> st;
    int len = str.size();
    for(int i = 0; i < len; i ++)
        for(int j = 1; j <= len - i; j ++)
            st.insert(str.substr(i, j));
    for(auto x : st) mp[x] ++, hs[x] = k;
}

int main()
{
    int n;
    cin >> n;
    for (int i = 1; i <= n; i ++ )
    {
        cin >> str[i];
        heap[i] = str[i];
        mp_insert(str[i], i);
    }
    //for(auto [a, b] : heap) cout << a << ' ' << b << endl;
    
    //cout << endl << endl << endl;
    
    //for(auto [a, b] : mp) cout << a << ' ' << b << endl;
    int m;
    cin >> m;
    while (m -- )
    {
        string s;
        cin >> s;
        if(mp.count(s))
        {
            int t = hs[s];
            cout << mp[s] << ' ' << heap[t] << endl;
        }
        else cout << "0 -" << endl;
    }
    
    return 0;
    
}