• CSUST 白银御行想展示 题解(思维)


    题目链接

    题目思路

    第一数不是1就是n,可以确定他放哪里最优

    如果他是1,那么第二个点不是2 就是n

    如果他是2,那么第二个点不是1就是n-1

    for一边即可确定答案

    代码

    #include<bits/stdc++.h>
    #define fi first
    #define se second
    #define debug cout<<"I AM HERE"<<endl;
    using namespace std;
    typedef long long ll;
    const ll INF=0x3f3f3f3f3f3f3f3f;
    const int maxn=1e6+5,inf=0x3f3f3f3f,mod=1e9+7;
    const double eps=1e-6;
    int n,k;
    ll a[maxn],b[maxn],suf[maxn];
    signed main(){
        scanf("%d%d",&n,&k);
        for(int i=1;i<=n;i++){
            scanf("%lld",&a[i]);
        }
        for(int i=1;i<=n;i++){
            scanf("%lld",&b[i]);
        }
        for(int i=n;i>=1;i--){
            suf[i]=suf[i+1]+b[i];
        }
        int beg=1,ed=n;
        ll pr=0;
        for(int i=1;i<=n;i++){
            ll tmp=(ed-beg)*b[i]-suf[i+1];
            if(tmp>0){
                a[i]-=ed;
                pr+=b[i]*ed;
                ed--;
            }else{
                a[i]-=beg;
                pr+=b[i]*beg;
                beg++;
            }
        }
        printf("%lld
    ",pr);
        int _;scanf("%d",&_);
        while(_--){
            int x;scanf("%d",&x);
            printf("%lld
    ",a[x]);
            if(a[x]<0){
                printf("I Love Work!");
            }
            printf("
    ");
        }
        return 0;
    }
    
    
    不摆烂了,写题
  • 相关阅读:
    CF Round 594
    [转载]CSP-J/S 第一轮知识点选讲
    10.17 模拟赛
    10.16 模拟赛
    10.15模拟赛
    10.14模拟赛
    10.12 模拟赛
    Peaks Gym 100365H
    手写Bitset优化
    Sums gym100753M
  • 原文地址:https://www.cnblogs.com/hunxuewangzi/p/15397555.html
Copyright © 2020-2023  润新知