市二模&中考游记】的更多相关文章

二模13day1解题报告 T1.发射站(station) N个发射站,每个发射站有高度hi,发射信号强度vi,每个发射站的信号只会被左和右第一个比他高的收到.现在求收到信号最强的发射站. 我用了时间复杂度比较高(nlogn)的算法.首先按h排序(从高到低),作为算法的一个"输入"序列(记为A)(标记原来位置). 在保存这个序列的基础上,记录rank=1~n,然后按pos排序.排完记为B序列.这时会生成一个关于pos对应h的rank序列,对应B中的每个元素在A中的位置. 用next[i]…
第一题: 题目描述: 有 n 个炸弹,有些炸弹牵了一根单向引线(也就是说引线只有在这一端能被炸弹点燃),只要引爆了这个炸弹,用引线连接的下一个炸弹也会爆炸.每个炸弹还有个得分,当这个炸弹被引爆后就能得到相应得分.现在要你引爆 k 个炸弹,使得得分最大. 解题过程: 1.一开始想到算出每个入度为0的点打掉之后的得分,然后做个堆,从大到小打,但是路径会有重叠的情况,也就是说打掉一条路径后可能会导致另外一条路径的权值发生变化.. 2.然后听到YYL大神一直在说2次BFS,就想到可以倒着来做..从出度为…
RSA最终加密.解密都要用到模乘的幂运算,简称模幂运算. 回忆一下RSA,从明文A到B B=Ae1%N 对B解密,就是 A=Be2%N 其中,一般来说,加密公钥中的e1一般会比较小,取65537居多,但解密的时候,这个e2是一个非常非常大的数,显然,直接通过e2次模乘来解密是不现实的. 为了让RSA的加密.解密成为现实,我们必须要找一个好的算法来做模幂运算. 借上一节我设定的符号,以区别于传统上的幂的数学表示, 定义a#b为a和b的模乘, 定义a##n为n个a的模乘,或称a的n阶模乘. a =…
回首三年荏苒,还是有许多忘不了,有始有终,最后以一篇游记来记录落幕吧 Day -inf 为了准备中考从机(颓)房回到学校了,停课这么久,也该好好备考了 希望能回到以前的文化课水平QAQ Day -? 最后一次模考炸裂升天... 其实也没那么炸,不过终究暴露了我的很多不足,所幸还有一段时间 让我继续颓让我将不足的地方再补补 Day 0 中考前的最后一天了,该看的东西也都看完了... 旁边的同学一如既往,似乎三年时光没改变什么东西 不过,三年前,是相见,这一次,就是分离了 Day 1 考完感觉海星,…
注:Index数☞由4,7组成的十进制数. T1.全排列(permutation) 求n个数的第k个排列中,有多少个Index位置上是Index数. 由于k的范围比较小,n的范围比较大(都是109),所以从k入手,发现只要对后13位进行考虑即可(12!<109<13!). 由于数字可能很大,所以对后13位数据缩小处理(1~13,之后变回来就好了).这道题就变成了13个数的第k个排列问题.这个康托逆展开还是比较好写的(别忘了k- -再处理).然后对后13位统计index 个数,加上预处理的n-1…
T1.笨笨玩糖果(sugar) 有n颗糖,两个人轮流取质数颗糖,先取不了的(0或1)为输,求先手能否必胜,能,输出最少几步肯定能赢:不能,输出-1. 一开始天真的写了一个dp,f[i]表示i颗糖最少取几次能赢或输.然而这个是错的,从对手的角度来讲,他如果必败,一定会选择让对手尽量输的晚一些.否则的话3次以内游戏肯定结束了. 所以可以用dfs套着dp,不能赢的最多步数存为负,能赢最少步数存为正,然后对每个i进行dp,分别用两个变量来保存上述两个值,在判断是否能必胜. T2.笨笨的宇宙蘑菇(mush…
T1.音量调节(changingsounds) 有n个物品的背包(有点不一样,每个物品必须取),给出初始价值,物品价值可正可负(就是两种选择嘛),求可能的最大价值,不可能(<0或>maxsound)输出-1. 很简单的,f[i][j]表示的是到第i首歌时音量为j是否可能. f[i][j]=f[i-1][j-c[i]]||f[i-1][j+c[i]]  (j-c[i]>=0,j+c[i]<=maxsound) 不贴代码啦. T2.旅行(journey) 有n*m的矩阵由'.'和'X'…
第一题: 题目大意: 求由N个1,M个0组成的排列的个数,要求在排列的任意一个前缀中,1的个数不少于0的个数.N,M<=5000. 解题过程: 1.看到N,M的范围就明确肯定不会是dp,因为起码要用二维表示状态,就算转移是O(1),也要5000*5000的时间,况且还要高精度,绝对超时. 2.于是想到可以根据Catalan数的推导方法来推出公式. ps:Catalan数的推导方法和一些应用可以参考我之前的博文中的问题二http://www.cnblogs.com/vb4896/p/3874622…
第一题: 题目大意:求满足条件P的N位二进制数的个数.P:该二进制数有至少3个0或者3个1挨在一起.. N<=20000 解题过程: 1.一开始直接写了个dfs把表打了出来,不过没发现什么规律,然后就尝试着反过来想,先求出不满足条件P的个数,然后总个数减一下.然后就把2^N-ans输了出来,结果发现是个斐波那契数列.(打表大法好啊) 2.如果直接写高精度是要超时并且爆空间的..所以要用滚动数组并且万进制优化(实际上我用了16位数字压成一个long long),貌似20000的数据万进制还是太慢.…
第一题: 题目描述: 一个数列定义如下:f(1) = 1,f(2) = 1,f(n) = (A * f(n - 1) + B * f(n - 2)) mod 7.给定 A,B 和 n 的值,要求计算 f(n)的值.(1≤ A, B ≤1000, 1 ≤n≤100,000,000). 解题过程: 1.方法一:矩阵乘法. 2.方法二:hash.如果 Ak,Ak+1  确定了,那么Ak+2 就确定了,而Ak,Ak+1 的值都是小于7的,所以做个二维hash,记录Ak,Ak+1  第一次出现的位置,就可…