摘要:
1 arg (arg.cpp/in/out, 1s, 512MB)1.1 Description给出一个长度为 m 的序列 A, 请你求出有多少种 1...n 的排列, 满足 A 是它的一个 LIS.1.2 Input Format第一行两个整数 n,m.接下来一行 m 个整数, 表示 A.1.3 阅读全文
摘要:
分析:解法好神啊...... 前50分可以通过背包dp加一些优化来得到.后面的数据因为询问太多,显然不能一个个处理. 一个神奇的做法:分治. 预处理出对于每一个点i,不考虑它 的答案f[i]. 只需要将它左边和右边的元素插入到背包中即可. 为了达到这一目的. 在分治的时候加一个判断:如果l == r 阅读全文
摘要:
分析:不算太难的一道题. 如果把每个编号i看作一个点,i向ai连边,那么最后一定会出现环,并且环与环之间是不相交的. 那么我们可以dfs预处理出所有的环,用询问的m除以环的长度,剩下的余数就可以O(1)计算了,时间复杂度O(n). 上面这种做法在处理余数部分时比较容易写错. 一种不容易写错的方法是倍 阅读全文
摘要:
4715: 囚人的旋律 Description 「不知从何处,流淌出令人熟悉的旋律。 我到底是在哪里,听过这个旋律?」 ——「『囚人的旋律』,是加入了诅咒的旋律哦」 【问题描述】 被诅咒的监狱里流淌着囚人们的歌谣。 将罪恶的青春全部抹杀殆尽。 “看守”执掌“囚犯”的生杀大权。 “囚犯”中藏着可以杀掉 阅读全文
摘要:
4714: 旋转排列 Description Input 输入仅有一行,包含一个整数n,1≤n≤500000 输入仅有一行,包含一个整数n,1≤n≤500000 Output 输出一行,包含一个整数,代表答案。 输出一行,包含一个整数,代表答案。 Sample Input 4 Sample Outp 阅读全文