CodeForces 703B(容斥定理)
题目链接:http://codeforces.com/contest/703/problem/B
解题思路:
第一次写 先求出每个点到其他点的价值,并将其记录 dp[i][j]=1(i<j),然后算出周围一圈的价值,当然有dp[i][j]来防止重复计算,超时
第二次写 将二维数组用一维数组代替 方法是 dp[i][j]=dp[i*10+j] (i<j); 然后求出一圈的价值,dp[i] 来防止重复计算,超时
第三次写 先求出所有点价值的和sum,以及一圈的价值ans,如果 省会 k==1 则在总和中减去前一个和后一个,即减去第2个和第n个
ans+=(tem-a[1])*a[1];
sum-=a[1];
dp[x]=1;//防止重复计算
关键点是找到前一个和后一个,然后计算到ans中,同时sum-=当前值,记得dp[x]=1;
第一个和最后一个特殊处理。
Ac code:
#include<bits/stdc++.h>
using namespace std;
#define maxx 200002
int dp[maxx];
long long nar[maxx];
int main()
{
int n,k,ka,i;
while(scanf("%d%d",&n,&k)!=EOF)
{
long long sum=;
memset(dp,,sizeof(dp));
for(i=; i<=n; i++)
{
scanf("%I64d",&nar[i]);
sum+=nar[i];
}
long long ans=nar[]*nar[n];
for(int i=; i<n; i++)
ans+=nar[i]*nar[i+];
for(i=; i<=k; i++)
{
scanf("%d",&ka);
long long tem=sum;
if(ka==)
{
if(!dp[])tem-=nar[];
if(!dp[n])tem-=nar[n];
}
else if(ka==n)
{
if(!dp[])tem-=nar[];
if(!dp[n-])tem-=nar[n-];
}
else
{
if(!dp[ka-])tem-=nar[ka-];
if(!dp[ka+])tem-=nar[ka+];
}
ans+=(tem-nar[ka])*nar[ka];
sum-=nar[ka];
dp[ka]=;
}
printf("%I64d\n",ans);
}
return ;
}
CodeForces 703B(容斥定理)的更多相关文章
- Codeforces Round #330 (Div. 2) B. Pasha and Phone 容斥定理
B. Pasha and Phone Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/595/pr ...
- HDU 1796How many integers can you find(简单容斥定理)
How many integers can you find Time Limit: 12000/5000 MS (Java/Others) Memory Limit: 65536/32768 ...
- hdu_5213_Lucky(莫队算法+容斥定理)
题目连接:hdu_5213_Lucky 题意:给你n个数,一个K,m个询问,每个询问有l1,r1,l2,r2两个区间,让你选取两个数x,y,x,y的位置为xi,yi,满足l1<=xi<=r ...
- How Many Sets I(容斥定理)
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3556 How Many Sets I Time Limit: 2 ...
- HDU - 4135 Co-prime 容斥定理
题意:给定区间和n,求区间中与n互素的数的个数, . 思路:利用容斥定理求得先求得区间与n互素的数的个数,设表示区间中与n互素的数的个数, 那么区间中与n互素的数的个数等于.详细分析见求指定区间内与n ...
- BZoj 2301 Problem b(容斥定理+莫比乌斯反演)
2301: [HAOI2011]Problem b Time Limit: 50 Sec Memory Limit: 256 MB Submit: 7732 Solved: 3750 [Submi ...
- BZOJ2839 : 集合计数 (广义容斥定理)
题目 一个有 \(N\) 个 元素的集合有 \(2^N\) 个不同子集(包含空集), 现在要在这 \(2^N\) 个集合中取出若干集合(至少一个), 使得它们的交集的元素个数为 \(K\) ,求取法的 ...
- HDU 1695 GCD 欧拉函数+容斥定理 || 莫比乌斯反演
GCD Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...
- HDU 4135 Co-prime 欧拉+容斥定理
Co-prime Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Su ...
随机推荐
- 微软职位内部推荐-Principal Development Lead
微软近期Open的职位: Job Title: Principal Development Lead Work Location: Suzhou, China This is a once in a ...
- [android界面]android中src和background区别——前景与背景
ImageView中XML属性src和background的区别: background会根据ImageView组件给定的长宽进行拉伸,而src就存放的是原图的大小,不会进行拉伸.src是图片内容(前 ...
- js运动框架 step by step
开启setInterval定时器之前,请先清除之前的定时器 window.onload = function() { var btn = document.getElementById('btn'); ...
- 基于React Native的Material Design风格的组件库 MRN
基于React Native的Material Design风格的组件库.(为了平台统一体验,目前只打算支持安卓) 官方网站 http://mrn.js.org/ Github https://git ...
- JS insertAdajcentHTML 方法简介
修改节点的内容除了常用的innerHTML和innerText之外,还有insertAdjacentHTML和insertAdjacentText方法,可以在指定的地方插入内容.insertAdjac ...
- 问卷调查——答卷
1.你对自己的未来有什么规划?做了哪些准备?答:对未来的规划,就是像大多数人一样,在学校里有一个好的成绩,掌握扎实的专业基础,然后在国考上得到一个好成绩,得到一个好的工作机会,然后努力工作.目标很简单 ...
- javascript中prototype、constructor以及__proto__之间的三角关系
三者暧昧关系简单整理 在javascript中,prototype.constructor以及__proto__之间有着“著名”的剪不断理还乱的三角关系,楼主就着自己对它们的浅显认识,来粗略地理理以备 ...
- 【MPI学习3】MPI并行程序设计模式:不同通信模式MPI并行程序的设计
学习了MPI四种通信模式 及其函数用法: (1)标准通信模式:MPI_SEND (2)缓存通信模式:MPI_BSEND (3)同步通信模式:MPI_SSEND (4)就绪通信模式:MPI_RSEND ...
- storm如何保证at least once语义?
背景 前期收到的问题: 1.在Topology中我们可以指定spout.bolt的并行度,在提交Topology时Storm如何将spout.bolt自动发布到每个服务器并且控制服务的CPU.磁盘等资 ...
- IoC框架(转载)
1 IoC理论的背景 我们都知道,在采用面向对象方法设计的软件系统中,它的底层实现都是由N个对象组成的,所有的对象通过彼此的合作,最终实现系统的业务逻辑. 图1:软件系统中耦合的对象 如果 ...