luoguP4647 [IOI2007] sails 船帆】的更多相关文章

https://www.luogu.org/problemnew/show/P4647 首先发现答案与顺序无关,令 $ x_i $ 表示高度为 $ i $ 的那一行帆的个数,第 $ i $ 行对答案的贡献为 $ \frac{x_i * (x_i - 1)}{2} $ 先把旗杆按照高度从小到大排序,有一个显然的贪心是每次选择能放的地方帆最少的一行放一个帆,最少的一行放一个帆对答案的贡献一定最小,而后面的旗杆高度更高,能选择放帆的地方更多,这样可以保证答案最小(可以感性理解一下 那么我们的做法就出来…
显然答案与杆的顺序无关(按每个高度考虑). 从高到低考虑杆,设此时的状态为\(S\),\(S[i]\)是高度\(i\)的帆的数目,初始全为\(0\),当前杆的高度为\(h\),杆上需要放置的帆的数目为\(k\),贪心地,假设两个高度的同等宜选,优先选择更高的:帆尽量放置在\(S[i]=0(i\le h)\)的高度上,若还有剩余,设剩下\(t(t\le k)\)个,则放置在除去以选择的高度以外,\(S[i](i\le h)\)前\(t\)小的位置. 整理一下,每次选出\(S[1\cdots h]\…
题目描述 让我们来建造一艘新的海盗船.船上有 N个旗杆,每根旗杆被分成单位长度的小节.旗杆的长度等于它被分成的小节的数目.每根旗杆上会挂一些帆,每张帆正好占据旗杆上的一个小节.在一根旗杆上的帆可以任意排布在不同的小节中,但是每个小节上至多能挂一张帆. 在风中,帆的不同排布方式会产生不同的推动力.靠近船头的帆比它后面的相同高度上的帆获得的推动力少,换句话说,靠近船头的帆的推动力由于受它后面相同高度的帆的影响而打了折扣.对于任意一张帆,它的推动力折扣等于在它后面并且和它在同一高度的帆的数目. 所有帆…
BZOJ 洛谷 首先旗杆的顺序没有影响,答案之和在某一高度帆的总数有关.所以先把旗杆按高度排序. 设高度为\(i\)的帆有\(s_i\)个,那么答案是\(\sum\frac{s_i(s_i-1)}{2}\),显然我们要让每一行(高度)的帆数都尽量少. 然后可以想到二分,二分每一行的帆数不超过\(mid\)是否可行.显然我们从最高的旗杆的最大高度部分往下填就可以了,要用线段树维护.复杂度\(O(n\log^2n)\). 但是不需要这个二分啊,每次找到\(s_i\)最小的位置,把\(k\)个帆填进去…
可以发现旗杆的顺序是没有用的,对于每列,它的答案是它的最大值mx*(mx+1)/2 高度由小到大排序旗杆,问题可以转化为在前h行选k个最小的值 考虑激情splay乱搞(我只会splay......) 设树中序遍历第i个点的d值表示当前最后一个旗帜上面的数字为i-1的列的数量 我们可以二分一下求出我们要利用到第几个点x,对于x之前的点,他们的d值都要全部送给后一个点 所以我们可以删掉x这个点,并在最前面加一个点,这就相当于整体向右移动了一位 对于x这个点单独处理,删除前计算出留在x的数目和给x+1…
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem 10983 18765 Y 1036 [ZJOI2008]树的统计Count 5293 13132 Y 1588 [HNOI2002]营业额统计 5056 13607 1001 [BeiJing2006]狼抓兔子 4526 18386 Y 2002 [Hnoi2010]Bounce 弹飞绵羊 43…
通过sails与阿里大于来实现注册短信验证码的发送,逻辑图如下 1.用户在客户端发送手机号给服务器,服务器接收到手机号,生成对应时间戳,随机四位数验证码 2.服务器将电话号码和验证码告诉阿里大于服务器,阿里大于服务器将验证码发送到对应手机 3.服务器将接受到的手机号,时间戳,验证码,与服务器秘钥(为了增加秘钥破解难度,提高安全)通过md5加密生成token,并且将token与时间戳发送到前端 4.前端接收到短信,输入验证码后,再把验证码,手机号,接收到的token1和时间戳发送到服务器进行验证…
先开一坑,有空更新,记录最近钉钉项目上对node及sails框架的学习记录和理解…
回到目录 我们在sails框架进行node.js开发时,会涉及到项目的迁移,当迁移后可能你的module即丢失,这时,希望快速的安装所有的包包,可以使用下面命令 1 cd 你当前的sails项目 2 执行命令:npm install 3 说明,在当前项目里执行npm install这时,它会在查找当前目录的package.json文件,然后把包文件里的所有模块都自动安装,确实方便,这让我想起了VS里的nuget,也是可以自动还原所有包包的,设计如出一辙!…
回到目录 Sails是一个Node.js的中间件架构,帮助我们很方便的构建WEB应用程序,网址:http://www.sailsjs.org/,它主要是在Express框架的基础上发展起来的,扩展了新的功能组件,下面我们来看一下安装方法 一 安装Sails npm -g install sails 二 建立一个Sails的项目 sails new testProject 三 启动项目 cd testProject sails lift 四 项目的结构,基于MVC理念…