总结 & 展望

这些日子里, 7月8日到14日参加了我翘了大半的学校训练, 然后15号去玩了! 16号到22号是北京队的训练,23号睡了一天的觉。。。今天是24号了, 在开启我的新一轮学习之前先进行一番总结&展望叭!

7月8号到14号的东西我应该都找不到了。。。我有16号到22号的! 总结一下下叭。

7月8号:

第一题, 兔农, 应该是noi2011的D1T1, 总之就是白送了75分啦, 分别建两个关于两个mod的数组然后随便搞一下就可以啦。100分的算法查题解后看懂了一个大概叭,

/*100分算法:

以k=7为例,考虑f[i]%k组成的序列:

1,1,2,3,5,0,

5,5,3,0,

3,3,6,2,0,

2,2,4,6,3,2,5,0,5,5,3,0,

3,3,6,2,0,

把减1得0的位置标出,并以这些0为界分段,可以发现:

①每段开头必为相同两数,它恰是上一段的最末一位非0数;由于总共只有k-1种余数,所以不超过k段就会出现循环(如果有的话),比如上面k=7时的第3,4段就是循环节。

②记斐波那契数列为fib[i]。假如某段段首数字为x,那么这一段内第i个数即为x*fib[i] % k。若记这一段长度为len,则有x*fib[len]==1 (mod k)。


现在我们试图找到整个数列的循环结构:根据上式,①求x的逆元得到fib[len],②由fib[len]得知len,③用x*fib[len-1]%k算出下一段的段首,重复操作直到发现循环(或者发现这一段永远不终止)。
至于具体实现:①扩欧或者欧拉定理②预处理indfib[y]数组,表示斐波那契数列中模k余y的数第一次出现的下标③预处理fib[i]模k的值。有一个结论:斐波那契数列模k后一定是0,1,1开头的纯循环,而且这个循环节的长度<=6k(不知具体怎么证。。),所以只需暴力算fib数组并同时记录indfib[],发现循环即停止。
注意,假如第①步不存在逆元,或者第②步不存在符合的len,那么这一段将永远不会终止(比如k=8时就是这样),那么整个数列就不存在循环了(可以视作最后一段的长度为无穷大)。

 

接下来考虑如何用矩阵乘法计算f[n]%p。



分别记这两个3*3矩阵为A,B。令初始矩阵为,通过对其不断右乘A和B便能实现累加、减1两种操作。对于分出的每一段算出一个矩阵A^len * B,表示这一段的“效果”。

接下来是喜闻乐见的分类讨论时间:假如整个数列是循环的,判断第n项是否在混循环的那部分里,若是则直接把前面几段乘起来,n所在这一段的零头直接用A的次幂算;若不是则先把混循环全部乘起来,然后把循环节全部乘起来,算出循环次数再快速幂,然后再像刚才一样算零头乘上去。若数列不循环倒方便些,也与上面类似,不多说了。*/

//上面是copy的。。实现我应该还做不到, 对逆元理解的不好, 不知道矩阵乘法怎么写。。。。这都是我下一阶段要学习的!


第二题:灭鼠行动。。。来自ctsc2002, 大家都说这是道码农题。。我做的时候就是直接输出不可以, 没想到竟然还可以拿到20分。。有很多人后来拿到80分了!


第三题:魔幻棋盘。 noi2012的题, 我用的是点修改的一维线段树, 是40分。。

/*

首先,单点修改,区间询问是好做的,二维线段树即可。
对于区间修改,区间询问,我们的做法是:转换为单点修改。

以(x,y)为原点建立坐标系把整个矩阵分成四个象限。按照下图方式建立新的矩阵:
其中蓝色点为原矩阵,红色点为新矩阵。
(如图对应一个7*7的矩阵,守护者位置为(4,4))


其中每个点的值对应如下:
1) 原点的值与原矩阵相同(点(4,4))
2) 坐标轴上的点的值=原矩阵中坐标轴上与该点相邻的两点中离原点较远的值-离原点较近的值(例如图中的(2,4) (4,2) (6,4) (4,6),其值 = 与它相邻的橙色框 - 绿色框中的点的值)
3) 象限内的点,例如点(1,1) (1,7) (7,1) (7,7), 其值=与它相邻的两个橙色框的值之和 - 两个绿色框的值之和

我们用二维线段树维护这个新矩阵的gcd,这样一来:
对于询问:因为询问子矩阵包含点(x,y),可以证明新矩阵任意一个询问子矩阵的gcd和原矩阵相同,直接查线段树即可。
对于修改,我们发现:
1) 如果修改矩阵包含原点,那么原点的值会被修改
2) 如果修改矩阵穿过某个坐标轴,那么那个坐标轴上有两个点会被修改
3) 修改矩阵的四个角外的四个节点的值会被修改(每个角一个)
这样对于一次修改,我们最多更改9个点,是O(1)级别的。
套上线段树,每次询问和修改的复杂度都是O(logn*logm),可以在规定时间内出解了。
*/

//以上是copy的。。

这道题的线段树一维的我敲出来都费劲, 别说二维的了,,,,一会要做线段树的一个全面练习了,因为它真的很重要!


第二天, 三道题当时都不怎么会做, 当时真的很伤心, 都没有交。。。第一题好像是裸后缀数组的题, 但我现在还不怎么了解它, 下一阶段深入学习!!但即使不用后缀数组好像也可以胡乱搞的样子, 用一个哈希加上一些小技巧好像就可以拿满。。。

第二题是个不难的网络流,,但我现在的节奏是网络流的题完全做不出来。。因为练习的太少了, 构建模型时完全没有概念。。。简直丧心病狂!!!!!!

第三题好像是要推出来什么东西的, 但在得出结论后扫两边就ok辣。


第三天, 前两题真的很简单, 一道初级线段树(但我居然因为一个if之间关系的错误调了一个多小时。。。), 第二题最简单的数学题, 也就500B, ,,第三题他们都说是码农题, 我只骗了骗分,, 但很奇怪他们用spfa搞的为什么会只拿10分啊。。。


第四天, 罗剑桥的一套题,, 觉得完全不会做啊,,,, 简直丧心病狂!第一题基础暴力。。第二题又是一道网络流,,看我做完网络流专题训练后来秒掉这些题!!


第五天, 第一道简单找规律,, 第二道我想了好久楞是没发现它一共只会有16种状态,,16种状态啊!!怎么搞都能过的啊!!!!我简直是傻到了一定程度啊。。。!!!第三题竟然是暴搜能过, , 不过人家写的暴搜肯定和我写的不一样辣, 我搜索怎么写怎么死循环, 怎么写怎么超时, 简直是太弱了!!智商拙计, 我一直喊着要练搜索, 但搜索还是一如既往的这么弱, 呜呜太伤心辣!!!其实还是我积累的不够, 终有一天我会发现自己再也写不错了!!


第六, 七天是模拟noi在本机上做的题, 大神题答题手玩97分简直不能忍。。。。。


说太多了算了算了, 做一下总结,

其实我近一段时间的进步还是有一点点的, 但显然不够大, 我知道这是我积累的不够的原因, 有的题我明明很清楚怎么做了, 但就是死活死活的不能实现啊!!

我未来十天要吃透的是:

线段树, 分块, 后缀数组, 二分图, 网络流, 加油叭!!

十天就完成着5个模块, 实在是很松了, 我一天起码要做poj上关于以上5项的5道题, 以上, 平均一个模块做10道题, 再加上我本来做过的那些题, 应该在这几个点的认知上有了一个新的层次。

每天做了多少道题要在博客上签到哦, 平均也就3小时一道题, 真的非常宽松了!!


p.s.

和大部分Oier一样, 我也是要强到了一定程度, 比如以前在文化课上, 从不会觉得有任何地方比别人差, 这要有人做出来的题我就必须做出来, 没人做出来我也必须做出来, 大家都做出来了我就必须比他们都快很多很多, 虽然这种心理有一些幼稚, 但也没什么不好的, 起码是非常的积极, 对自己的进步有很大的帮助的, 但现在我因为和别人起步的时间有一点点不一样的原因, 总是会给自己找各种各样的借口, 妈蛋!!!我哪里有那样多借口, 别人能做出来的题我为什么做不出来!!!!!!!!!!!!!!!!!上面的那些题, 都等待着我吧!在我暑期的训练之后, 我把你们都A掉的, 没有任何借口的!!!我实在是太不喜欢这样一个委曲求全, 以对别人的赞扬来掩盖自己很弱的事实的自己了, 我要活会真正的我, 我就是在羡慕他们啊, 嫉妒他们啊, 因为我可以做得更好。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值