9.8 度小满笔试 50min AK

1、模拟

#include <bits/stdc++.h>
using namespace std;
#define int long long
signed main() {
    int n, k;
    cin >> n >> k;
    vector<char> v(n);
    vector<int> idxs;
    idxs.push_back(0);
    int cnt = 0;
    for(int i = 0; i < n; ++i) {
        cin >> v[i];
        if(v[i] == 'A') {
            idxs.push_back(i);
            ++cnt;
        }
    }
    int ans = n * (k / cnt); 
    if(k % cnt) {
        ans += idxs[k % cnt] + 1;
    }
    else {
        ans -= (n - idxs.back() - 1);
    }
    cout  << ans;
}

2、深搜

#include <bits/stdc++.h>
using namespace std;
#define int long long
vector<vector<int>> mp;
vector<int> color;
const int mod = 1e9 + 7;
int dfs(int cur) {
    if(mp[cur].size() == 0) return 1;
    int res{};
    if(color[cur] == 1) {
        for(auto child : mp[cur]) {
            res += dfs(child);
        }
    }
    else {
        res = 1;
        for(auto child : mp[cur]) {
            res = (res * dfs(child)) % mod;
        }
    }
    return res % mod;
}
signed main() {
    int n;
    cin >> n;
    mp.resize(n + 1);
    color.resize(n + 1);
    int fa{};
    for(int i = 2; i <= n; ++i) {
        cin >> fa;
        mp[fa].push_back(i);
    }
    for(int i = 1; i <= n; ++i) cin >> color[i];
    cout << dfs(1);
}

3、快速幂(大概看了一下数据,感觉要快速幂)+深搜

#include <bits/stdc++.h>
using namespace std;
#define int long long
int n, A, B, M;
vector<vector<int>> mp;
int mod;

int fastmi(int a, int u) {
    int ans = 1;
    while(u) {
        if(u & 1) ans = (ans * a) % mod;
        u >>= 1;
        a = (a * a) % mod;
    }
    return ans % mod;
}

int dfs(int cur) {
    if(mp[cur].size() == 0) return 0;
    int res = 0;
    for(auto child : mp[cur]) {
        res = (res + (dfs(child) + fastmi(A, cur)) * B) % mod;
    }
    return res;
}

signed main() {
    cin >> n >> A >> B >> M;
    mod = M;
    mp.resize(n + 1);
    int fa{};
    for(int i = 2; i <= n; ++i) {
        cin >> fa;
        mp[fa].push_back(i);
    }
    cout << dfs(1);
}

#度小满笔试#
全部评论
佬,第一题最后else那为什么要减啊
1 回复 分享
发布于 2023-09-08 23:42 北京
又是简历挂了
点赞 回复 分享
发布于 2023-09-09 00:55 北京

相关推荐

07-17 11:50
门头沟学院 Java
投递腾讯等公司10个岗位
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
3
2
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务