海清 的个人资料Cockhorse Blog照片日志列表更多 ![]() | 帮助 |
|
|
7的整除当10a+b能被7整除,因为7a+7b能被7整除,所以3a-6b能被7整除 则a-2b能被7整除,这也就是判断是否能被7整除的方法 则有结论: 11...17(有n个1,最后一个数为7), 当n能被6整除时, 那么这个数就能被7整除. 例:定义P(n)为n的所有数字的乘积。例如,P(1243)=1*2*4*3=24,P(198501243)=0。 如果n为完美数,那么n和n+1均为好数 则它们末位均不为零,前k-1位都相同,所以前k-1位相乘的值是n和n+1的公约数,又因为n与n+1互质,所以这个数前k-1位肯定全为1 那么完全数只可能是形如11...1x(k-1个1)的数,再分别判断k不同时,x有哪些取法.(7的判断就用到了上面说的那个结论) 科学的双向链表顺序给出N(1<=N<=50000)个数A1,A2,A3,...,An,其中第i个数的“最小波动值”定义为它与在它前面的数中所能产生的最小差值,即Ai的最小波动值为Min{ |Aj-Ai|, j<i }。我们规定,A1的最小波动值就是A1。 编写程序求出所有数的最小波动值的总和。 1.动态树 2.线段树 3.排序+二分查找 *4.排序+双向链表 先排序,用双向链表记录新序列并且原序列每个数用指针指向新序列对应的位置. 在原序列中从右往左枚举,当前数的最小差值就等于在新序列中与左右两个相邻数的差值的最小值,然后在双向链表中把这个数删掉(因为从右往左做,每次都会删掉,所以剩下的数全是它左边的,则相邻的一定是可行的且是最优的),所以用双向链表就可以在O(n)完成.当然,排序需要O(nlogn). LCA问题并查集满足等价关系 等价关系:自反,对称,传递 Tarjan算法(需要用到并查集) 深度优先遍历,正在处理的点是指向集合是自己,处理完的点指向集合为父亲,处理完后再看它是否有询问,询问的对方点一定是处理完的点,若没处理完,则等到下次再问.若处理完,则合并,并且路径压缩. LCA问题转换成RMP问题: 按层次标号,再深度优先遍历,得到遍历序列(每个点正在处理或处理完都需打印),则LCA问题就转换成了RMP问题. 正负1RMP问题转换成LCA问题: 该序列的任何相邻数一定相差1,那么+1表示往下走一步(加一个新的儿子),-1表示往上走一步(回到父亲).当然在首尾要补数保证第一个和最后一个数是最小值.最后就可构建一棵树,这种RMP问题的询问就可以转换到这棵树上的LCA问题的询问. 博弈论P 必胜 N 必败 P->只要有一个N N->所有都是P 一般地:先写个DP(可行性转移),再来找规律 1.欧几里德游戏:给一个数,每次可以减去小于它的一个约数,不能再减了(即拿到一了)就算输. 偶数为必胜,奇数为必败. 2.分巧克力:一个n*m的巧克力块,可以任意分成边长均为整数的两个小巧可力,如果不能再分了(即拿到1*1的了)就算输. 当m=n时必败 3.猫老大取数(2^n):给一个数n,每次可以减去2^k(k属于非负整数),如果把这个数减成0了就算赢. 3的倍数必败 4.Lim取火柴:有n堆火柴,第i堆有ai根火柴,每次可以在任何一堆里取走任何数量的火柴,先取完者算赢. 把每一堆的火柴数全部xor,若为0则必败 1月30日 二分答案1.收入计划 问题描述 输入数据 输出数据 输入样例 输出样例 样例说明 100 400 300 100 500 101 400 每一天的薪水
2.架设电话线 问题描述 输入数据 输出数据 输入样例 输出样例 样例说明
3.旅行路线 问题描述 输入数据 输出数据 样例输入 样例输出 样例说明
4.猜数游戏 问题描述 输入数据 输出数据 样例输入 样例输出 样例说明
分析: 1.二分工资最大值,再用贪心方法(从左往右能去就去)判断是否可行. 2.二分自己要赋的最大值x,把所有大于x的边标记,则需判断经过最少标记是否小于k. 求最少经过标记数:把标记的边赋为1,没标记的边赋为0,求出起点到终点的最短路即可. 3.由于 min(a/b,c/d)<=(a+c)/(b+d)<=max(a/b,c/d) (证明略) 那么最优的回路肯定不会经过同一个点两次,即所求回路为简单回路. 对于某个环: t 乐趣 t 时间 二分x , s/t>=x -> t*x-s<=0 , 即判断是否有负环即可 4.对于每个数,赋为所有覆盖它区间的最大值,再看是否满足每个区间即可. 离散化n个数即可变成q个数,再二分问题数O(logp),然后赋值和判断O(p),总时间复杂度O(plogp) 树规1.树的划分 给定一棵树,为了分离出一棵有K个结点的子树,最少需要删掉多少条边 将其转为二叉树 2.07年m67生日邀请赛 wolf 给出一个图,每条边上都有权值,除一号节点外,其它节点上都有A、C两种不同的权值,选取C权值和不超过K的若干顶点,使这些顶点及它们到1号结点的最短路上经过的所有其它顶点的A权值和最大,有多条最短路可选时总是选择前往编号小的结点 由所有的最短路构成了一棵树,然后多叉转二叉,f[i,j]表示在这棵二叉树上的子树花费j个材料的最大值 (1). 自己把材料用了; 状态O(nk)个,决策为O(k),时间复杂度O(nk^2) 3.IOI2005 Day2 Rivers 一棵树n个节点,根结点已有个工厂,需要再设k个工厂,每个节点有个货物数,每条边有权值,每个节点的货物都送到上面的最近的设了货物的节点. 算法O(n^2k^2) (多叉转二叉) j表示i上面最近的工厂 k表示一共设的工厂数 f[i,j,k]= 不设工程 min{f[i.left,j,k']+f[i.right,j,k-k']+w[i]*d[i,j]} 设工程 min{f[i.left,i,k']+f[i.right,j,k-k'-1]} DP经典问题1.定义鹰蛋的坚硬程度E为:从第E层楼及以下楼层落下时不会碎,但从第E+1层楼及以上楼层向下落时会摔碎。 任务:不断在一幢N层大楼内向下扔鹰蛋来确定坚硬程度E,可供使用的鹰蛋共有M个,假设所有的鹰蛋都具有相同的坚硬度,求最坏情况下确定E所需要的最少次数。 f[i,j]=min{max{f[i-1,k-1],f[i,j-k]}}+1 O(mn^2) f[i-1,k-1]为非减的,f[i,j-k]为非增的,则min取的是两个"函数"的交点 可以用二分的方法找这个"交点" , 则优化到 O(mnlogn) 2.NOI2005 adv1900 (队列优化) 给定一个带障碍物的MxN阵列,给出K次船体倾斜的方向及其时间范围,钢琴随船体倾斜方向滑行,钢琴不能撞到障碍物或滑出边界,天使可在任意时刻使钢琴暂时静止,求钢琴最长的滑行距离 不妨设k方向为右 f[(i,j),k]=max{f[(i,j'),k-1]+j-j'} => f[(i,j),k]=max{f[(i,j'),k-1]-j'}+j 当j增加,j'范围是增加或不变的,所以直接维护一个长度小于等于m的递减队列即可 错排D(1)=0,D(2)=1 递推式:D(n)=(n-1)(D(n-1)+D(n-2)) 通项: D(n)=n!(1-1/2!+1/3!-.....+(-1)n/n!) 再说四边形不等式f[i,j]=min{f[i,k]+f[k+1,j]}+w[i,j] 用s[i,j]=k 表示决策 则s[i,j-1]<=s[i,j]<=s[i+1,j] , s[i+1,j]<=s[i+1,j+1]<=s[i+2,j+1] ...... (该结论很显然,就不证明了) 所以对于相同长度的j-i,决策总共是O(n),所有长度为j-i状态为O(n),总是件复杂度为O(n^2) 当出现类型于f[i,j]=min{f[i,k]+f[k+1,j]}+w[i,j]的DP,可以先用三方把决策s[i,j]用二维表打出来,如果行和列都是递增的,那么就可以用四边形不等式优化. 1月29日 RMP问题:一个序列,多次询问某段区间的最大值 f[i,k] 表示从第i个开始2^k个数的最大值 则f[i,k]=max{f[i,k-1],f[i+1,k-1]} 询问(i,j),则返回max{f[i,k],f[j-2^k,k]} (取最大的k使2^k<=j-i) 预处理 O(nlogn) 询问 O(1) DP优化(单调性)1.序列A1,A2,....,AN,一次操作是将某个数增一或减一,用最少的操作次数将原序列改为递增序列 f[i,j]=min{f[i-1,k]}+|a[i]-j| (k=1~j-1) => f[i,j]=min{f[i,j-1]-|a[i]-j|,f[i-1,j-1]}+|a[i]-j| 2.给定一个带权值的M*N矩形方阵,去掉k个格子,要求剩下的任何一个格子都可以看到右边界和下边界,求去掉格子权值之和最少值 f[i,j,k]=min{f[i-1,j',k-j}+s[i,j] (j'=j+1~n) => f[i,j]=min{f[i,j+1,k+1]-a[i,j+1],f[i-1,j,k-j]+s[i,j]} 1月28日 一些小东西1+1/2+1/3+....1/n 等阶于 logn log n! 等阶于 nlogn 给出2*n+1个数,其中有且仅有一个数出现了奇数次,求此数 x=a1 xor a2 xor a3.....xor an 生成树一个图上A到B的最优路径一定在一棵最小生成树上(最优路径:最大边最小的路径) 最小生成树一定是瓶颈生成树,瓶颈生成树不一定是最小生成树 瓶颈生成树算法: 1.最小生成树 2.二分最大边,判断是否连通 O(ElogE) 1月10日 中国剩余定理问题:求x a1=x mod m1 a2=x mod m2 .... an=x mod mn 算法: 1.当m1,m2,...,mn两两互质的时候: M=m1*m2*m3*....*mn; Mi=M/mi; 解 p*Mi+q*mi=1 ei=p*Mi; 则 ei mod mj=1 (i=j) 或 ei mod mj=0 (i<>j) 所以 x0=a1e1+a2e2+....+anen 为一个可行解 所有解为 x=x0+kM (k为整数) 2.非两两互质的时候可通过此变化使其两两互质: 设 k=gcd(m1,m2) n1=m1/k n2=m2/k x mod m1=a1 -> x mod (k*n1)=a1 -> x mod n1=a1 mod n1 x mod m2=a2 -> x mod (k*n2)=a2 -> x mod n2=a2 mod n2 根据此方法,当Mi和mi非互质时,改变mi和ai的值即可. 1月9日 关于KM
1月6日 dinicuses math; procedure readp; procedure bfs;//从汇点开始标号 procedure dinic; begin 1月5日 最大流的时间复杂度比较 增广路方法: 一般增广路算法 O(numU) 容量缩放增广路算法 O(nmlogU) 最短增广路算法 O(nm^2) 连续最短增广路算法(Dinic) O(n^2*m) 预流推进方法: 一般预流推进算法 O(n^2*m) 先进先出预流推进算法 O(n^3) 最高标号预流推进算法 O(n^2*sqrt(m)) 1月1日 07十二月1.歌舞青春 哭 2.吊坠 丢失 3.13个一等奖 头痛 引体向上 4.朗诵 吸管 5.联队 计算几何 不理我 6.数学 生气 撕本子 7.凸包 笑容 8.糖 心态 幸福 9.新吊坠 百事可乐 10.fence 射线相交 研究 11.离散化 无聊的晚自习 12.浓硝酸 飞人 羽毛球 13.Matrix67 半平面 x坐标 14.想睡觉 精力不足 15.手机屏蔽 傅生 extended_gcd 16.长跑分组 手机游戏 17.3分15秒 校纪录 没跑完 18.复习 不想考 19.考语文 心态无所谓 买衣服 20.严重郁闷 数学失误 21.英语乱考 理科选择题 生物超低 22.买礼物 讲价 练舞 23.忙碌 课件 完善歌曲 24.送礼物 犹豫不决 25.抄袭 哭 委屈 26.矛盾 黄蓉 臻和郁 27.表演 辣 化妆 28.班上庆元旦 脚 关心 29.睡觉 超市 卡仔卡妹 30.唱歌 24 很多第一次 31.牛仔裤 新年快乐 短信 |
|
|