2016年10月31日
摘要:
显然线段树可以搞…… 不过常数需要优化的很小 另一种做法, 我们可以考虑二分答案 每次对于1--mid天维护前缀和判断即可 1 #include<cstdio> 2 #include<cstring> 3 using namespace std; 4 const int N=1000010; 5 i
阅读全文
posted @ 2016-10-31 15:18
Absolutezero
阅读(921)
推荐(0)
摘要:
意思就是费用的最大值最小 那么我们对最大费用进行二分,按此跑最短路,累计扣减血量进行比较即可 1 #include<cstdio> 2 #include<cstring> 3 using namespace std; 4 const int N=10010,M=100010; 5 long long
阅读全文
posted @ 2016-10-31 13:56
Absolutezero
阅读(238)
推荐(0)
摘要:
dp 设f[i][j][l]表示A串取i个(但a[i]不一定能取到),B串取j个(b[j]一定能取到),此时用了l个串的方案数。 第一种情况:a[i]==b[j] f[i][j][l]=f[i-1][j-1][l]+f[x][j-1][l-1] 第二种情况:a[i]!=b[j] f[i][j][l]
阅读全文
posted @ 2016-10-31 10:24
Absolutezero
阅读(228)
推荐(0)
2016年10月30日
摘要:
主要有两种做法: 乱搞和dp dp相对来说考虑的特殊情况少一些 最重要的一点就是: 为了避免类似:(1 2 2 2 1 )的情况, 我们需要一个q记录“前”一个数 p记录当前数 判断时 p > ( < ) q & & p > ( a [ i + 1 ] )即可 1 #include<cstdio>
阅读全文
posted @ 2016-10-30 20:41
Absolutezero
阅读(211)
推荐(0)
摘要:
两列排序后将编号一一对应 归并排序求逆序对 (每一次交换就去掉一个逆序对) 1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 #define ll long long 5 using namespace std; 6 con
阅读全文
posted @ 2016-10-30 20:09
Absolutezero
阅读(232)
推荐(1)
摘要:
不考虑insert 则NOI的个数可通过O(n)递推得到: sum_NOI<--sum_NO<--sum_N 考虑insert: 首先预处理对于每个N,其后面的O和I各有多少个 N:显然插入在最前面 I:最后面 O:枚举断点,前面的N*后面的I,取max 1 #include<cstdio> 2 #
阅读全文
posted @ 2016-10-30 11:16
Absolutezero
阅读(229)
推荐(0)
摘要:
这是一道dp…… f [ i ] [ j ] 表示前 i 组,总和为 j 时的方案数 f [ i ] [ j + a [ i ] [ k ] ] <-- f [ i - 1 ] [ j ] 1 #include<cstdio> 2 #include<cstring> 3 #include<algor
阅读全文
posted @ 2016-10-30 10:21
Absolutezero
阅读(210)
推荐(0)
2016年10月29日
摘要:
x^x>=10^(n-1) lg x^x>=n-1 x*lg x>=n-1 x*(log2 x/log2 10)>=n-1 左边单调递增,二分x即可 1 #include<cstdio> 2 #include<cstring> 3 #include<cmath> 4 using namespace
阅读全文
posted @ 2016-10-29 22:26
Absolutezero
阅读(360)
推荐(0)
摘要:
对于每一个主附件集合无非有:五种状态: 1:不选 2:主件 3:主件+附件1 4:主件+附件2 5:主件+附件1+附件2 所以对于每个主附件集合转化为至多4个物品(价值和与代价和),01背包即可 1 #include<cstdio> 2 #include<cstring> 3 using names
阅读全文
posted @ 2016-10-29 18:37
Absolutezero
阅读(211)
推荐(0)
2016年10月27日
摘要:
对前几行的手算可以得出: 从(0,0)连接到(n,0)到(n,n),斜率为:1 / n , 2 / n ...( n - 1 ) / n 也就是说,凡是分子和分母能够约分的,之前均已有过 那么我们将这个矩形以y=x分为两部分, 对于第n行(列)能连的个数也就是Φn 最后再加上(1,1)的一个点即可
阅读全文
posted @ 2016-10-27 10:45
Absolutezero
阅读(260)
推荐(0)