NOIP2014模拟8.21

由于太久没写博客了。。要一天天的补。。我们从最新的补起吧

T1.子矩阵

【题目大意】在一个N*M的矩阵中含有1-N*M个整数,且每个数恰好出现一次,对于一个子矩阵,我们定义一个权值VAL,VAL等于该子矩阵包含的数的最小值。求对于每一个VAL(1-N*M),有多少个子矩阵的权值为这个VAL。

【数据范围】1<=n,m<=300

【解题思路】有部分分可以通过O(N`4)的时间复杂度做,该做法在此处不做详细说明。然后废话一段,介绍一种思考方向,虽然作者至此时都没想到怎么用该思路来解决这道题,但欢迎个位勇敢的思考:又大到小枚举VAL,每次加入新的一个点,维护一个联通块,求联通块中矩阵个数。好,废话太多了,额,讲正解吧:枚举一个子矩阵的开头行以及它的高度(结尾行),维护一个数组MIN[I]表示,当前列I中的最小值。再维护LEFT[I],RIGHT[I],表示从LEFT[I],RIGHT[I]这个区间的最小值保证为MIN[I],具体的维护方法是O(N)我们可以用单调栈。然后对于ANS[MIN[I]]的贡献为。。。(此处自行思考)

【时间复杂度】枚举开始行O(N),结束行O(N),维护MIN以及LEFT和RIGHT都是O(N),共O(aN`3)

T2.议案决定

【题目大意】国王手下有M个大臣,他们有一天对国王要处理的N件事务进行投票。每个大臣可以对两件事务进行投票(赞成或反对),格式如下:x c_x y c_y(x, y为整数,c_x, c_y为“Y”(表示赞成)或“N”(表示反对)(不含双引号),表示这个大臣对事务x的态度为c_x,对事务y的态度为c_y)。这些大臣非常难以对付,如果国王的决定和某个大臣的两个意见都不同,那么这个大臣就会离开国王。小C认为不能让任何一个大臣离开国王,否则国王就无法正常地处理自己的事务。请你帮助小C做个决定。

【数据范围】1<=n<=1000,1<=m<=4000

【解题思路】假如你还在苦苦思索网络流的构图,恭喜你,你掉坑里了。假如你想继续思索构图的话,作者全力支持你,

好,本题的正解是搜索,对,你没听错,就是搜索,不用网络流,只用搜索。

这是经典的2-SAT模型。我们对于每一个事务,把它分成两个点,分别表示Y和N。

举个例子:大臣1: 1 N 2 Y

我们把事务1对应的Y往事务2对应的Y连边,事务2对应的N往事务事务1对应的N连边

大臣2: 3 Y 2 Y

我们把事务3对应的N往事务2对应的Y连边,事务2对应的N往事务事务3对应的Y连边

然后对于每个事务I,我们分别从它的两个点往外拓展,假如走到了它对立的点则表明,该起点对应的决定是不对的。

然后假如两个点都不可以,就搞个IMPOSSIBE

两个点都可以,搞个?(表示皆可)

其中一个可以,(Y或N)

T3.签到题3

【题目大意】给定一棵有根树(根节点为1),每个点都带有权值,对于点u,其权值设为a[u],其父亲为fa[i]。现有两个函数f1,f2,定义如下:
如果u=1,f1[u]=a[u],f2[u]=1
否则
如果f1[fa[u]]+1<a[u] f1[u]=a[u],f2[u]=1;
如果f1[fa[u]]+1>a[u] f1[u]=f1[fa[u]]+1,f2[u]=f2[fa[u]]
如果f1[fa[u]]+1=a[u] f1[u]=f1[fa[u]]+1,f2[u]=f2[fa[u]]+1
现在有两种操作:
0 u val 表示将a[u]改成val
1 u 表示查询f1[u]和f2[u]

【数据范围】N<=200000,Q<=200000

【解题思路】比赛结果出来后,痛哭流泪,作为全场唯一一个用正解过的人尽然比那些水过去的人慢。

我们直奔正解:树链剖分,维护区间最大值,对于一个点X,它有一个祖先Y,那么点Y对于点X的f1影响是

a[y]+(deep[x]-deep[y]),实际上f1就是求一个点到树根的链上,最大的值,f2就是求最大的值有多少个。

然后对与每个点I,修改操作就是把A[Y]-DEEP[Y]修改线段树中对应区间,这是LOG的。查询操作,则通过树链剖分,求最优值,这也是LOG的

【时间复杂度】O(N+QLOGN)非常可观,对于那些水过去的,哭脸。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值