2017.11.06 ~ 11.10 NOIP八连测滚粗记

来源:互联网 发布:nba2konline张伯伦数据 编辑:程序博客网 时间:2024/06/10 08:43

前言:
苟过了初赛,由于我太垃圾所以最后一星期来一天两场比赛滚粗一把。

我的血还是热的,她还在汩汩流动着。如果血还没有冷下来的话,就把她尽数浇灌在废墟中,坚信着能迸发出绝美的花儿来。

Day1 早场

出题人:栋爷

T1:
给你一个长度为n的序列,你可以将他分成若干段,要求每一段内必须是一个不升或者不降的序列,问最少分成多少段

sol:
可以dp,不过我直接while跳一跳也可以过??不过很沙壁的打错了一个地方只有40分

T2:
给一个长度为n(n为偶数)的环,每个位置i有一个值i,m次操作,操作分2类,第一类:将环顺时针旋转x,例如1 2 3 4 5 6 旋转2后变成 5 6 1 2 3 4 ;第二类,交换相邻位置的值,即swap(a[1],a[2]), swap(a[3],a[4]), swap(a[5],a[6])……
给出初始环和m次操作,求最终环每个位置的值

sol:
对于交换来说,奇偶的相对位置是不变的,旋转可以把每次幅度累加起来%n弄个总幅度,维护一下奇偶的相对位置就可以了。

T3:
Alice 和 Bob 在一个二维平面上玩游戏
Alice先在(0,0)放一个棋子 (算作第一轮)
接下来Bob,Alice 2人轮流操作放棋子,每个人放棋子时,对于任意坐标(x,y),若(x-2,y)有另一人的棋子,(x-1,y-1)没有,或者(x-1,y-1)有另一人的棋子,(x-2,y)没有,他就会在(x,y)放一枚他的棋子,每个人操作时会把所有他能放棋子的格子放满,一个格子最多放1个棋子。
给出操作的轮数t,问t轮后,在以(x,y)为左下角,宽为w,高为h的矩形中,每个格子的状态
用’.’表示空,’A’表示Alice的棋子,’B’表示Bob的棋子

sol:
黑科技可以找规律,发现一个很玄学的三角形。
栋爷的做法要用Lucas定理??不是很懂

%%%Rose and 波老师成功230并列全校Rank4 Orz

Day1 晚场

出题人:硕哥

不得不吐槽一下题目的难度,明明是省选难度好吗?其实是我太弱了

T1:
Alice和Bob又在玩游戏啦
他们最近迷上了围棋,每天从早到晚都在玩,于是,棋盘的线都被他们玩得不清楚了
这时,他们决定玩一个新的游戏
先手选择一个棋子并画一条线(可以是横的也可以是竖的)
然后后手选择在这条线上的棋子也画一条线,但是不能与之前的线重合
谁不能画了就输了
假设两人都绝顶聪明
谁先走?? 肯定是Alice啊,因为他姓A
问最后谁能赢

sol:
正解竟然是二分图匹配??
先说一下我的做法,就是记录能画多少条线,奇数Alice win,偶数Bob win。
这样的解法我一度怀疑他的正确性,结果竟然拿了70分??
正解的做法就是对于棋子的x, y坐标进行二分图匹配,能完美匹配Bob win,不能就Alice win

T2:
Alice输了游戏很难受,头皮发麻,然后她玩起了纸牌
她的纸牌比较奇怪,一共有n张纸牌分别为1…n
一开始以1…n排列在桌面上
现在她想要搞一个数组p
每一次把这列纸牌中从左往右的第i张放到pi这个位置上
经过若干次这个序列就会恢复原样
难道我会问你要多少次才能恢复原样??不不不这太简单了Alice自己也会
所以我要问你有多少种可能的次数

sol:
找规律题啊,不会滚粗…
我还是写了个爆搜打了个表,20分555…
正解思路:首先把题目转化为求和为n的数的LCM方案数
看看下面的情况:
1)如果我把数分为a^xb^y(gcd(a,b)=1)和其他一大堆数,那么这种方案和a^x,b^y,1,1,…,1和其他一大堆数是等效的
2)如果我把数分为a^x,a^y(x>y)和其他一大堆数,那么这种方案和a^x,1,1,…,1和其他一大堆数是等效的
那么的话,就可以按照质数来进行dp,f[i][j]表示访问完i个质数,和为j的方案数。所以就一大堆递推就好啦..
%%%草老师 找到规律

T3:
Bob输了游戏很难受头皮发麻,于是他想去IOI市旅游散心
IOI市是一个被分成纵H*横W块区域的长方形,每个区域都是建筑物、原野、墙壁之一。建筑物的区域有P个,编号为1…P
Bob只能进入建筑物与原野,而且每次只能走到相邻的区域中,且不能移动到市外。
Bob因为各种各样的事情,必须在各个建筑物之间往返。虽然建筑物中的冷气设备非常好,但原野上的日光十分强烈,因此在原野上每走过一个区域都需要1单位的水。此外,原野上没有诸如自动售货机、饮水处之类的东西,因此IOI市的市民一般都携带水壶出行。大小为x的水壶最多可以装x单位的水,建筑物里有自来水可以将水壶装满
由于携带大水壶是一件很困难的事情,因此Bob决定携带尽量小的水壶移动。因此,为了随时能在建筑物之间移动,请你帮他写一个程序来计算最少需要多大的水壶
现在给出IOI市的地图和Q个询问,第i个询问(1<=i<=Q)为“在建筑物Si和Ti之间移动,最小需要多大的水壶?”,请你对于每个询问输出对应的答案

sol:
这题和货车运输有点儿像??一眼最小生成树,然后发现建边很鬼畜?要用bfs来一遍平面图最短路,利用bfs的性质引出一个“势力范围”也就是这个点第一次可以扩展到的点,类似于缩点建边,就可以解决打水的情况,得到一个最小生成树。
求答案用倍增lca即可。

Day2 早场

T1:
给出 N 个点,M 条边的有向图,对于每个点 v,求 A(v) 表示从点 v 出发,能到达的编号最大的点。

sol:
暴力也是可以过的,但是我写的强连通,在每次出栈的时候维护一下连通分量的最大编号,然后重新建一次图,在这个新图跑dfs,回溯的时候维护一下最大编号即可。
树形dp,拓扑排序也可以。

T2:
数列 A1,A2,…,AN,修改最少的数字,使得数列严格单调递增。

sol:
这题我拿下了AC一血,所以我将详细点,首先要求一个严格单调递增序列,n-这个序列的长度就是答案,但是直接去求最长上升子序列是错的,因为数字不能相同。那么我们转化一下问题:
首先他要严格单调递增
设i>j,那么 a[i]-a[j]>=i-j
诶出现了大于等于号,那么我们就可以不用那么严格,有希望!!
移项一下:a[i]-i>=a[j]-j
太好了他俩一样了,那么我就可以用一个s[i]=a[i]-i
那么问题就可以转化为维护这样一个s[i]>=s[j]
这个s不是严格递增的!!是一个不下降子序列!
所以我们可以用O(NlogN)的做法(做法自行度娘)来维护一个最长不下降子序列即可。
再次%Rose Orz

T3:
将 1 到 N 任意排列,然后在排列的每两个数之间根据他们的大小关系插入“>”和“<”。
问在所有排列中,有多少个排列恰好有K个“<”。
例如排列(3, 4, 1, 5, 2)
3 < 4 > 1 < 5 > 2
共有2个“<”

sol:
正解是一个高精度dp,但波老师和亮亮打了个暴力然后找到了一个十分玄学的规律(知道了也不会找系列
转移方程:F[i][j]=f[i-1][j-1]*(i-j+1),意思是,在i-1的序列中插入一个i(因为我们是顺着插的所以i一定为最大值),让其放进去之后产生一个小于号,则有(i-j+1)个位置可以产生新的小于号。

然后我第一题竟然写挂了??只有50分??不知道为什么。。最后150 Rank4滚粗

Day2 晚场

题目太难,完全不可做的说。。。只想到第二题的一点点思路(我太垃圾,所以做了一半call老师回来改题,然后就没有测了滚粗。

Day3 早场

T1:
moreD和moreD的宠物CD正在玩一个日历游戏,开始时,他们从1900年1月1日到2012年12月22日(你懂的……)选一个日期开始,依次按照如下规则之一向后跳日期:
1. 跳到日历上的下一天。
2. 跳到日历上的下个月的同一天(如果不存在,则不能这么做)。
要是谁正好到达2012年12月22日那么他就赢了,如果到达这天之后的日期那他就输了——原因你也懂的。
每次都是moreD先走的。
现在,给你一个日期,请问moreD一定能赢吗?

sol:
记忆化搜索或者dp,加上一点博弈思想。

T2:
话说CD比较欠扁,他表示在课室的日子没有教主在旁边打他的日子太寂寞了,所以这一晚,他终于来到了电脑室被打。由于CD是大家的宠物,于是大家都来打CD了。电脑室里有n个人,第i个人希望打CD ai下。但是太多人打CD,他又会不爽,于是他规定只能有K个人打到他,并且为了公平起见,最终K个人打他的次数都必须是相同的,CD规定这个次数就是这K个人希望打他的次数的最大公约数。为什么是最大公约数呢?因为他觉得被打的次数是GCD的话他才会变成Glad CD。之前说了,CD比较欠扁,于是CD希望,K个人打他的次数的和最大。你能告诉他他最后总共会被打多少下么?

sol:
二血水题啊,直接求出ai的所有约数,从大到小枚举约数,找到>=K的就直接输出答案即可。

T3:
哪里有压迫,哪里就有反抗。
moreD的宠物在法庭的帮助下终于反抗了。作为一只聪明的宠物,他打算把魔法使moreD的魔法书盗去,夺取moreD的魔法能力。但moreD怎么会让自己的魔法书轻易地被盗取?moreD在魔法书上设置了一个密码锁,密码锁上有一个问题。
施以斯卧铺魔法吧,你有M次机会,如此将得完美密码。
然后是一串小写字母串。
moreD的宠物斯卧铺魔法就是施法时的字符串其中相邻两位交换。
而moreD对于完美密码的定义自然是最小字典序了。
请帮助moreD的宠物,想出密码吧。

sol:
观察到每次都会把最小的往头送,所以我非常裸的把他往头送了,发现时间复杂度是O(n)??感觉正解??。
然后出了一个数据卡掉了我自己的代码。。狗血的是最后这个代码过了60分。。
。。。。
正确的贪心要再加上一维,维护一下后效性,那么这一维就可以用树状数组或者线段树代替,降维为logN

最后又是拿了Rank4滚粗 %一下dalao们

后面懒得写了。。。

原创粉丝点击