这题官方题解给了个Dilworth’s theorem,并不懂是什么东西。。。
写出来一些后可以找规律(多写),然后可以发现就是可以把原序列分成几块连续的上升序列,只不过块之间的相对顺序反了过来。。这个也不知道怎么证明,但是感觉是找不到比这个更好的。。这样的话就相当于LIS+LDS的长度是块的大小加上块的数量。实现的时候注意最后一个块可能不完整。
这题官方题解给了个Dilworth’s theorem,并不懂是什么东西。。。
写出来一些后可以找规律(多写),然后可以发现就是可以把原序列分成几块连续的上升序列,只不过块之间的相对顺序反了过来。。这个也不知道怎么证明,但是感觉是找不到比这个更好的。。这样的话就相当于LIS+LDS的长度是块的大小加上块的数量。实现的时候注意最后一个块可能不完整。
之所以写这个题纯粹是为了提醒自己!数!组!越!界!
暴力去重枚举所有情况,然后前缀和预处理。debug到怀疑学了假的c++,最后的最后发现,数组越界,错误类似于把该写到a[1][x]写到了a[2][x] 里。。
所以数组下标一定要注意啊啊啊啊啊啊啊啊啊
继续阅读“[CF][枚举][预处理][二进制][坑] CF 1017C The Wu”
这场CF也是崩了。。AB太慢而且wa了n发,C知道正确做法然后wa了3发剩20min放弃了。然后今天手算了五分钟ac emmmmm
这个要做到每个格子都只走一次,就必须先蛇形然后转圈,只不过中间从哪一点开始转圈决定了最后的答案大小。样例给的就是两种极端情况,一种是从一开始就开始转圈,另一种是一直蛇形直到最后。
预处理的话左边的从左往右推,右边的从右往左推,主要是右边的计算有点绕(其实也不是很绕主要是当时心态崩了emmm 继续阅读“[CF][思维][预处理][枚举] CF1016C Vasya And The Mushrooms”
http://codeforces.com/problemset/problem/1015/D
题意:给定n,k,s,要求在一段[1,n]的线段上走整点,从1开始,每次只能往一个方向走走任意步(但不能不动),然后要求总共走k步走完s,要求输出任意的方案。如果无法做到则输出NO。 继续阅读“[CF][贪心] CF 1015D”