D

  一开始想错了,试图用"前缀和-容量"来求从上层流下来了多少水",但这是错的,因为溢出可能发生在中间.

  然后发现对于每层,溢出事件只会发生一次,所以可以用类似并查集的办法,在每次加水后直接更新每层的容量就行了.

E

  推出公式后发现只要预处理坐标前缀和sum[]和sum的前缀和ssum[]就可以在o(1)时间内求出给定区间的答案,

  接下来枚举区间就行了(区间长度是给定的):

  左端点右移,需要先删除第一个点,相当于后面每个点产生的统计值减去一个值v,v可以利用sum快速计算;

  添加右端点,需要加上一个值v,v可以利用sum和ssum快速计算.

  

 struct node
{
int id;
llong v;
};node x[maxn]; llong n,k,sum[maxn],ssum[maxn];
llong getsum(int l,int r){return l==?sum[r]:sum[r]-sum[l-];}
llong getssum(int l,int r)
{
if (l<=)
{
if (r<) return 0ll;
return ssum[r];
}else return ssum[r]-ssum[l-];
}
bool cmp(node u,node v) {return u.v<v.v;}
int main()
{
// freopen("test.txt","r",stdin);
scanf("%I64d",&n);
for (int i= ; i<=n ; i++ )
{
scanf("%I64d",&x[i].v);
x[i].id = i;
}
sort(x+,x++n,cmp);
// for (int i=1 ; i<=n ; i++ ) printf("%I64d%c",x[i].v,i==n?'\n':' ');
scanf("%I64d",&k);
for (int i= ; i<=n ; i++ ) sum[i] = sum[i-]+x[i].v;
for (int i= ; i<=n ; i++ ) ssum[i] = ssum[i-]+sum[i];
llong f=;
llong ans;
int p=;
// printf("sum:\n");
// for (int i=1 ; i<=n ; i++ ) printf("%I64d%c",sum[i],i==n?'\n':' ');
// printf("ssum:\n");
// for (int i=1 ; i<=n ; i++ ) printf("%I64d%c",ssum[i],i==n?'\n':' ');
for (int i= ; i<=n ; i++ )
{
if (i<k) f += (llong)(i+)*x[i].v;
else
{
f -= getsum(i-k,i-);
f += k*x[i].v;
llong a = getssum(i-k+,i)-k*sum[i-k];
llong b = getssum(i-k,i-)-k*sum[i-k];
llong c = getsum(i-k+,i);
llong tmp = 2ll*f-a-b-c;
// printf("i=%d f=%I64d a=%I64d b=%I64d c=%I64d tmp=%I64d\n",i,2ll*f,a,b,c,tmp);
if (!p||ans>tmp)
ans = tmp,p=i;
}
}
for (int i=p-k+ ; i<=p ; i++ ) printf("%d%c",x[i].id,i==p?'\n':' ');
return ;
}

Codeforce 218 div2的更多相关文章

  1. Codeforce Round #218 Div2

    A:没个元素的个数少的变成多的和就是了 B:居然被systemtest搓掉了- -分东西,我改的代码,还是shit一样的过的...别人的直接两个操作数相减就可以了! C:二分题- -,没想到比赛时因为 ...

  2. codeforce 192 div2解题报告

    今天大家一起做的div2,怎么说呢,前三题有点坑,好多特判.... A. Cakeminator 题目的意思是说,让你吃掉cake,并且是一行或者一列下去,但是必须没有草莓的存在.这道题目,就是判断一 ...

  3. Codeforce 287 div2 C题

    题目链接:http://codeforces.com/contest/507/problem/C 解题报告:现在有一个满二叉树型的迷宫,入口在根结点,出口在第n个叶节点,有一串命令,LRLRLRLRL ...

  4. codeforce #339(div2)C Peter and Snow Blower

    Peter and Snow Blower 题意:有n(3 <= n <= 100 000)个点的一个多边形,这个多边形绕一个顶点转动,问扫过的面积为多少? 思路:开始就认为是一个凸包的问 ...

  5. Codeforce 220 div2

    D 插入: 在当前指针位置sz处插入一个1,col[sz]记录插入的内容,sz++; 删除i: 找到第i个1的位置,赋为0; 于是转化为一个维护区间和的问题; trick: 如果是依次删除a[0],a ...

  6. Codeforce 217 div2

    C 假设每种颜色的个数都相同,可以用轮换的方式,让答案达到最大n,当不同的时候,可以每次从每种颜色中取出相同个数的手套来操作; 一直迭代下去直到只剩下1种颜色; 再将这一种颜色与之前交换过的交换就行了 ...

  7. Codeforce 216 div2

    D 只要搞清楚一个性质:确定了当前最大和次大的位置,局面就唯一确定了; 根据这个性质设计dp,统计到达该局面的方法数即可. E 询问的要求是: 求有多少个区间至少覆盖了询问的点集中的一个; 转化成逆命 ...

  8. codeforce 459 DIV2 D题

    题意   在一个DAG上面有N个点M条边,每一条边上都有一个小写字母.两个人Max and Lucas 每个人一颗棋子,两个人轮流行棋,当前这一步选择的路上面的字母必须大于等于上一步路上面的字母,当轮 ...

  9. codeforce 382 div2 E —— 树状dp

    题意:给一棵n个结点的无根树染色,求使每个结点距离为k的范围内至少有一个被染色的结点的总染色方法数目 分析:首先我们定义: 对于结点v, 如果存在一个黑色结点u距离v不超过k,则结点v被“控制” 首先 ...

随机推荐

  1. 自己写的Ext树,Ext3.4,静态全部加载

    var load = function(){ /** * 书籍资料目录 */ var bookIT = new Ext.tree.TreeNode({ text:"IT", lea ...

  2. [深入React] 7.组件生命周期

    生命周期一共分三段:初始化,运行中,销毁.按照顺序: 初始化 getDefaultProps():Object 全局只会调用一次,为当前类生成的默认props,会被父组件传入的同名props覆盖. g ...

  3. (转)Maven实战(二)构建简单Maven项目

    上一节讲了maven的安装和配置,这一节我们来学习一下创建一个简单的Maven项目 1. 用Maven 命令创建一个简单的Maven项目 在cmd中运行如下命令: mvn archetype:gene ...

  4. 文件上传插件Uploadify在Struts2中的应用,完整详细实例

    —>最近由于项目需要使用到一个上传插件,在网上发现uploadify挺不错,所以决定使用它,但是官网文档和例子是php的,而项目是SSI框架的,所以自己对uploadify在struts2中的使 ...

  5. RTX51 Tiny实时操作系统学习笔记—初识RTX51 Tiny

     一,RTX51 Tiny简单介绍    RTX51 Tiny是一种实时操作系统(RTOS),能够用它来建立多个任务(函数)同一时候运行的应用(从宏观上看是同一时候运行的,但从微观上看,还是独立运行的 ...

  6. [Falcor] Return the data from server

    <!-- index.html --> <html> <head> <!-- Do _not_ rely on this URL in production. ...

  7. java中不常见的keyword:strictfp,transient

    1.strictfp, 即 strict float point (精确浮点). strictfp keyword可应用于类.接口或方法.使用 strictfp keyword声明一个方法时,该方法中 ...

  8. LDAP缓存命令

    启动cacao及实例: [root@rusky bin]# cd /home/ldap/iamldap/dsee6/cacao_2/cacao/bin [root@rusky bin]# ./caca ...

  9. Head First HTML与CSS — 布局与定位

    1.流(flow)是浏览器在页面上摆放HTML元素所用的方法. 对于块元素,浏览器从上到下沿着元素流逐个显示所遇到的各个元素,会在每个块元素之间加一个换行: 对于内联元素,在水平方向会相互挨着,总体上 ...

  10. 浅谈css的预编译---less语言

    正如各位所知道的一样,css是一门标记性语言,语法相对简单,对使用者的要求也比较低 .不过可乐不知道友友们有没有发现,在使用css的时候需要书写大量看似没有逻辑的代码,不方便维护及扩展,不利于复用,尤 ...