zoukankan      html  css  js  c++  java
  • [hihocoder][Offer收割]编程练习赛62

    方向

    #pragma comment(linker, "/STACK:102400000,102400000")
    #ifndef ONLINE_JUDGE
    #include "stdafx.h"
    #else
    #include<bits/stdc++.h>
    #endif
    using namespace std;
    typedef long long lint;
    typedef vector<int> VI;
    typedef pair<int, int> PII;
    typedef queue<int> QI;
    typedef map<int, int> MII;
    
    void makedata() {
        freopen("input.txt", "w", stdout);
        fclose(stdout);
    }
    int min_(int x, int y) {
        if (fabs(x) == fabs(y)) return fabs(x);
        return fabs(x) < fabs(y) ? x : y;
    }
    int main() {
    #ifndef ONLINE_JUDGE
        freopen("input.txt", "r", stdin);
    #endif
        //makedata();
        std::ios::sync_with_stdio(0), cin.tie(0);
        int a, b, x, y;
        cin >> a >> b;
        x = b - a;
        if (x < 0) x += 360;
        y = x - 360;
        cout << min_(x, y) << endl;
        return 0;
    }
    View Code

    被遗忘的整数

    a*h=(∑ai / n)/(∑(1/ai)),而n*(∑(1/ai))=(∑ai / n),所以n=a*h

    #pragma comment(linker, "/STACK:102400000,102400000")
    #ifndef ONLINE_JUDGE
    #include "stdafx.h"
    #else
    #include<bits/stdc++.h>
    #endif
    using namespace std;
    typedef long long lint;
    typedef vector<int> VI;
    typedef pair<int, int> PII;
    typedef queue<int> QI;
    typedef map<int, int> MII;
    
    void makedata() {
        freopen("input.txt", "w", stdout);
        fclose(stdout);
    }
    int min_(int x, int y) {
        if (fabs(x) == fabs(y)) return fabs(x);
        return fabs(x) < fabs(y) ? x : y;
    }
    int main() {
    #ifndef ONLINE_JUDGE
        freopen("input.txt", "r", stdin);
    #endif
        //makedata();
        std::ios::sync_with_stdio(0), cin.tie(0);
        int a, b;
        cin >> a >> b;
        cout << a*b << endl;
        return 0;
    }
    View Code

    金额组合

    #pragma comment(linker, "/STACK:102400000,102400000")
    #ifndef ONLINE_JUDGE
    #include "stdafx.h"
    #else
    #include<bits/stdc++.h>
    #endif
    using namespace std;
    typedef long long lint;
    typedef vector<int> VI;
    typedef pair<int, int> PII;
    typedef queue<int> QI;
    typedef map<int, int> MII;
    
    void makedata() {
        freopen("input.txt", "w", stdout);
        fclose(stdout);
    }
    
    int n;
    lint c;
    bool f[64];
    int s[64];
    
    int main() {
    #ifndef ONLINE_JUDGE
        freopen("input.txt", "r", stdin);
    #endif
        //makedata();
        std::ios::sync_with_stdio(0), cin.tie(0);
        memset(f, false, sizeof(f));
        cin >> n >> c;
        lint x;
        for (int i = 0; i < n; i++) {
            cin >> x;
            for (int j = 0; j < 61; j++) {
                if (x == (1LL << j)) f[j] = true;
            }
        }
        s[0] = f[0] ? 1 : 0;
        for (int i = 1; i < 61; i++) s[i] = s[i - 1] + (f[i] ? 1 : 0);
        lint ans = 0;
        for (int i = 60; i >= 0; i--) {
            if (c & (1LL << i)) {
                if (i > 0) ans += (1LL << s[i - 1]);
                else ans += 1;
                if (!f[i]) break;
            }
        }
        bool ok = true;
        for (int i = 60; i >= 0; i--) {
            if (c & (1LL << i) && (!f[i])) ok = false;
        }
        if (ok) ans++;
        ans--;
        cout << ans << endl;
        return 0;
    }
    /*
    1010
    ----
    1000
    0100
    0001
    ----
    1000
    0100
    0001
    0101
    0000
    1001
    */
    View Code

    数字组合

    #pragma comment(linker, "/STACK:102400000,102400000")
    #ifndef ONLINE_JUDGE
    #include "stdafx.h"
    #else
    #include<bits/stdc++.h>
    #endif
    using namespace std;
    typedef long long lint;
    typedef vector<int> VI;
    typedef pair<int, int> PII;
    typedef queue<int> QI;
    typedef map<int, int> MII;
    
    void makedata() {
        freopen("input.txt", "w", stdout);
        fclose(stdout);
    }
    
    VI G[110000];
    int cnt[10];
    int n, k;
    int s0, c1;
    int max_() {
        for (int i = 9; i >= 0; i--) {
            if (cnt[i]) {
                cnt[i]--;
                n--;
                return i;
            }
        }
    }
    int min_() {
        for (int i = 0; i <= 9; i++) {
            if (cnt[i]) {
                cnt[i]--;
                n--;
                return i;
            }
        }
    }
    void work(int l, int r, int p) {
        if (p + 1 == s0) return;
        int ll;
        for (int i = l; i <= r; i++) {
            if (G[i][p] < G[r][p]) {
                while (G[i].size() < s0) G[i].push_back(max_());
            } else {
                ll = i;
                break;
            }
        }
        for (int i = ll; i <= r; i++) G[i].push_back(min_());
        work(ll, r, p + 1);
    }
    
    int main() {
    #ifndef ONLINE_JUDGE
        freopen("input.txt", "r", stdin);
    #endif
        //makedata();
        std::ios::sync_with_stdio(0), cin.tie(0);
        string s;
        cin >> n >> k;
        cin >> s;
        int m = s.length();
        for (int i = 0; i < m; i++) cnt[s[i] - '0']++;
        s0 = n / k + 1, c1 = n % k;
        for (int i = 0; i < k - c1; i++) G[i].push_back(0);
        for (int i = k - c1; i < k; i++) G[i].push_back(min_());
        work(0, k - 1, 0);
        for (int i = 0; i < G[k - 1].size(); i++) {
            if (G[k - 1][i] == 0) continue;
            else cout << G[k - 1][i];
        }
        return 0;
    }
    /*
    x 1 1 1 1
    44777
    */
    View Code
  • 相关阅读:
    app启动优化
    CountDownLatch妙用
    匿名内部类为什么有可能造成内存泄漏
    单例模式为什么有可能造成内存泄漏
    左移右移记不住怎么办
    说一说ThreadLocal
    对framework层的一些看法
    双重锁单例
    JMM总结
    关于lock前缀
  • 原文地址:https://www.cnblogs.com/dramstadt/p/9155760.html
Copyright © 2011-2022 走看看