刷陈题ing @@

         

              在刷去年noip集训的题目时,遇到了一些还不错的题目,小小的汇总一下。

         更新ing

  

          1.一个初始为空的序列,给出n条信息,每一条信息让你把某个数插入到指定位置,n<=300000,求最后的序列情况.

           倒做,已知前导空位的数量,用zkw线段树log(n)找到该位置。

  

           2.给出一个长度为n的数列,要求取其中一段,使其平均数大于等于给定的m,问方案数. n<=100000 m<=10000

           将每个数减去m,问题转化为求有多少个区间的和大于等于0,离散树状数组即可。


           3.n个数,选取若干个数,使得这若干个数的和为m,数很大不能dp  n<=40;

           搜索前一半,再搜索另一半并与前一半hash计算方案。


          4.给定一个无向图,求一个生成树,使得最大边与最小边之差最小。 V,E<=5000

           利用kruscal 性质, 枚举最小边,裸做kruscal。


          5.让你求一个长度最小的递增序列,序列的最后一项是n,除第一个数外,序列满足每一个数都是令一个数的整数倍或令两个数的和 n<=1000

           数字1 是必须要的,从1开始搜索,扩展新的数,加上必要的可行性剪枝和搜索方法(只用当前最大的数和另外的数来相加扩展)。


           6.给定一个数s,求一个数n,使得在序列1~n每一项前添加+/-,使得计算得到的值是s。s<=10^12

            手算找出规律:n mod 4=3 or n mod 4=0 时,可以拼成0~n的所有偶数,否则可以拼成0~n的所有奇数;

            先二分用等差数列求和公式逼近,在利用规律调整。


          7.平面二维坐标系中一些点,有一个直角边为A,B(A 垂直y轴,B垂直x轴)的Rt三角形,选取任意一个点为该Rt三角形的直角顶点,问三角形最多覆盖几个点。

           问题转化为三个偏序关系  x>=X, y>=Y, Bx+Ay>=BX+AY+AB

           由于偏序关系的特殊性,不需要维护三个偏序,只要把点按照Ax+By排序,倒着插入,维护两个树状数组,利用容斥原理即可。

  

          8.给定一个矩阵,矩阵中有一些障碍,求该矩阵中有多少个子矩阵不包含任何障碍。

            做每一行时,维护一个单调栈,栈中单调递增的是每一列的到该行的延伸长度,并记录栈中矩阵数量,加栈和弹栈时顺便维护,并用这个值累加答案。

 

        暂时就这些了。

你可能感兴趣的:(刷陈题ing @@)