cf #365b 巧妙的统计
1 second
256 megabytes
standard input
standard output
Little Mishka is a great traveller and she visited many countries. After thinking about where to travel this time, she chose XXX — beautiful, but little-known northern country.
Here are some interesting facts about XXX:
- XXX consists of n cities, k of whose (just imagine!) are capital cities.
- All of cities in the country are beautiful, but each is beautiful in its own way. Beauty value of i-th city equals to ci.
- All the cities are consecutively connected by the roads, including 1-st and n-th city, forming a cyclic route 1 — 2 — ... — n — 1. Formally, for every 1 ≤ i < n there is a road between i-th and i + 1-th city, and another one between 1-st and n-th city.
- Each capital city is connected with each other city directly by the roads. Formally, if city x is a capital city, then for every1 ≤ i ≤ n, i ≠ x, there is a road between cities x and i.
- There is at most one road between any two cities.
- Price of passing a road directly depends on beauty values of cities it connects. Thus if there is a road between cities i and j, price of passing it equals ci·cj.
Mishka started to gather her things for a trip, but didn't still decide which route to follow and thus she asked you to help her determine summary price of passing each of the roads in XXX. Formally, for every pair of cities a and b (a < b), such that there is a road betweena and b you are to find sum of products ca·cb. Will you help her?
The first line of the input contains two integers n and k (3 ≤ n ≤ 100 000, 1 ≤ k ≤ n) — the number of cities in XXX and the number of capital cities among them.
The second line of the input contains n integers c1, c2, ..., cn (1 ≤ ci ≤ 10 000) — beauty values of the cities.
The third line of the input contains k distinct integers id1, id2, ..., idk (1 ≤ idi ≤ n) — indices of capital cities. Indices are given in ascending order.
Print the only integer — summary price of passing each of the roads in XXX.
4 1
2 3 1 2
3
17
5 2
3 5 2 2 4
1 4
71
This image describes first sample case:

It is easy to see that summary price is equal to 17.
This image describes second sample case:

It is easy to see that summary price is equal to 71.
#include<iostream>
#include<stdio.h>
using namespace std;
const int maxx = ;
int city[maxx];
bool cap[maxx];
int cap_city[maxx];
long long val_total;
long long total_cap;
int main()
{
int n,k;
val_total=;
scanf("%d%d",&n,&k);
for(int i=;i<=n;i++)
{
scanf("%d",city+i);
val_total+=city[i];
}
total_cap=;
for(int i=;i<k;i++)
{
int tmp;
scanf("%d",&tmp);
cap[tmp]=true;
cap_city[i]=tmp;
total_cap+=city[tmp];
}
city[]=city[n];
cap[]=cap[n];
long long ans=;
for(int i=;i<=n;i++)
{
if(cap[i])
{
ans+=*(city[i]*1LL*(val_total-city[i])*1LL);
if(!cap[(i-)%n])
{
ans-=city[i]*city[(i-)%n];
}
if(!cap[(i+)%n])
{
ans-=city[i]*city[(i+)%n];
}
}
else
ans+=(city[i]*city[i-]+city[i]*city[(i+)%n]);
}
for(int i=;i<k;i++)
{
ans-=(city[cap_city[i]]*(total_cap-city[cap_city[i]])*1LL); }
printf("%I64d\n",ans/);
return ;
}
简单统计所有边的代价是很简单的,但是因为点数较多,这样是会超时的。可以预先统计出所有点的总代价,所有关键点的总代价。计算时,将所有边统计两遍,其中非关键点较好处理,只要向两边连边,而关键点向所有点连两倍边,关键点之间会有四条边,要后期减去,而关键点和不是相邻的非关键点之间就是两倍边,而关键点和相邻的非关键点(如果是的话)是三倍边,要减去一次。最后,统计完之后,将总代价除以2,即为所求。
cf #365b 巧妙的统计的更多相关文章
- TTTTTTTTTTTTT CF#365 div2 B 统计点
B. Mishka and trip time limit per test 1 second memory limit per test 256 megabytes input standard i ...
- 51nod 1042数字0-9的数量
1042 数字0-9的数量 基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题 收藏 关注 给出一段区间a-b,统计这个区间内0-9出现的次数. 比如 10-19 ...
- 2018 - 2019 CTU Open Contest E. Locker Room 【后缀数组】
任意门:http://codeforces.com/gym/101954/problem/E E. Locker Room time limit per test 2.0 s memory limit ...
- Self-Driving Database
最近一直在做 ML in Database 相关的工作.偶然发现CMU 19spring的15-721课程竟然专门安排了这个专题,不禁欣喜若狂,赶紧去学习了一下. Andy提出了self-drivin ...
- matplotlib补充知识及数据清理方法
今日内容概要 数据操作 数据清洗理论 数据清洗实操 数据操作 read_csv read_excel read_hdf read_html read_json read_msgpack read_sq ...
- 巧妙的运用group,count,order有利于统计
$aAwardMem = $this->dao_raward->getAwardAndMem($where,array('award_cat asc','award_level asc') ...
- ORA-00494: enqueue [CF] held for too long (more than 900 seconds) by 'inst 1, osid 5166'
凌晨收到同事电话,反馈应用程序访问Oracle数据库时报错,当时现场现象确认: 1. 应用程序访问不了数据库,使用SQL Developer测试发现访问不了数据库.报ORA-12570 TNS:pac ...
- [Recommendation System] 推荐系统之协同过滤(CF)算法详解和实现
1 集体智慧和协同过滤 1.1 什么是集体智慧(社会计算)? 集体智慧 (Collective Intelligence) 并不是 Web2.0 时代特有的,只是在 Web2.0 时代,大家在 Web ...
- CF 484E - Sign on Fence
E. Sign on Fence time limit per test 4 seconds memory limit per test 256 megabytes input standard in ...
随机推荐
- DB2环境设置
作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ 1.级别对应 • Environment variables at the operating system l ...
- 35. Search Insert Position
题目: Given a sorted array and a target value, return the index if the target is found. If not, return ...
- oracle dataguard (一)
一.什么是data guard及data guard的工作原理 Data Guard 是一个集合,由一个primary数据库(生产数据库)及一个或多个standby数据库(最多9个)组成.组成Data ...
- Android高性能ORM数据库DBFlow入门
DBFlow,综合了 ActiveAndroid, Schematic, Ollie,Sprinkles 等库的优点.同时不是基于反射,所以性能也是非常高,效率紧跟greenDAO其后.基于注解,使用 ...
- Retrofit与RXJava整合
Retrofit 除了提供了传统的 Callback 形式的 API,还有 RxJava 版本的 Observable 形式 API.下面我用对比的方式来介绍 Retrofit 的 RxJava 版 ...
- hdu 1249 三角形
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1249 part=3*s*(s-1)+2 #include<stdio.h> #includ ...
- 早上3:30左右起来发现时候电脑在一致叫唤就是一个usb的接口可能是鼠标
然后看了下也没有网络了,早上起来就打了一个电话给网管,就开通了.是没有及时开通.
- C#的反射机制
using System; using System.Collections; using System.Collections.Generic; using System.IO; using Sys ...
- Myeclipse 2016 & 2014 下载
myeclipse-2016-ci-6-offline-installer-windowshttps://downloads.genuitec.com/downloads/myeclipse/inst ...
- 【Java EE 学习 21 上】【其它类型的监听器】【使用HttpSessionActivationListener监听session的活化和钝化】
一.ServletContextListener Method Summary void contextDestroyed(ServletContextEvent sce) R ...