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 阅读(913) 评论(0) 推荐(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 阅读(233) 评论(0) 推荐(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 阅读(219) 评论(0) 推荐(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 阅读(204) 评论(0) 推荐(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 阅读(227) 评论(0) 推荐(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 阅读(214) 评论(0) 推荐(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 阅读(198) 评论(0) 推荐(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 阅读(352) 评论(0) 推荐(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 阅读(202) 评论(0) 推荐(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 阅读(249) 评论(0) 推荐(0) 编辑