摘要:
bzoj上访问负下标会跑到奇怪的地方…… 其实可以滚动数组优化,但是我看能过就懒得改了 设f[i][j]为已经算了前i个挂饰,当前有j个空的钩子,转移就是f[i][j]=max(f[i 1][j],f[i 1][max(min(j a[i]+1,n), n)]+b[i]) 注意到只有 n inclu 阅读全文
摘要:
如果确定了第一行,那么可以推出来整个矩阵,矩阵合法的条件是n+1行全是0 所以推出来n+1行和1行的关系,然后用异或高斯消元来解即可 cpp include include using namespace std; const int N=45; int n,m,f[N][N][N],a[N][N] 阅读全文
摘要:
以后写dp还是向后转移吧……写的把前面加起来的版本怎么也调不过去 首先注意,因为地图碎片只占1体积,所以 n, include using namespace std; const int N=405; int n,l,m,a[N]; double p[N],f[2][N][N],ans; int 阅读全文
摘要:
先做最小生成树,这样就保证了最大值最小 然后随便用个什么东西维护一下最大值,我用的树剖log^2,倍增会更快 cpp include include include using namespace std; const int N=100005; int n,m,k,f[N],h[N],cnt,va 阅读全文
摘要:
没考虑可以连着两个不选……直接染色了 实际上是基环森林,对于每棵基环树,dfs找出一个环边,然后断掉这条边,分别对这条边的两端点做一边treedp,取max加进答案里 treedp是设f[u]为选u点,g[u]为不选u点,然后随便转移一下就行了 cpp include include using n 阅读全文