[POI2015]ODW

喵锟讲过。分块。

N>=blo,那就暴力倍增往上跳。O(N/blo*logN)

N<blo,预处理,f[i][j]表示,i往上跳,每次跳j步,到根节点为止,权值和。O(N*blo)(预处理复杂度)

平衡一下:N/blo*logN=N*blo

blo=sqrt(NlogN)

由于上去到lca再下去,

细节比较多。

[POI2009]KAM-Pebbles

阶梯型nim游戏的变形。

阶梯型nim游戏:高度单调的阶梯。每次只能把a[i]中选择x个,放到a[i-1]中,或者把a[1]中扔掉若干个。问有无先手必胜策略。

等价于对奇数堆做nim游戏。

第一次先手,就把奇数堆按照必胜策略移动。偶数堆不管,当做垃圾桶。

如果后手移动奇数堆到偶数堆,就按照奇数堆必胜策略移动。

反之,就把后手移动过来x的奇数堆再往前移动x个。对于奇数堆的状态不变。早晚会把偶数堆移动完。

所以,等价。

这个题的话,保证单调不减,设c[i]=a[i]-a[i-1],c[1]=a[1],

那么,每次只能找一个c[i]>0的拿走x,相当于:c[i]->c[i]-x,c[i+1]->c[i+1]+x

所以,就是一个倒着做的阶梯型nim游戏了。

从后往前每隔一个异或一下。即可。

[POI2007]ODW-Weights

性质题。

http://hzwer.com/4761.html

关键点:任何两个砝码都有一个特征,他们的中总有一个的重量是另外一个的整数倍,当然他们也可能相等。
所以,从小到大排序,种类一共最多只有log1e9=30个。

由于只能用这些,所以就考虑用这些砝码重量将容器承重进制拆分。

然后再合并起来。代表这个位置的空间一共有多少个。

然后大力贪心。

肯定先放重量小的砝码,因为贡献都是1

肯定先占用自己的空间。因为更大的空间占据了,大的砝码就可能没地方了。并且小的空间不能为大砝码所用。小砝码不用就浪费了。

所以,交换空间一定不优。

如果自己的空间不够了,肯定要找大的空间借。因为贡献都是1,所以把这个种类的砝码放完一定不劣。

就把大的空间借一份拆出来成若干的小份空间继续供小砝码使用。

由于贪心正确。

所以,不够了就停止。

突破口:进制拆分。把所有的容器空间一起考虑,并不是单单先填一个容器。一切以放完最小的砝码为主,。。

[POI2006]PAL-Palindromes

我的想法比较简单:

按照长度sort,

然后对每个字符串跑一遍manacher

开始循环所有的字符串S。

之前的都比当前的S长度小,所以,回文中心一定在当前S中。

把扫过的字符串加入hash表。

循环当前字符串的每个位置i。如果p[i]==i,然后把i后面的hash取出来,看之前hash表中有多少个。

其实可以用trie树。

发现都是回文串,所以si+sj是回文串当且仅当si是sj的循环节。

si显然也是sj的前缀。放trie上就可以直接查找了。

对于O(1)判断si是sj的循环节:

hash(sj)*p^leni+hash(si)=hash(si)*p^lenj+hash(sj)

证明方法类似kmp的循环节证明。

[POI2008]BBB-BBB

给定一个由+1和−1构成的长度为n的序列,提供两种操作:

1.将某一位取反,花销为x

2.将最后一位移动到第一位,花销为y

要求最终p+sumn=q,且p+sumi≥0(1≤i≤n),求最小花销

sumi为1-i的前缀和

发现,对于最优解,一定可以分成两步完成:先进行若干移位,再进行若干取反。

移位不好处理。就枚举移位多少。

先要满足p+sumi>=0

选择最小的minsum,不断+2,象征把-1变成+1,直到sumi>=-p,只要找到minsum,可以O(1)判断。次数设为now。

其实是不断把位置最靠前的-1变成+1

然后处理sumn=q-p

计算差距,然后直接变化即可。次数是:now+abs(q-p-sumn-now)/2

如果需要变的话,那么意义是:变-1:把最靠前的-1变成+1,变+1:最靠后的+1变成-1。

由于题目满足一定存在解,所以,其实对每个移位的次数,都存在解。

由于-1都是最靠前变成+1,+1都是最靠后变成-1,所以最后一定是合法的。

至于minsum,可以用单调队列优化,或者预处理前缀min

https://www.luogu.org/blog/user9168/solution-p3470

[POI2009]SLO-Elephants

比较显然的是,可以分成若干个环。

然后环上要进行转换。

len长的环每个点一定都要动。然后需要一个“搬运工”

显然,贪心可知,这个“搬运工”一定是环上代价最小的。让它走len-1次。

但是WA

因为,还可以找环外面借搬运工。

找最小的x,和环上最小的y交换。然后x带着环上剩下的开始转圈。再把x和y换回来。

由于x是所有的点中代价最小的,所以不存在把x换进来,换出去的时候顺便换换别的。

总之,只有以上两种方式。(第二种我漏了)

POI 2018.10.22的更多相关文章

  1. NOIP模拟赛-2018.10.22

    模拟赛 今天第一节课是历史,当然是不可能上的,一来到机房发现今天高二考试... 老师说以后可能还要给高一考...那还不如现在跟着做好了,毕竟在学长学姐中垫底显得没那么丢人 这套题风格挺奇怪的...为什 ...

  2. 2018.10.22 bzoj1009: [HNOI2008]GT考试(kmp+矩阵快速幂优化dp)

    传送门 f[i][j]f[i][j]f[i][j]表示从状态"匹配了前i位"转移到"匹配了前j位"的方案数. 这个东西单次是可以通过跳kmp的fail数组得到的 ...

  3. POI 2018.10.20

    [POI2005]BANK-Cash Dispenser 有多少个4位字符串是所有操作序列的子串. 10^4枚举字符串.暴力判断会TLE 发现,我们就是在每个操作序列中不断找第一个出现的c字符. 预处 ...

  4. 2018.10.22 bzoj4380: [POI2015]Myjnie(区间dp)

    传送门 区间dp好题. f[i][j][k]f[i][j][k]f[i][j][k]表示区间[i,j][i,j][i,j]最小值为kkk时的最大贡献. 然后可以枚举端点转移. 当时口胡到这儿就不会了. ...

  5. 2018.10.22 bzoj1742: Grazing on the Run 边跑边吃草(区间dp)

    传送门 区间dp入门题. 可以想到当前吃掉的草一定是一个区间(因为经过的草一定会吃掉). 然后最后一定会停在左端点或者右端点. f[i][j][0/1]f[i][j][0/1]f[i][j][0/1] ...

  6. 2018.10.22 cogs2471. [EZOI 2016]源氏的数学课(线段树)

    传送门 线段树入门操作. 直接把题目给的(r−i+1)∗a[i](r-i+1)*a[i](r−i+1)∗a[i]拆开变成(r+1)∗1∗a[i]−i∗a[i](r+1)*1*a[i]-i*a[i](r ...

  7. POI 2018.10.27

    [POI2015]LOG 维护一个长度为n的序列,一开始都是0,支持以下两种操作:1.U k a 将序列中第k个数修改为a.2.Z c s 在这个序列上,每次选出c个正数,并将它们都减去1,询问能否进 ...

  8. POI 2018.10.21

    [POI2008]TRO-Triangles https://www.cnblogs.com/GXZlegend/p/7509699.html 平面上有N个点. 求出所有以这N个点为顶点的三角形的面积 ...

  9. noip训练 2018.10.22~2018.10.23

    day1 100+100+0=200 T1 稍微比划一下,发现其实就是缩点双,然后区间最小值的和 T2 发现答案为原lis|+1|-1 对每个点做从前最长上升序列以及从后最长下降序列, 想了半个小时怎 ...

随机推荐

  1. ReadyAPI 教程和示例(二)

    声明:如果你想转载,请标明本篇博客的链接,请多多尊重原创,谢谢! 本篇使用的 ReadyAPI版本是2.5.0 接上一篇: 4.修改SoapUI测试 本节将演示如何为测试用例添加测试步骤以及更改请求参 ...

  2. Fiddler使用总结(二)

    在上一篇中介绍了Fiddler的基本使用方法.通过上一篇的操作我们可以直接抓取浏览器的数据包.但在APP测试中,我们需要抓取手机APP上的数据包,应该怎么操作呢? Andriod配置方法: .确保手机 ...

  3. Maya Api笔记 - How polygons are handled internally

    为加深记忆和理解Maya的Polygon,尝试利用空闲时间翻译Maya Api文档相关章节. How polygons are handled internally - 多边形是如何在内部处理的

  4. 游戏AI之群组行为

    群组行为指的是多个对象组队同时进行的情况.每个boid需满足分离,队列,凝聚三个基本的规则. 分离:群组中的每个个体都与相邻的个体保持一定的距离. 队列:群组以相同的速度,向相同的方向移动. 凝聚:与 ...

  5. Java开发工程师(Web方向) - 03.数据库开发 - 第5章.MyBatis

    第5章--MyBatis MyBatis入门 Abstract: 数据库框架的工作原理和使用方法(以MyBatis为例) 面向对象的世界与关系型数据库的鸿沟: 面向对象世界中的数据是对象: 关系型数据 ...

  6. ORACLE高级部分内容

    1.pl/sql基本语句 DECLARE BEGIN END; / 循环语句 DECLARE I  NUMBER(2):=1; BEGIN WHILE I<100 LOOP I:=I+1; EN ...

  7. Java中定时器相关实现的介绍与对比之:Timer和TimerTask

    Timer和TimerTask JDK自带,具体的定时任务由TimerTask指定,定时任务的执行调度由Timer设定.Timer和TimerTask均在包java.util里实现. 本文基于java ...

  8. BZOJ 3790 神奇项链 hash/后缀自动机+贪心

    Description 母亲节就要到了,小 H 准备送给她一个特殊的项链.这个项链可以看作一个用小写字母组成的字符串,每个小写字母表示一种颜色. 为了制作这个项链,小 H 购买了两个机器.第一个机器可 ...

  9. ajax与servlet交互(通过JSON),JAVA的arraylist传到前端的方法

    所实现的效果:首先从前端(ajax)传参数给servlet,然后servlet经过处理,把arraylist类型的参数以JSON字符串的形式返回给前端(ajax),然后前端经过解析,把JSON字符串解 ...

  10. windows批处理学习---01

    一. 标记符号: CR(0D) 命令行结束符 Escape(1B) ANSI转义字符引导符 Space() 常用的参数界定符 Tab() ; = 不常用的参数界定符 + COPY命令文件连接符 * ? ...