[hihocoder][Offer收割]编程练习赛59

替换函数

#pragma comment(linker, "/STACK:102400000,102400000")
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<vector>
#include<algorithm>
#include<iostream>
#include<map>
#include<queue>
#include<stack>
#include<string>
#include<functional>
#include<math.h>
//#include<bits/stdc++.h>
using namespace std;
typedef long long lint;
typedef vector<int> VI;
typedef pair<int, int> PII;
typedef queue<int> QI;

void makedata() {
    freopen("input.txt", "w", stdout);
    fclose(stdout);
}

string s, d;
char f[256];

int main() {
#ifndef ONLINE_JUDGE
    freopen("input.txt", "r", stdin);
#endif
    //makedata();
    std::ios::sync_with_stdio(0), cin.tie(0);
    int t;
    cin >> t;
    while (t--) {
        cin >> s >> d;
        int n = s.length();
        memset(f, 0, sizeof(f));
        bool ok = true;
        for (int i = 0; i < n; i++) {
            if (f[s[i]] == 0) f[s[i]] = d[i];
            else if (f[s[i]] != d[i]) ok = false;
        }
        if (ok) cout << "YES" << endl;
        else cout << "NO" << endl;
    }
    return 0;
}
View Code

替换函数2

树的权重

#pragma comment(linker, "/STACK:102400000,102400000")
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<vector>
#include<algorithm>
#include<iostream>
#include<map>
#include<queue>
#include<stack>
#include<string>
#include<functional>
#include<math.h>
//#include<bits/stdc++.h>
using namespace std;
typedef long long lint;
typedef vector<int> VI;
typedef pair<int, int> PII;
typedef queue<int> QI;

void makedata() {
    freopen("input.txt", "w", stdout);
    fclose(stdout);
}

VI G[110000];
lint sum[110000], sz[110000], ans[110000], n;
void dfs(int u, int fa) {
    sz[u] = 1;
    sum[u] = 0;
    for (int i = 0; i < G[u].size(); i++) {
        int v = G[u][i];
        if (v == fa) continue;
        dfs(v, u);
        sz[u] += sz[v];
        sum[u] += (sum[v] + sz[v]);
    }
}
void solve(int u, int fa) {
    ans[u] = ans[fa] + n - 2 * sz[u];
    for (int i = 0; i < G[u].size(); i++) {
        int v = G[u][i];
        if (v == fa) continue;
        solve(v, u);
    }
}

int main() {
#ifndef ONLINE_JUDGE
    freopen("input.txt", "r", stdin);
#endif
    //makedata();
    std::ios::sync_with_stdio(0), cin.tie(0);
    int u, v;
    cin >> n;
    for (int i = 1; i < n; i++) {
        cin >> u >> v;
        G[u].push_back(v);
        G[v].push_back(u);
    }
    dfs(1, -1);
    ans[1] = sum[1];
    for (int i = 0; i < G[1].size(); i++) {
        int v = G[1][i];
        solve(v, 1);
    }
    for (int i = 1; i <= n; i++) cout << ans[i] << endl;
    return 0;
}
View Code

K偏差排列

猜你喜欢

转载自www.cnblogs.com/dramstadt/p/9104832.html
今日推荐