zoukankan      html  css  js  c++  java
  • [水]浙大校赛补题

    本来以为会巨难无比又有别的比赛可以打于是赛后补题,结果发现似乎略水,反正是找到了四个水题先贴下来

    ZOJ-4099    J

    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    using namespace std;
    typedef long long ll;
    int t;
    ll x, y, n;
    
    int main()
    {
        cin >> t;
        while (t--) {
            scanf("%lld",&n);
            x = n * 8;
            y = n * 9;
            printf("%lld %lld
    ",x,y);
        }
        return 0;
    }
    ZOJ-4099

      找相差给出数的两个合数。所以找两个最小的相差为一的合数就好了。

    ZOJ-4090    A

    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    using namespace std;
    typedef long long ll;
    pair<int, int>g[100005], b[100005];
    int n, m, t;
    
    int main()
    {
        cin >> t;
        while (t--) {
            scanf("%d%d",&n,&m);
            int b0 = 0, g0 = 0;
            for (int i = 0; i < n; i++)scanf("%d", &b[i].second);
            for (int i = 0; i < m; i++)scanf("%d", &g[i].second);
            for (int i = 0; i < n; i++) {
                scanf("%d", &b[i].first);
                if (!b[i].first)b0++;
            }
            for (int i = 0; i < m; i++) {
                scanf("%d", &g[i].first);
                if (!g[i].first)g0++;
            }
            sort(b, b + n);
            sort(g, g + m);
            int ans = 0;
            int now = g0;
            for (int i = 0; i < b0&&now<m; i++) 
                if (b[i].second > g[now].second) {ans++; now++;}
            now = b0;
            for(int i=0;i<g0&&now<n;i++)
                if (b[now].second < g[i].second) {ans++;now++;}
            cout << ans << endl;
        }
        return 0;
    }
    ZOJ-4090

      匹配高矮舞伴。按身高排序,给不同需求排一遍,完了。

    ZOJ-4094    E

    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    using namespace std;
    int n, t;
    int a[105], b[105];
    
    int main()
    {
        cin >> t;
        while (t--) {
            scanf("%d", &n);
            for (int i = n - 1; i >= 0; i--)scanf("%d", &a[i]);
            for (int i = n - 1; i >= 0; i--)scanf("%d", &b[i]);
            long long tp = 0;
            bool falg = 1;
            for (int i = 0; i < n; i++) {
                if (b[i] + tp < a[i]) { falg = 0; break; }
                tp += b[i] - a[i];
            }
            if (!falg)cout << "No" << endl;
            else cout << "Yes" << endl;
        }
        return 0;
    }
    ZOJ-4094

      异常水,异常wa了很多次,变量名用重复了orz

    ZOJ-4096    G

    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    using namespace std;
    int n, t,k;
    int a[100005],b[100005];
    
    int main()
    {
        cin >> t;
        while (t--) {
            scanf("%d%d", &n,&k);
            int ma = -1;
            int l = 0, r = 0,tp;
            for (int i = 0; i < n; i++) {
                scanf("%d", &tp);
                if (tp < 0)b[l++] = -tp;
                else a[r++] = tp;
                ma = max(ma, abs(tp));
            }
            sort(a, a + r);
            sort(b, b + l);
            long long ans = 0;
            for (int i = r - 1; i >= 0; i -= k)ans += a[i] * 2;
            for (int i = l - 1; i >= 0; i -= k)ans += b[i] * 2;
            ans -= ma;
            cout << ans << endl;
            
        }
        return 0;
    }
    ZOJ-4096

      有一点需要思考了呢。

      首先送信回来取信路程是乘2的,但是终结工作可以在送信地点,那么最远的地方就最后一次送。

      其次,近的地方可以去远的地方的时候顺路去,不然就要重复走好几次。

      最后,因为是往轴的两边送信,要分两边算。

      所以,跳k个加个双倍,最后把最大值减掉一个就完成了。(๑•̀ㅂ•́)و✧

    那就先这样吧。

  • 相关阅读:
    KVM虚拟化网卡管理
    KVM虚拟化存储管理
    OpenStack简介
    KVM虚拟机管理
    Jenkins持续集成
    Python函数
    Python文件处理
    Python语句
    Python数据类型的用法
    微信服务号开发小项目总结
  • 原文地址:https://www.cnblogs.com/non-/p/10863442.html
Copyright © 2011-2022 走看看