[bzoj4240] 有趣的家庭菜园

  还是膜网上题解QAQ

  从低到高考虑,这样就不会影响后挪的草了。

  每次把草贪心地挪到代价较小的一边。位置为i的草,花费为min( 1..i-1中更高的草的数目,i+1..n中更高的草的数目 )

  因为更小的草已经被挪到两边了..所以代价就是更高的草的数目。

  拿个树状数组统计一下就好了。

 1 #include<cstdio>
 2 #include<iostream>
 3 #include<algorithm>
 4 #include<cstring>
 5 #define ll long long
 6 using namespace std;
 7 const int maxn=300002;
 8 struct zs{int v,id;}a[maxn];
 9 int mp[maxn],t[maxn],t1[maxn];
10 ll ans;
11 int i,j,k,n,m,cnt;
12
13 int ra;char rx;
14 inline int read(){
15     rx=getchar(),ra=0;
16     while(rx<‘0‘||rx>‘9‘)rx=getchar();
17     while(rx>=‘0‘&&rx<=‘9‘)ra=ra*10+rx-48,rx=getchar();return ra;
18 }
19 bool cmp(zs a,zs b){return a.v<b.v;}
20 int main(){
21     n=read();register int j;int x,y;
22     for(i=1;i<=n;i++)a[i].v=read(),a[i].id=i;
23     sort(a+1,a+1+n,cmp);
24     for(i=1;i<=n;mp[a[i].id]=cnt,i++)cnt+=a[i].v!=a[i-1].v;
25     for(i=1;i<=n;i++){
26         j=mp[i];while(j<=cnt)t1[j]++,j+=j&-j;
27     }
28     for(i=n;i>1;i--){
29         j=mp[i];while(j<=cnt)t1[j]--,j+=j&-j;
30         x=n-i,y=i-1;
31         j=mp[i];while(j)x-=t[j],y-=t1[j],j-=j&-j;
32         ans+=x<y?x:y;
33         j=mp[i];while(j<=cnt)t[j]++,j+=j&-j;
34     }
35     printf("%lld\n",ans);
36 }

时间: 2024-11-02 00:39:02

[bzoj4240] 有趣的家庭菜园的相关文章

【BZOJ4240】有趣的家庭菜园 树状数组+贪心

[BZOJ4240]有趣的家庭菜园 Description 对家庭菜园有兴趣的JOI君每年在自家的田地中种植一种叫做IOI草的植物.JOI君的田地沿东西方向被划分为N个区域,由西到东标号为1~N.IOI草一共有N株,每个区域种植着一株.在第i个区域种植的IOI草,在春天的时候高度会生长至hi,此后便不再生长. 为了观察春天的样子而出行的JOI君注意到了IOI草的配置与预定的不太一样.IOI草是一种非常依靠阳光的植物,如果某个区域的IOI草的东侧和西侧都有比它高的IOI草存在,那么这株IOI草就会

有趣的家庭菜园

Description 对家庭菜园有兴趣的JOI君每年在自家的田地中种植一种叫做IOI草的植物.JOI君的田地沿东西方向被划分为N个区域,由西到东标号为1~N.IOI草一共有N株,每个区域种植着一株.在第i个区域种植的IOI草,在春天的时候高度会生长至hi,此后便不再生长. 为了观察春天的样子而出行的JOI君注意到了IOI草的配置与预定的不太一样.IOI草是一种非常依靠阳光的植物,如果某个区域的IOI草的东侧和西侧都有比它高的IOI草存在,那么这株IOI草就会在夏天之前枯萎.换句话说,为了不让任

【bzoj4240】有趣的家庭菜园

只要统计每一个左右分别有多少比他高的去min,然后求和 #include<algorithm> #include<iostream> #include<cstdlib> #include<cstring> #include<cstdio> #include<cmath> using namespace std; typedef long long LL; #define lowbit(x) (x & (-x)) #define

liaoliao的四连做第二弹

liaoliao四连做第一弹 1.bzoj3211: 花神游历各国 由于$10^9$以内的数最多只会被开方$10$次,所以我们可以用线段树维护然后剪枝.. #include <cstdio> #include <cstring> #include <cstdlib> #include <algorithm> #include <cmath> #define LL long long using namespace std; const LL Ma

BZOJ 4236~4247 题解

BZOJ 4236 JOIOJI f[i][0..2]表示前i个字符中′J′/′O′/′I′的个数 将二元组<f[i][0]?f[i][1],f[i][1]?f[i][2]>扔进map,记录一下最早出现的时间 对于每个位置去map里面查一下即可 时间复杂度O(nlogn) #include <map> #include <cstdio> #include <cstring> #include <iostream> #include <alg

10年后每个家庭都会用上直销产品

你不敢跨界,就有人跨过来打劫,未来十年,是一个海盗嘉华年,各种横空而出的马云.马化腾会遍布各个领域,他们两个是开了个头而已,接下来的故事是数据重构商业,流量改写未来,旧思想渐渐消失,逐渐变成数据代码. 未来每个家庭都将被直销! 为什么这么说? 一 自由 热爱直销工作的一大原因是它有表达的自由,直销是一份自由的工作,你可以做你想做的事并凭着自己的能力,坚韧不拔的精神,为自己赢得事业的成功,没有任何工作比直销更能体现你的人生价值,没有任何工作的成败比直销更能取决于你对工作的进取心. 二 收入不限额

《昨日之前的世界:我们能从传统社会学到什么?》:有趣,但不如《枪炮》深刻。全面描述原始社群的生活。 五星推荐

<枪炮,病菌与钢铁>作者的新书.英文版2012年出版.仔细论述人类在社群组织方面的各种尝试和得失. 总体来说,这本书跟<枪炮病菌与钢铁>一样有趣,但是不如<枪炮>深刻.基本的作用是比较全面地描述了原始社群的生活.没有工业污染,生活方式非常健康,民主,貌似是许多文艺青年的梦想.不过现实很残酷,这样的生活跟现代社会的生活没法比,充满了危险,饥一顿饱一顿. 作者的一个基本的观点是目前社会形态依旧落后的许多部落的人们的智商并不低,为什么他们的社会会落后在<枪炮>一书

Femtocell家庭基站通信截获、伪造任意短信漏洞

阿里移动安全团队与中国泰尔实验室无线技术部的通信专家们一起,联合对国内运营商某型Femtocell基站进行了安全分析,发现多枚重大漏洞,可导致用户的短信.通话.数据流量被窃听.恶意攻击者可以在免费申领一台Femtocell设备之后,迅速地将其改造成伪基站短信群发器和流量嗅探器,影响公众的通信安全. 家庭基站(Femtocell,又称飞蜂窝,Femto本意是10的-15次方)是运营商为了解决室内覆盖问题而推出的基于IP网络的微型基站设备,通常部署在用户家中,甚至直接放在桌面上. 随着运营商网络建设

别小看树莓派 极客们玩出16个倍儿有趣的项目

别小看树莓派 极客们玩出16个倍儿有趣的项目 [摘要]极客和DIY爱好者使用树莓派进行无数小发明,其中一些项目非常有趣,比如机器人管家.高空拍照气球.傻瓜相机.复古游戏机等等. 腾讯数码讯(编译:Raul)新一代的树莓派体积更小.价格更低,可以利用的领域更多,因此它也成为了树莓派历史上最受欢迎的一代产品.而对于广大极客和DIY爱好者来说,如何好好的将树莓派利用一番,似乎也成为了非常有趣的项目.下面就让我们一起来看看在星球上都有哪些使用到树莓派的小发明让我们足够感兴趣. 1.定格相机 其实树莓派在