• Codeforces补题2020.3.1 (Round622 Div2)


    A.Fast Food Restaurant

    厌倦了无聊的办公室工作,丹尼斯决定开一家快餐店。

    第一天,他用炼乳包了一份饺子、一份酸梅汁和一份煎饼。

    丹尼斯餐馆的特点是点餐的程序。丹尼斯自己为每位来访者挑选了一套客人将要接受的菜肴。这样做时,丹尼斯遵循以下规则:

    每位游客至少应得到一道菜(饺子、酸梅汁、炼乳煎饼都被视为菜肴);

    每位游客最多可获赠一份饺子、一份蔓越莓汁和一份加炼乳的煎饼;

    所有来访者都应得到不同的菜肴。

    丹尼斯最多能接待多少访客?

    输入

    第一行包含整数t(1≤t≤500)-要解决的测试用例数。

    其余的每一个t行包含整数a、b和c(0≤a、b、c≤10)-饺子的份数、蔓越莓汁的份数和丹尼斯做的炼乳煎饼的份数。

    输出

    对于每个测试用例,打印一个整数-丹尼斯可以提供的最大访客数。

    #include<bits/stdc++.h>
    using namespace std;
    const int maxn=1014;
    int T;
    int a,b,c;
    int main () {
        scanf("%d",&T);
        while (T--) {
            scanf("%d%d%d",&a,&b,&c);
            if (a<b) swap(a,b);
            if (a<c) swap(a,c);
            if (b<c) swap(b,c);
            int ans=0;
            if (a) ans++,a--;
            if (b) ans++,b--;
            if (c) ans++,c--;
            if (a&&b) ans++,a--,b--;
            if (a&&c) ans++,a--,c--;
            if (b&&c) ans++,b--,c--;
            if (a&&b&&c) ans++,a--,b--,c--;
            printf ("%d
    ",ans);
        }
        return 0;
    } 
    View Code

    B.Different Rules

    尼古拉最近才开始从事竞争性节目,但已经有资格进入一个著名的奥运会决赛。将会有n个参与者,其中一个是尼古拉。像任何好的奥林匹克运动会一样,它由两轮组成。厌倦了传统规则,解决最多问题的参与者获胜,组织者想出了不同的规则。

    假设在第一轮中,参与者A排在第x位,在第二轮中,参与者A排在第y位。那么参与者A的总分是x+y之和。参与者A的总分是参与者(包括A)的总数,其总分小于或等于A的总分。注意,一些参与者可能最终会有一个共同的总分。同样重要的是要注意,在第一轮和第二轮中,没有两名参与者在同一个地点打成平手。换言之,从1到n的每一个i中,恰好有一个参与者在第一轮中获得了第i名,正好有一个参与者在第二轮中获得了第i名。

    奥运会刚结束,尼古拉就被告知他在第一轮获得了第x名,在第二轮获得了第y名。尼古拉不知道其他参与者的结果,但他想知道,如果我们考虑到对他最有利和最不利的结果,他能占据的最小和最大位置是什么。请帮助尼古拉找到这个问题的答案。

    输入

    第一行包含整数t(1≤t≤100)-要解决的测试用例数。

    下面的每一行都包含整数n,x,y(1≤n≤109,1≤x,y≤n)-奥林匹克运动会的参赛人数,尼古拉第一轮和第二轮的参赛地点。

    输出

    打印两个整数-最小和最大可能的整体位置尼古拉可以。

    #include<bits/stdc++.h>
    using namespace std;
    int T;
    int N,x,y;
    int main () {
        scanf("%d",&T);
        while (T--) {
            scanf("%d%d%d",&N,&x,&y);
            printf("%d %d
    ",min(N,max(1,x+y-N+1)),min(N,x+y-1));
        }
        return 0;
    }
    View Code

    C.Skyscrapers

    首都的郊区正在柏林积极建设。该公司“核心恐慌”管理着新伯尔斯科瓦一座摩天大楼住宅区的建设。所有的摩天大楼都是沿着公路建的。据了解,该公司已经在高速公路沿线购买了n块地,并准备建造n座摩天大楼,每块地一座摩天大楼。

    建筑师在规划摩天大楼时必须考虑几个要求。首先,由于每个地块上的土地都有不同的属性,因此每个摩天大楼的最大楼层数都有限制。其次,根据城市设计规范,一座摩天大楼的左右两侧同时拥有更高的摩天大楼是不可接受的。

    从形式上讲,让我们把图从1数到n,然后如果第i个图上的摩天大楼有ai层,它必须保持ai最多为mi(1≤ai≤mi)。也不能有整数j和k,这样j<i<k和aj>ai<ak。图j和k不要求与i相邻。

    该公司希望已建成的摩天大楼的总层数尽可能大。帮助其以最佳方式为每个摩天大楼选择层数,即以满足所有要求的方式,并在所有此类施工计划中选择具有最大可能总层数的任何计划。

    输入

    第一行包含一个整数n(1≤n≤1000)-绘图数。

    第二行包含整数m1,m2,…,mn(1≤mi≤109)-每个地块上摩天大楼每可能楼层数的楼层数限制。

    输出

    打印n个整数ai-每个摩天大楼的平面图中的楼层数,以便满足所有要求,并且所有摩天大楼的总楼层数是最大可能的。

    如果可能有多个答案,请打印其中任何一个。

    #include<bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    const int maxn=1e6+14;
    ll a[maxn];
    ll l[maxn];
    ll r[maxn];
    int main () {
        int N;
        while (~scanf("%d",&N)) {
            stack<int> st;
            for (int i=1;i<=N;i++) scanf("%d",&a[i]);
            for (int i=1;i<=N;i++) {
                while (!st.empty()&&a[st.top()]>=a[i])
                    st.pop();
                if (st.empty()) l[i]=i*a[i];
                else l[i]=l[st.top()]+(i-st.top())*a[i];
                st.push(i);
            }
            while (!st.empty()) st.pop();
            for (int i=N;i>=1;i--) {
                while (!st.empty()&&a[st.top()]>=a[i])
                    st.pop();
                if (st.empty()) r[i]=(N-i+1)*a[i];
                else r[i]=r[st.top()]+(st.top()-i)*a[i];
                st.push(i);
            }
            ll ans=0;
            ll id=0;
            for (int i=1;i<=N;i++) {
                ll tmp=l[i]+r[i]-a[i];
                if (tmp>ans) {
                    ans=tmp;
                    id=i;
                }
            }
            for (int i=id-1;i>=1;i--) a[i]=min(a[i],a[i+1]);
            for (int i=id+1;i<=N;i++) a[i]=min(a[i],a[i-1]);
            for (int i=1;i<=N;i++) printf ("%d ",a[i]);
            printf ("
    ");
        }
        return 0;
    }
    View Code
  • 相关阅读:
    synchronized内置锁
    《JavaScript闯关记》视频版硬广
    想提高团队技术,来试试这个套路!
    从国企到阿里的面试经历(二)
    从国企到阿里的面试经历(一)
    《JavaScript 闯关记》之垃圾回收和内存管理
    《JavaScript 闯关记》之原型及原型链
    《JavaScript 闯关记》之作用域和闭包
    如何排版 微信公众号「代码块」之 MarkEditor
    《JavaScript 闯关记》之事件
  • 原文地址:https://www.cnblogs.com/zhanglichen/p/12390063.html
Copyright © 2020-2023  润新知