题目链接: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(容斥定理)的更多相关文章

  1. 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 ...

  2. HDU 1796How many integers can you find(简单容斥定理)

    How many integers can you find Time Limit: 12000/5000 MS (Java/Others)    Memory Limit: 65536/32768 ...

  3. hdu_5213_Lucky(莫队算法+容斥定理)

    题目连接:hdu_5213_Lucky 题意:给你n个数,一个K,m个询问,每个询问有l1,r1,l2,r2两个区间,让你选取两个数x,y,x,y的位置为xi,yi,满足l1<=xi<=r ...

  4. How Many Sets I(容斥定理)

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3556 How Many Sets I Time Limit: 2 ...

  5. HDU - 4135 Co-prime 容斥定理

    题意:给定区间和n,求区间中与n互素的数的个数, . 思路:利用容斥定理求得先求得区间与n互素的数的个数,设表示区间中与n互素的数的个数, 那么区间中与n互素的数的个数等于.详细分析见求指定区间内与n ...

  6. BZoj 2301 Problem b(容斥定理+莫比乌斯反演)

    2301: [HAOI2011]Problem b Time Limit: 50 Sec  Memory Limit: 256 MB Submit: 7732  Solved: 3750 [Submi ...

  7. BZOJ2839 : 集合计数 (广义容斥定理)

    题目 一个有 \(N\) 个 元素的集合有 \(2^N\) 个不同子集(包含空集), 现在要在这 \(2^N\) 个集合中取出若干集合(至少一个), 使得它们的交集的元素个数为 \(K\) ,求取法的 ...

  8. HDU 1695 GCD 欧拉函数+容斥定理 || 莫比乌斯反演

    GCD Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...

  9. HDU 4135 Co-prime 欧拉+容斥定理

    Co-prime Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Su ...

随机推荐

  1. Content Factory:辅助 MonoGame 游戏开发

    Content Factory 是一款辅助 MonoGame 游戏开发的工具.它提供素材管理的多项功能,包括编译素材.编辑自定义数据等,并能同时应用多个游戏平台. 项目设置 选择要创建游戏项目的平台, ...

  2. Socket Programming in C#--Getting Started

    Getting Started You can argue that one can overcome these shortcomings by multithreading meaning tha ...

  3. nginx log的json格式:

    nginx log的json格式: 为了elk便于统计: yum安装nginx: log_format json '{"@timestamp": "$time_iso86 ...

  4. 解决网站在负载均衡环境下SESSION丢失的问题

    在WEB场中,动态网页往往会因为几台主机做了负载而产生SESSION丢失的问题,网上也有很多的介绍,我这里只将我经历的过程给大家分享一下:   系统要运行在负载平衡的 Web 场环境中,而系统配置文件 ...

  5. Linux常用指令---grep(搜索过滤)

    Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expression Print,表示全局正则表达 ...

  6. 学习Shell脚本编程(目录)

    所涉及的内容如下: Shell命令行的运行 编写.修改权限和执行Shell程序的步骤 在Shell程序中使用参数和变量 表达式比较.循环结构语句和条件结构语句 在Shell程序中使用函数和调用其他Sh ...

  7. 解答WPF中ComboBox SelectedItem Binding不上的Bug

    正在做一个打印机列表,从中选择一个打印机(System.Printing) <ComboBox Width="150" ItemsSource="{Binding ...

  8. java识别简单的验证码

    1.老规矩,先上图 要破解类似这样的验证码: 拆分后结果: 然后去匹配,得到结果. 2.拆分图片 拿到图片后,首先把图片中我们需要的部分截取出来. 具体的做法是,创建一个的和图片像素相同的一个代表权重 ...

  9. 我为什么期待M#?

    前段时间的报导"微软将推新编程语言M#:系统编程级别的C#",第一眼看到并没有当初看到F#的那一种不安,反而感到欣喜,业界一直存在"语言论"讨论c#.java. ...

  10. ASP.NET服务器控件使用之MultiView和View

    MultiView 控件是一组 View 控件的容器.使用它可定义一组 View 控件,其中每个 View 控件都包含子控件. 用 ActiveViewIndex 属性或SetActiveView 方 ...