摘要:
SOL::我们有以下dp 不难想到记f[i][j]表示统计到第i门课,此时j个人被碾压的方案数。 f[i][j] = f[i-1][k] * C[k][j] * C[n-k-1][n-rank[i]-j] * P[i] (k >= j) P[i]=∑(j=1 to U[i])j^(n−rank[i] 阅读全文
摘要:
不知道在干什么 #pragma optimize("-O2") #include<bits/stdc++.h> #define LL long long #define int LL #define N 2007 #define mo 100000007 #define sight(c) ('0'< 阅读全文
摘要:
SOL 树形DP f[i][j]表示i的子树中,最高覆盖到i向下第j层的最小花费。 g[i][j]表示i的子树全部覆盖,还能向上覆盖j层的最小花费。 阅读全文
摘要:
网络流: #pragma GCC optimize("O2") #include<bits/stdc++.h> #define eho(x) for(int& i=hed[x];~i;i=net[i]) #define Eho(x) for(int i=head[x];~i;i=net[i]) #d 阅读全文
摘要:
SOL:我们可以证明,设Sum[x]代表1到X编号的矮人被sum[x]个精灵挑为对手,则Sum[x]-x min的位置和其后一个是没有任何关系的(没有精灵会从这个矮人走向下一个矮人)。 那么我们就把其拆成了单链。贪心就好。 阅读全文
摘要:
SOL 奇奇怪怪的贪心(你也不要问我为什么) 阅读全文
摘要:
题目描述 SOL 奇奇怪怪的码农题。 我们考虑是一颗树怎么做,我们发现我们可以离线做,把车的限速排序,依次处理,我们首先是树剖,把边分成两类,最高速度小于车速和大于车速的。每次做之前先把最高速度小于当前车速的加到另一类。强行树剖维护。至于多出来的那一条边,我们记其练了A , B,记我们原来的始末位置 阅读全文
摘要:
奇奇怪怪的题目,不知道他要我们干什么。 我们观察一波局势,发现答案最大不过5.因为如果答案是6或以上的话,我们就至少要2^(5*5)个5*5的方格。 仔细计算一波时间复杂度,再信仰一波,坚信暴力压正解。 阅读全文