zoukankan      html  css  js  c++  java
  • Codeforces Round #365 (Div. 2) Mishka and trip

    Mishka and trip

    题意:

    有n个城市,第i个城市与第i+1个城市相连,他们边的权值等于i的美丽度*i+1的美丽度,有k个首都城市,一个首都城市与每个城市都相连,求所有边的权值。

    题解:

    先把n个城市存下来,之后开一个标记数组,来标记k个首都(这题这块很巧妙,正因为开了标记首都的数组,所以才把O(N^2)的算法降到了O(N)) 把所有城市的美丽值都加起来,遍历首都,每次遍历完就sum-首都,这样,最后求环的剩下的边就好了,环的剩下的边就是i不是首都,i+1也不是首都,那么就i*i+1
    还有这题的输入都是从1开始的,如果你从0输入的要注意下,但如果从1输入的话,取模的时候更难弄,所以建议从0开始读入。
    这题还有一个转化,就是乘积相加变为和乘乘积

    代码:

    #include <bits/stdc++.h>
    using namespace std;
    
    typedef long long ll;
    const int INF=0x3f3f3f3f;
    const ll LINF=0x3f3f3f3f3f3f3f3f;
    #define PI(A) cout<<(A)<<endl
    #define SI(N) cin>>(N)
    #define SII(N,M) cin>>(N)>>(M)
    #define cle(a,val) memset(a,(val),sizeof(a))
    #define rep(i,b) for(int i=0;i<(b);i++)
    #define Rep(i,a,b) for(int i=(a);i<=(b);i++)
    #define reRep(i,a,b) for(int i=(a);i>=(b);i--)
    #define dbg(x) cout <<#x<<" = "<<(x)<<endl
    #define PIar(a,n) rep(i,n)cout<<a[i]<<" ";cout<<endl;
    #define PIarr(a,n,m) rep(aa,n){rep(bb, m)cout<<a[aa][bb]<<" ";cout<<endl;}
    const double EPS= 1e-9 ;
    
    /*  /////////////////////////     C o d i n g  S p a c e     /////////////////////////  */
    
    const int MAXN= 100000+ 9 ;
    int a[MAXN];
    bool used[MAXN];
    int n,k;
    
    int main()
    {
        while(SII(n,k))
        {
            ll sum=0,ans=0,x;
            cle(used,0);
            rep(i,n)SI(a[i]),sum+=a[i];
            rep(i,k)SI(x),used[x]=1;
            rep(i,n)
            {
                if (used[i+1])
                {
                    sum-=a[i];
                    ans+=a[i]*sum;
                }
            }
            rep(i,n-1) if (!used[i+1]&&!used[i+2]) {ans+=a[i]*a[i+1];}
            if (!used[n]&&!used[1]) ans+=a[n-1]*a[0];
            PI(ans);
        }
    
        return 0;
    }
  • 相关阅读:
    工作中问题的总结1
    linux问题故障
    时间转换
    Tips
    总结
    方向
    同步&异步-阻塞&非阻塞
    IO 之 mark()、reset()
    GC日志分析
    JDK 部分工具使用方法
  • 原文地址:https://www.cnblogs.com/s1124yy/p/5740797.html
Copyright © 2011-2022 走看看