[hihocoder][Offer收割]編程練習賽62

方向ios

#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

被遺忘的整數c++

a*h=(∑ai / n)/(∑(1/ai)),而n*(∑(1/ai))=(∑ai / n),因此n=a*hide

#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

金額組合spa

#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

數字組合3d

#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
相關文章
相關標籤/搜索