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. 查询死锁和处理死锁(SqlServer)

    -------------------查询死锁,极其引起的原因-------------------------------use master go create procedure sp_who_ ...

  2. yii 分页 (ajax)

    Controller:class MemberController extends Controller { public function actionmember_list()    {      ...

  3. Linux查找yum安装软件在系统中路径

    find文件查找http://www.ruanyifeng.com/blog/2009/10/5_ways_to_search_for_files_using_the_terminal.html

  4. C++ 推断进程是否存在

    [cpp] view plaincopyprint? #include <windows.h> #include "psapi.h" #include"std ...

  5. WinXP 无线提示“区域中找不到无线网络”的一种可能原因!

    貌似WinXP还是无限经典,我也一直还在用,不知道哪天才会放弃.这次遇见的问题,或许也有XP爱好者也遇得见,记下点文字备忘.----------------------- 单调的切割线 ------- ...

  6. [Angular 2] Filter items with a custom search Pipe in Angular 2

    This lessons implements the Search Pipe with a new SearchBox component so you can search through eac ...

  7. [A Top-Down Approach][第二章 应用层]

    [A Top-Down Approach][第二章 应用层] 标签(空格分隔): 未分类 网络应用是计算机网络存在的理由 首先从定义几个关键的应用层概念开始 应用程序所需要的网络服务,客户和服务器,进 ...

  8. OD: First Step

    开始学习 0Day 了,前进了小小一步:<0Day 安全:软件漏洞分析艺术>第一篇末尾的 crack_me 实验成功了. 纪念一下. 几个概念: PE:    Portable Execu ...

  9. CodeFirst解决数据迁移问题

    CodeFirst解决数据迁移问题 分类: 数据库 设计模式 c#2013-04-24 17:56 137人阅读 评论(0) 收藏 举报 工程用的MVC + Entity Framework,根据Co ...

  10. FineUI 点击按钮添加标签页

    <html xmlns="http://www.w3.org/1999/xhtml"> <head id="Head1" runat=&quo ...