洛谷
AMjieker
这个作者很懒,什么都没留下…
展开
-
算法基础应用
基础 快排应用 o(n) 的时间内找出 第 k小的数 原理, 快排也是像二分的方法区分左右两个区间的内容 那么对于每一次排完序可以分成3个部分,左区间,中间,右区间,这个k一定在某一个区间中,那么我们只需要去判断它在哪一个区间递归进去即可。 code var void quick(int l,int r){ int i=l,j=r,mid=g[(l+r)>>1]; do{ while(g[i]<mid) i++; while(g[j]>mid) j--;原创 2021-10-16 13:13:43 · 68 阅读 · 0 评论 -
P1734 最大约数和
P1734 最大约数和 题目: 选取和不超过S的若干个不同的正整数,使得所有数的约数(不含它本身)之和最大。 思路: 01背包小微调 S不大,才1000,暴力求出1-S的数的前缀和 转换为01背包问题 状态方程变化f[j]=max(f[j],f[j−i]+g[i])f[j]=max(f[j],f[j-i]+g[i])f[j]=max(f[j],f[j−i]+g[i]) AC代码: #include<iostream> const int N = 1111; using namespace s原创 2021-07-20 20:01:55 · 96 阅读 · 0 评论 -
P3052 [USACO12MAR]Cows in a Skyscraper G
做题 OJ 题意 给出n个物品,体积为w[i],现把其分成若干组,要求每组总体积<=W,问最小分组。(n<=18) 解法 dfs+小剪枝 1,如果当前的答案超过ans 显然不合理 剪掉 2,我们可以从大到小选择每一个放在那一个电梯中 缩小枚举空间 (从小到大枚举的空间更多 耗时更长) 代码 #include<iostream> #include<algorithm> #define int long long using namespace std; const原创 2021-04-06 22:44:08 · 98 阅读 · 0 评论 -
P1019 [NOIP2000 提高组
P1019 [NOIP2000 提高组] 单词接龙 题目描述 单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的“龙”(每个单词都最多在“龙”中出现两次),在两个单词相连时,其重合部分合为一部分,例如 beast 和 astonish,如果接成一条龙则变为 beastonish,另外相邻的两部分不能存在包含关系,例如 at 和 atide 间不能相连。 输入格式 输入的第一行为一个单独的整数 nn 表示单词数,以下 nn 行每行有原创 2021-03-13 11:08:37 · 120 阅读 · 0 评论 -
P3956 [NOIP2017 普及组] 棋盘
P3956 [NOIP2017 普及组] 棋盘 有一个m×m的棋盘,棋盘上每一个格子可能是红色、黄色或没有任何颜色的。你现在要从棋盘的最左上角走到棋盘的最右下角。 任何一个时刻,你所站在的位置必须是有颜色的(不能是无色的), 你只能向上、 下、左、 右四个方向前进。当你从一个格子走向另一个格子时,如果两个格子的颜色相同,那你不需要花费金币;如果不同,则你需要花费 1个金币。 另外, 你可以花费 2 个金币施展魔法让下一个无色格子暂时变为你指定的颜色。但这个魔法不能连续使用, 而且这个魔法的持续时间很短,也就原创 2021-03-12 21:31:48 · 126 阅读 · 0 评论