- 博客(7)
- 收藏
- 关注
原创 D - A Simple Math Problem HDU - 5974 (数论+二分)
这一题我们很容易想到暴力,但是会TLE。那么我们就可以使用二分将时间复杂度压低。我们假设存在正确答案,将LCM中的。
2023-03-27 00:25:04
111
1
原创 C - Min Max Sort (Educational Codeforces Round 142 (Rated for Div. 2))
当 1 在序列的最前面时,无论如何都可以通过n-1次操作还原序列;同理,当 n 在序列的最后面时,无论如何都可以通过n-1次操作还原;那么如果选择的 x 和 y 两个数既不是 1 也不是 n 时可以一次还原两个。还可以发现最佳的情况就是 1~n 本来就是有序,那么操作是0。所以,我们希望总有一些数字本来就是有序的,不用移动,那么我们把这些数字放在一个集合。然后再讨论一下 哪个集合需要的操作次数最少。
2023-01-26 00:32:15
576
原创 Codeforces Round #826 (Div. 3)(D. Masha and a Beautiful Tree)线段树解法
那么 d==1 的地方一定是需要执行一次交换的点 ,加上 1 次即可,当L==R时,把当前值push 进一个数组里,代表排序后的顺序,最后再验证一遍顺序是否符合即可。题目大意:输入包 t ( 1 ≤ t ≤ 1e4 ) 组测试样例,每组样例先输入 m 大小的数组,构建一棵满二叉树。当序列本身就是一个升序序列时,每个节点的 d 都会是 0 ,也就是说如果你要询问每个点,一定是先找左子树再找右子树。我们在树的每个节点记录下区间的最小值 v 和 递归的方向 d。规定向左递归为 0,向右为 1。
2022-10-14 18:02:18
362
原创 P1510 精卫填海 题解
输入三个整数:待填体积v、n、体力c。把体力c当作背包容量,求出体力c能填多少体积的石头,再进行判断:如果填的石头大于v那就是可能,否则不可能。在可能填完的情况下找出填完v实际需要花费多少体力,就可以求出剩下体力。(头文件不用这么多,是我写其他题的头文件)#include <iostream>#include <stdio.h>#include <string>#include <string.h>#include <queue&g
2022-02-12 11:52:32
441
原创 P1049 [NOIP2001 普及组] 装箱问题 题解
01背包问题,把体积看成背包容量,但装的还是体积。下面是代码(头文件不用这么多的)#include <iostream>#include <stdio.h>#include <string>#include <string.h>#include <queue>#include <vector>#include <stack>#include <list>#include <map>
2022-02-12 10:24:32
342
原创 P1048 [NOIP2005 普及组] 采药 题解
#include <iostream>#include <stdio.h>#include <math.h>#include <algorithm>#include <functional>#define s(x,y) sort(x.begin(),x.end(),y);#define lowbit(x) ((x)&-(x));using namespace std;typedef long long ll;const .
2022-02-12 10:10:01
297
原创 P1507 NASA的食物计划 题解
01背包问题,但是有两个变量体积(vol)和质量(m)我们知道,一个变量的01背包大概是这么写的(随便举的例子):for(int i=1;i<=n;i++){ for(int j=v;j>=vol;j--) { dp[j]=max(dp[j],dp[j-vol]+val); }}仿照这个代码可以写成:for (ll j = maxv; j >= fd.vol; j--) { for (...
2022-02-12 01:38:29
257
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人