摘要:
这不就是个n方dp吗……看了眼洛谷题解简直神仙打架 我全程没用到n…… 把休息时间并入产奶时间,注意“结束时间不挤奶”,所以ei=ei+r 1,注意这个 1! 然后按r排序,设f[i]为选i的最大收益,因为r是单调的所以直接从左到右扫一遍满足rj include include using name 阅读全文
摘要:
tag是假的,用了及其诡异的方法判负环 正权无向边和负权有向边的图 cpp include include include using namespace std; const int N=505,inf=210000000; int n,m,w,h[N],cnt,d[N]; struct qwe 阅读全文
摘要:
在洛谷上被卡了一个点开了O2才过= = bfs即可,为方便存储,把所有坐标+500 cpp include include include using namespace std; const int N=1005,dx[]={ 1,1,0,0},dy[]={0,0, 1,1}; int n,sx, 阅读全文
摘要:
dfs,如果一个点的儿子、本身、父亲都没有塔,就在父亲上建一个 原理不明…… cpp include include using namespace std; const int N=10005; int n,h[N],cnt,ans; bool v[N]; struct qwe { int ne, 阅读全文
摘要:
弗洛伊德之后按序列加起来即可 cpp include include include using namespace std; const int N=50005; int n,m,a[10001],d[101][101],ans; int read() { int r=0,f=1; char p= 阅读全文
摘要:
仿佛学到了贪心的新姿势…… 考虑相邻两头牛,交换它们对其他牛不产生影响,所以如果交换这两头牛能使这两头牛之间的最大值变小,则交换 阅读全文
摘要:
忘开long long了居然没WA 二分答案,枚举判断看最后需要的月份数是否小于等于要求的即可 阅读全文
摘要:
是时候复习一波背包了 完全背包裸题 cpp include include using namespace std; int m,n,a[30]; long long f[10005]; int main() { scanf("%d%d",&m,&n); for(int i=1;i 阅读全文
摘要:
不能用read会TLE!!不能用read会TLE!!不能用read会TLE!! 一开始以为要维护每个点,线段树写了好长(还T了…… 首先dfs一遍,求出点1为集会地点的答案,处理处val[u]为以1为根u子树点权和 然后从1带着当前点答案ans跑dfs,向儿子转移的时候就是带下去儿子的ans'就是a 阅读全文
摘要:
这几天写USACO水题脑子锈住了……上来就贪心,一交就WA 事实上这个是一个叫最短路树的东西,因为能保证只有一条最短路,所以所有最短路合起来是一棵以1为根的树,并且在这棵树上,每个点被精灵占据的路是它通向father的 先spfa把最短路dis[]和最短路树求出来,把被选入最短路树的边打上删除标记 阅读全文
摘要:
因为是单调不降或单调不升,所以所有的bi如果都是ai中出现过的一定不会变差 以递增为例,设f[i][j]为第j段选第i大的高度,预处理出s[i][j]表示选第i大的时,前j个 a与第i大的值的差的绝对值 的和。 转移显然是 $$ f[i][j]=min{f[i 1][k]+s[i][j] s[i][ 阅读全文
摘要:
按s从大到小排序,逆推时间模拟工作 阅读全文