zoukankan      html  css  js  c++  java
  • Codeforces Round #653 (Div. 3) 部分题解

    A:

    给出 x,y 求出最大的 k , 0<=k<=n 且 k mod x = y

    直接公式表达出来就好了

    int main() {
        int T;
        scanf("%d", &T);
        ll k, x, y, n;
        while (T--) {
            scanf("%lld%lld%lld", &x, &y, &n);
            ll kk = (n - y) / x;
            printf("%lld\n", kk * x + y);
        }
    }
    View Code

    B:

    给定一个x,可以*2,可以/6 (前提是可以整除) 

    问能否变成1,若能,输出最小步数。

    显然,若因子中无3,那必然无法通过/6来到1,可直接return  false 。 

    剩下的贪心就好了

    ll n;
    int solve() {
        if (n == 1) return 0;
        if (n % 3 != 0) return -1;
        int tmp = n;
        int cnt = 0;
        while (tmp != 1) {
            cnt++;
            if (tmp % 3 != 0) return  -1;
            if (tmp % 6 == 0) tmp /= 6;
            else tmp <<= 1;
        }
        return cnt;
    }
     
     
    int main() {
        int T;
        scanf("%d", &T);
        while (T--) {
            scanf("%lld", &n);
            printf("%d\n", solve());
        }
    }
    View Code

    C:

    给定一个括号序列,你可以通过把某个括号移动到最前或最后来调整,要求最小的调整次数使得最后是合法的。

    显然,当你把已经合法的也就是相邻的一对括号删去后,剩下的括号数除以二就是答案。

    因此可以利用栈来模拟。

    char  s[55];
     
     
    int main() {
        int T;
        int n;
        scanf("%d", &T);
        while (T--) {
            stack<char> st;
            scanf("%d", &n);
            scanf("%s", s);
            int len = strlen(s);
            int cnt = 0;
            for (int i = 0; i < len; i++) {
                if (s[i] == '(') st.push('(');
                else if (!st.empty()) st.pop(), cnt++;
            }
            printf("%d\n", (len - cnt * 2) / 2);
        }
    }
    View Code

    D:

    你有一个 x = 0 每次可以使某个ai + = x  ,x++ 也可以x++ 。

    求出当整个数组的所有元素都整除k时,x的大小。

    日常乱搞。。

     
    ll a[maxn];
    map<ll, ll > mp;
     
    int main() {
        int T;
        int n, k;
        scanf("%d", &T);
        while (T--) {
            mp.clear();
            scanf("%d%d", &n, &k);
            for (int i = 0; i < n; i++) {
                scanf("%lld", &a[i]);
                if (a[i] % k == 0) {
                    continue;
                }
                if (a[i] > k) {
                    ll x = ceil(a[i] * 1.0 / k);
                    a[i] = k * x - a[i];
                }
                else a[i] = k - a[i];
                if (mp[a[i]]) {
                    mp[a[i]]++;
                }
                else mp[a[i]] = 1;
            }
            ll Max = 0;
            if (!mp.empty()) {
                for (auto it = mp.begin(); it != mp.end(); it++) {
                    ll res = it->first;
                    ll tmp = it->second;
                    Max = max(Max, res + k * (tmp - 1));
                }
            }
            if (Max) Max++;
            printf("%lld\n", Max);
            //printf("%lld\n", a[5]);
        }
    }
    View Code

    E:

  • 相关阅读:
    基于ffmpeg 直播推流和播放rtmp (IOS源码)
    Hadoop 安装指南
    机器学习算法( 七、AdaBoost元算法)
    机器学习算法( 五、Logistic回归算法)
    机器学习算法( 四、朴素贝叶斯算法)
    机器学习算法( 三、决策树)
    机器学习算法( 二、K
    Solr 多字段、打分规则、权重和实时索引同步
    Android Activity生命周期
    .net , java webSocket 连接 Socket.io (1.4.4版本) 问题
  • 原文地址:https://www.cnblogs.com/hznumqf/p/13210457.html
Copyright © 2011-2022 走看看