摘要:
Part 1 最长上升子序列 优先队列优化最长上升子序列。每次将求完的 $f_i$ 丢进 priority_queue,求最大值时取堆顶。 复杂度 $O(n^2)\to O(n\log n)$ Part 2 线段树优化 DP 写出常规 DP 转移方程式,区间修改、查询如果可以用线段树维护就可将 $O 阅读全文
摘要:
最近几次模拟赛都比较难,一一爆零。要么是完全不知道怎么做,要么是因为对于一道自己认为很有思路的题一直调不出来。不过确实应该首先写好所有的暴力。 进入正题。http://47.92.197.167:5283/contest/115 Author:Kewth T1 集合均值 等价于是随机生成 \(B\) 阅读全文
摘要:
//小根堆 for(int i=1;i<=n;i++){ int k=top; while(k&&a[stk[k]]>a[i])k--; if(k)rs[stk[k]]=i; if(k<top)ls[i]=stk[k+1]; stk[++k]=i;top=k; } beware: > not >= 阅读全文
摘要:
这是一道div2B,按说很简单,但我没有想出来。确实需要一些思维。 题意:给定 \(a[1...n],k\),每次可以交换 \(|i-j|>=k\) 的 \(a_i,a_j\),问能否经过有限次操作使 \(a\) 不降。 建图,两个点能够自由交换当且仅当他们之间有边,那么 \(n=5\) 时建立如下 阅读全文
该文被密码保护。 阅读全文
摘要:
思维题。需要弄清 冒泡排序的本质 每一轮冒泡排序对逆序对的影响 冒泡排序的本质是将一个数放到他的“后面第一个大于”之前,并把它俩之间的数向左平移一位。 这个数能够向右征服的充要条件是左边没有比它大的数。原因是,一旦有,他就成了被征服的,手无缚鸡之力。 因此,每一轮冒泡排序会使每一个数值上的逆序对 $ 阅读全文
摘要:
Censoring S/G 算法标签:字符串(KMP/AC自动机) 算法概述:这两道题其实就是一道题,无非把单模匹配变成多模匹配而已。讲讲核心思想。这题其实就是一个脑筋急转弯,谁想到了谁就A了。我们一般求KMP都是求完整个f数组,并且是对一个始终固定的文本串算f,但其实完全可以对一个栈求f数组!考虑 阅读全文
摘要:
isspace([char]),返回字符是否是 '' ''\n''\nr'等空格、换行类字符,避免了枚举 cin.peek(),返回输入流的下一个字符,但不跳过它 getline(cin,str),读取整行 fgets(字符数组s,要读取的字符串的最大长度,stdin)(注:换行符会被读取并存入s) 阅读全文
摘要:
CSP前夕 模拟赛 由于没有发很强的大样例,加上出现的一些令人匪夷所思的问题,做的不好 然而B,C两题我是会做的 总结错因: C:大样例没有发现我的问题,但程序背包那一行的循环有点问题,居然还有50分,可见数据较弱 B:本机下评测完全可过,赛后经过一番审查发现问题出在getline(cin,str) 阅读全文
摘要:
link STRATEGY: 求关于区间的不重复元素数的基本思路:用线段树维护 F(i,r) 那么这一提就很简单了。把原题中的式子看成对于每一个枚举的右端点r,$\sum_{i\le r}f(i,r)$造一棵线段树,维护一个数组$g[i\in [1,n]]$ 表示i到当前右端点r的f(i,r)。考虑 阅读全文