CF1111C Creative Snap 线段树
用线段树模拟一下就好了~
code:
#include <cstdio>
#include <algorithm>
#define lson ls[x]
#define rson rs[x]
#define N 10000006
#define ll long long
#define setIO(s) freopen(s".in","r",stdin)
using namespace std;
ll A,B;
int n,k,tot;
int ls[N],rs[N],sum[N];
void update(int &x,int l,int r,int p)
{
if(!x) x=++tot;
++sum[x];
if(l==r) return;
int mid=(l+r)>>1;
if(p<=mid) update(lson,l,mid,p);
else update(rson,mid+1,r,p);
}
ll query(int x,int l,int r)
{
if(!x) return A;
if(l==r) return B*sum[x];
int mid=(l+r)>>1;
ll re=B*1ll*(r-l+1)*sum[x];
return min(re,query(lson,l,mid)+query(rson,mid+1,r));
}
int main()
{
// setIO("input");
int i,j,bs=1,rt=0;
scanf("%d%d%lld%lld",&n,&k,&A,&B);
for(i=1;i<=n;++i) bs<<=1;
for(i=1;i<=k;++i)
{
int po;
scanf("%d",&po),update(rt,1,bs,po);
}
printf("%lld\n",query(rt,1,bs));
return 0;
}
CF1111C Creative Snap 线段树的更多相关文章
- [CF1111C]Creative Snap
题目大意:有一个长度为$2^n(n\leqslant30)$的格子,有$k(k\leqslant10^5)$个球,分布在这些格子中,有两种消灭格子的方法: 1. 若一段格子长度大于等于$2$,可以对半 ...
- bzoj3932--可持久化线段树
题目大意: 最近实验室正在为其管理的超级计算机编制一套任务管理系统,而你被安排完成其中的查询部分.超级计算机中的 任务用三元组(Si,Ei,Pi)描述,(Si,Ei,Pi)表示任务从第Si秒开始,在第 ...
- codevs 1082 线段树练习 3(区间维护)
codevs 1082 线段树练习 3 时间限制: 3 s 空间限制: 128000 KB 题目等级 : 大师 Master 题目描述 Description 给你N个数,有两种操作: 1:给区 ...
- codevs 1576 最长上升子序列的线段树优化
题目:codevs 1576 最长严格上升子序列 链接:http://codevs.cn/problem/1576/ 优化的地方是 1到i-1 中最大的 f[j]值,并且A[j]<A[i] .根 ...
- codevs 1080 线段树点修改
先来介绍一下线段树. 线段树是一个把线段,或者说一个区间储存在二叉树中.如图所示的就是一棵线段树,它维护一个区间的和. 蓝色数字的是线段树的节点在数组中的位置,它表示的区间已经在图上标出,它的值就是这 ...
- codevs 1082 线段树区间求和
codevs 1082 线段树练习3 链接:http://codevs.cn/problem/1082/ sumv是维护求和的线段树,addv是标记这歌节点所在区间还需要加上的值. 我的线段树写法在运 ...
- PYOJ 44. 【HNSDFZ2016 #6】可持久化线段树
#44. [HNSDFZ2016 #6]可持久化线段树 统计 描述 提交 自定义测试 题目描述 现有一序列 AA.您需要写一棵可持久化线段树,以实现如下操作: A v p x:对于版本v的序列,给 A ...
- CF719E(线段树+矩阵快速幂)
题意:给你一个数列a,a[i]表示斐波那契数列的下标为a[i],求区间对应斐波那契数列数字的和,还要求能够维护对区间内所有下标加d的操作 分析:线段树 线段树的每个节点表示(f[i],f[i-1])这 ...
- 【BZOJ-3779】重组病毒 LinkCutTree + 线段树 + DFS序
3779: 重组病毒 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 224 Solved: 95[Submit][Status][Discuss] ...
随机推荐
- Http发送Json
public static JSONObject post(String url,JSONObject json){ HttpClient client = new DefaultHttpClient ...
- JS求多个数组的重复数据
今天朋友问了我这个问题:JS求多个数组的重复数据 注: 1.更准确的说是只要多个数组中有两个以上的重复数据,那么这个数据就是我需要的 2.单个数组内的数据不存在重复值(当然如果有的话,你可以去重) 3 ...
- jsc2019_qualE Card Collector
题目大意 给你n个点的坐标和权值 问先在每一行选一个点再在每一列选一个没选过的点 求最大权值和 分析 可以想到将点转化为边,将两个坐标对应两个点 所以问题转化为选H+W个边 使得所有边的度都不为0 则 ...
- 小程序页面间传值(处理传值为对象,简单传值直接用options.XX的形式获取)
bookgoods:function(){ var Json = JSON.stringify(this.data.goods) wx.navigateTo({ url: '/pages/bookgo ...
- day11—前端学习之我不想看书
转行学开发,代码100天——2018-03-27 今天是前端学习,博客记录见证的第11天,按理说还要继续写一写代码相关的内容. 但由于今天的代码实践都是一些基础知识,还是想谈一谈关于编程方面看书的事情 ...
- 命令行下DEBIAN7时间错误的问题(转)
Debian下的时间设置问题 Debian系统经常会遇到时间不准的情况,以下几个步骤可让您轻松摆脱烦恼: 1.设定正确的时区编辑/etc/timezone,写入Asia/Shanghai 2.使用da ...
- [LeetCode] 137. Single Number II (位操作)
传送门 Description Given an array of integers, every element appears three times except for one, which ...
- 云计算+区块链=BaaS
云计算+区块链=BaaS 本文来自于:https://www.toutiao.com/i6540096399017509389/ 云计算和区块链的区别 云计算现在已经是一个成熟的技术和应用了,美国国家 ...
- vs2010修改的内容在浏览器页面不变怎么办
解决方法1: 如果是静态页面, Ctrl+F5 强制刷新浏览器页面 解决方法2: 页面中<%@ Page Language="C#" CodeBehind="Def ...
- Chrome开启多线程下载
Chrome多线程下载也和标签页预览一样属于Google测试中的功能,可通过在地址栏输入chrome://flags/,然后在搜索框中输入Parallel downloading,选择enabled, ...