CSPS模拟 69

  $C_n^0=1$

  $C_n^0=1$

  $C_n^0=1$

  我怎么又双叒叕犯这种错误了啊

  (咳檀)

  

  T1 WA0,大神题,不会做!

  T2 就是要找一个最长区间,满足左端点是区间最小值,右端点是区间最大值。

    做法一(仅用于QJ本题100%的随机数据):

      单调栈预处理每个点可以成为以左最长多长区间的最大值L,以右多长区间的最小值R

      则问题变成找到两个位置$i,j(i<j)$,满足$R[i]>=j L[j]<=i$,那么枚举$i$,分块查满足条件的最大$j$

      考试的时候我在心里默念:根号牛逼,根号牛逼!一定要骗到分啊!

    做法二(大神做法):

      考虑维护一个单调递减的单调栈,那么新加入一个元素时,它可以作为 从此处到单调栈里第一个大于它的位置中的最大值

      怎么快速找到这个区间的最小值呢,把 此处到当前栈顶区间的答案 存储起来,只要在弹栈的时候不断继承弹出区间的答案即可

      由于是区间最小值,继承条件是新弹出的区间最小值小于当前的最小值。

  T3 回滚莫队

    考试的时候我在心里默念:根号牛逼,根号牛逼!一定要骗到分啊!

    隐隐约约感觉做过(其实就是原题我都没看出来是permu..)

    我以前还总结过

原文地址:https://www.cnblogs.com/yxsplayxs/p/11658182.html