摘要:
837D - Round Subset 思路:dp。0是由2*5产生的。 ①dp[i][j]表示选i个数,因子2的个数为j时因子5的个数。 状态转移方程:dp[i][j]=max(dp[i][j],dp[i-1][j-c2]+c5)。 初始化:dp[0][0]=0,dp[i][j]=-INF(i!= 阅读全文
摘要:
FZU - 2150 思路:bfs。注意初始化啊,忘了清空vector,TLE一个下午。 代码: 阅读全文
摘要:
369C - Valera and Elections 思路:dfs,对于搜索到的每个节点,看他后面有没有需要修的路,如果没有,那么这个节点就是答案。 代码: 阅读全文
摘要:
UVA - 11853 思路:dfs,从最上面超过上边界的圆开始搜索,看能不能搜到最下面超过下边界的圆。 代码: 阅读全文
摘要:
834D - The Bakery 思路:dp[i][j]表示到第j个数为止分成i段的最大总和值。 dp[i][j]=max{dp[i-1][x]+c(x+1,j)(i-1≤x≤j-1)},c(x+1,j)表示x+1到j的不同的值。 用线段树维护一下最大值。 上图最后一个点取不到,不解释,不明白请评 阅读全文
摘要:
POJ - 2528 Mayor's posters 思路:分治思想。 代码: 阅读全文
摘要:
算法笔记 模板: POJ - 3468A Simple Problem with Integers 代码: #include<iostream> #include<cstdio> using namespace std; #define ll long long #define ls rt<<1,l 阅读全文
摘要:
835C-Star sky 思路:dp,预处理一下c+1层前缀和。 代码: 阅读全文
摘要:
628B - New Skateboard 思路:dp 代码: 阅读全文
摘要:
834C - The Meaningless Game 数学。 思路1:判断a•b能不能化成v3且a%v==0且b%v==0。v可以直接用pow求(或者用cbrt),也可以二分求;还可以用map映射预处理,使得所有的map[v*v*v]=v。 代码1(cbrt版,296 ms): 代码2(pow版, 阅读全文
摘要:
算法笔记 模板: vector<int>g[N]; vector<int>edge[N]; int anc[20][N]; int deep[N]; int h[N]; void dfs(int o,int u,int w) { if(u!=o)deep[u]=deep[o]+1,h[u]=h[o] 阅读全文
摘要:
832D - Misha, Grisha and Underground 思路:lca,求两个最短路的公共长度。公共长度公式为(d(a,b)+d(b,c)-d(a,c))/2。 代码: 阅读全文
摘要:
821C - Okabe and Boxes 思路:模拟。因为只需要比较栈顶和当前要删除的值就可以了,所以如果栈顶和当前要删除的值不同时,栈就可以清空了(因为下一次的栈顶不可能出现在前面那些值中)。 代码: 阅读全文
摘要:
算法笔记 挑战程序设计p98 例题1:hiho1121 : 二分图一•二分图判定 代码: #include<bits/stdc++.h> using namespace std; #define ll long long #define ls rt<<1,l,m #define rs rt<<1|1 阅读全文
摘要:
算法笔记 参考:https://blog.csdn.net/li1615882553/article/details/80136776 https://blog.csdn.net/cillyb/article/details/78058174 复杂度证明:https://www.cnblogs.co 阅读全文
摘要:
525A - Vitaliy and Pie 思路:贪心+hashing。 代码: 阅读全文
摘要:
140D - New Year Contest 思路:贪心+排序。罚时与时间成正比,因为在0点前做完的题都可以在0点提交。从时间短的开始做最优。 代码: 阅读全文
摘要:
C - Om Nom and Candies 思路:贪心+思维(或者叫数学)。假设最大值max(wr,wb)为wr,当c/wr小于√c时,可以枚举r糖的数量(从0到c/wr),更新答案,复杂度√c;否则,假设hr/wr<hb/wr,得到hr*wb<hb*wr,由这个等式可知,在有wb*wr重量限制的 阅读全文