[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. katalon系列四:使用Katalon Studio录制WEB自动化脚本

    一.点击图1工具栏中的+号,选Test Case,新建一个用例. 图1 二.接着点图1录制按钮(地球上有个红点图标),打开的Web Recorder中URL输入百度的地址,浏览器选择Chrome,点击 ...

  2. Visual Studio Code 工具使用教程

    软件下载这里就不用讲了,安装完之后: 1.切换中文: 选择扩展 搜索“Language”,在下列选项选择 Chinese (Simplified) Language Pack for Visual S ...

  3. Java学习 · 初识 面向对象深入一

    面向对象深入 1.面向对象三大特征 a) 继承 inheritance 子类可以从父类继承属性和方法 子类可以提供自己的属性方法 b) 封装 encapsulation 对外隐藏某些属性和方法 对外公 ...

  4. BFC与合并 浅析

    BFC BFC 全称 Block Formatting Context.每个渲染区域用formatting context表示,它决定了其子元素将如何定位,以及和其他元素的关系和相互作用在正常流中的盒 ...

  5. ubuntu 18.04 LTS server系统安装失败问题解决

    准备自己搭一个服务器,USB引导盘的方式安装ubutun系统. 中途遇到两个问题,导致耗时比较久,记录如下. 问题一: installing system阶段卡主 具体描述: 配置镜像源地址以后,进入 ...

  6. 最短路径——Dijkstra(简易版)

    简易之处:顶点无序号,只能默认手动输入0,1,2...(没有灵活性) #include <iostream> #include <cstdio> #include <cs ...

  7. C++课堂作业2016.05.04

    GitHub/object-oriented 作业题目 开课后的第一次作业,简单地写了一个类,用成员函数来实现计算圆的面积. [代码] main.cpp #include "Area.h&q ...

  8. Spring学习(三)—— 自动装配案例分析

    Spring_Autowiring collaborators 在Spring3.2.2中自动装配类型,分别为:no(default)(不采用自动装配).byName,byType,construct ...

  9. 【APS.NET Core】- Json配置文件的读取

    在项目目录下有个 appsettings.json ,我们先来操作这个文件.在appsettings.json中添加以下内容: { "Logging": { "LogLe ...

  10. 图像检测算法Halcon 10的使用

    安装完成HALCON之后,在VS项目中添加动态链接库配置项目,并修改此项目属性的包含目录.库目录和链接器.