题意

  Mishka想要去一个国家旅行,这个国家共有个城市,城市通过道路形成一个环,即第i个城市和第个城市之间有一条道路,此外城市和之间有一条道路。这个城市中有个首中心城市,中心城市与每个城市(除了自己)之间有一条道路。第城市个城市有一个魅力值,经过一条连接第个和第个城市的道路的费用是,求所有道路的费用之和是多少?

  注意:任何两个城市之间最多只有一条路。

思路

  先考虑所有中心城市:每条路只能算一遍,那么我们可以得到如下公式:

  其中,代表所有城市的魅力值的和,代表已经计算过的中心城市的魅力值,那么就代表第个中心城市连接其他城市道路的魅力值之和(无重复计算)。

  最后再枚举环中的条边,如果某条边连接的两个城市中有一个是中心城市,说明这条路已经计算过,不要重复计算。

  注意:答案可能超出int,用long long

AC代码

#include <stdio.h>
#include <string.h>
typedef long long LL;
const int maxn = 100000+5;
int n, k;
int c[maxn], d[maxn];
bool cp[maxn];
int main() {
    while(scanf("%d%d", &n, &k) == 2) {
        memset(cp, 0, sizeof(cp));
        LL sum = 0;
        for(int i = 1; i <= n; i++) {
            scanf("%d", &c[i]);
            sum += c[i];
        }
        int id;
        for(int i = 0; i < k; i++) {
            scanf("%d", &d[i]);
            cp[d[i]] = true;
        }
        //all capital cities
        int tol = 0;
        LL ans = 0;
        for(int i = 0; i < k; i++) {
            id = d[i];
            tol += c[id];
            ans += 1LL*c[id]*(sum-tol);
        }
        //the road bettwen two cities which aren't capital
        if(!cp[1] && !cp[n]) ans += c[1]*c[n];
        for(int i = 1; i < n; i++) {
            if(!cp[i] && !cp[i+1]) ans += c[i]*c[i+1];
        }
        printf("%lld\n", ans);
    }
    return 0;
} 

如有不当之处欢迎指出!

cf B. Mishka and trip (数学)的更多相关文章

  1. codeforces 703B B. Mishka and trip(数学)

    题目链接: B. Mishka and trip time limit per test 1 second memory limit per test 256 megabytes input stan ...

  2. 暑假练习赛 003 F Mishka and trip

    F - Mishka and trip Sample Output   Hint In the first sample test: In Peter's first test, there's on ...

  3. Codeforces Round #365 (Div. 2) Mishka and trip

    Mishka and trip 题意: 有n个城市,第i个城市与第i+1个城市相连,他们边的权值等于i的美丽度*i+1的美丽度,有k个首都城市,一个首都城市与每个城市都相连,求所有边的权值. 题解: ...

  4. cf703B Mishka and trip

    B. Mishka and trip time limit per test 1 second memory limit per test 256 megabytes input  standard ...

  5. Codeforces 703B. Mishka and trip 模拟

    B. Mishka and trip time limit per test:1 second memory limit per test:256 megabytes input:standard i ...

  6. CodeForces 703A Mishka and trip

    Description Little Mishka is a great traveller and she visited many countries. After thinking about ...

  7. B. Mishka and trip

    time limit per test 1 second memory limit per test 256 megabytes input standard input output standar ...

  8. CF A.Mishka and Contest【双指针/模拟】

    [链接]:CF/4892 [题意]: 一个人解决n个问题,这个问题的值比k小, 每次只能解决最左边的或者最右边的问题 解决了就消失了.问这个人能解决多少个问题. [代码]: #include<b ...

  9. CF 990A. Commentary Boxes【数学/模拟】

    [链接]:CF [题意]:对于一个数n,每次加一的代价是a,每次减一的代价是b,求被m整除时的最小代价. [分析]:分情况讨论,自己多举几个栗子. [代码]: #include<cstdio&g ...

随机推荐

  1. linux_文件类型

    linux中文件类型? 在linux系统中一切(目录.普通文件.设备文件等)皆文件 d     目录 -      普通文件 l      链接文件 b     快设备和其他外网设备 普通文件: - ...

  2. 用MapViewOfFile处理大文件-内存不足

    用MapViewOfFile处理大文件时,如果文件过大,如400M,则无法一次性映射入内存,否则会出现1132错误,即内存不足.原因可能为操作系统无法找到连续的内存.因此需要通过分页的方式,逐页将文件 ...

  3. Servlet--转发和重定向

    Servlet的跳转有2种,一种是转发,一种是重定向. 重定向: <strong><span style="font-size:14px;"></sp ...

  4. VisionPro笔记:色彩区分

    VisionPro:色彩区分 来自:blog.sina.com.cn/yangchao168 利用色彩来区分物体这类的项目没做过,总觉得很难,尤其是涉及到RGB和HSI等.看到VisionPro中有这 ...

  5. DNS服务器解析域名的过程

    最近在读许令波老师的<深入分析Java Web技术内幕>,算是对DNS服务器域名解析有个大体的理解,以下的内容来自个人对书中内容的整理 1.什么是域名解析? 当我们在浏览器的地址栏输入一个 ...

  6. Linux面试题(2)

    一.Linux操作系统知识 1.常见的Linux发行版本都有什么?你最擅长哪一个?它的官网网站是什么?说明你擅长哪一块? Centos,Ubunto,fedora,openSUSE,Debian等,擅 ...

  7. pip相关工具使用小结

    最近写taffy的时候用到了两个pip相关的小工具. 一个是pip-review批量更新lib库,一个是pipreqs生成基于项目的requirements.txt. 1. pip相关命令 #更新单个 ...

  8. gulp最简示例

    全局安装 $ npm gulp -g 作为项目的开发依赖安装 $ npm gulp --save-dev 脚本文件 在根目录创建gulpfile.js文件 const gulp = require(' ...

  9. iOS-键盘监听YYKeyboardManager

    如果键盘弹出覆盖了原有的试图,这种效果并不好,所以我们就要在键盘弹出的时候,监听键盘的位置来改变我们一些试图的位置,例如tableView列表等:在这里推荐一个大牛ibireme写的YYKeyboar ...

  10. ABP官方文档翻译 3.2 值对象

    值对象 介绍 值对象基类 最佳实践 介绍 "展现领域描述性层面且没有概念性身份的对象称之为值对象."(Eric Evans). 和实体相反,实体有身份标示(Id),值对象没有身份标 ...