- 博客(11)
- 收藏
- 关注
原创 Week 11 组合博弈
P1002 [NOIP2002 普及组] 过河卒 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)一方无路可走意味着另一方胜利,而一次移动最多只能创造出一条0边,这就意味着造成终局的步骤,一定是。P1288 取数游戏 II - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)P1113 杂务 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)赢家主动走到了一条0边旁。按位运算的异或和==0。
2023-12-25 15:39:52 75 1
原创 Week 10 二分匹配
使得方阵的主对角线(左上角到右下角的连线)上的格子均为黑色,而行列变换操作并不会改变方阵中1的个数,所以。如果最大匹配数 == n,即每一行每一列都至少有一个1,输出Yes,否则输出No。(1)“敌人的的敌人就是朋友”,若x和y有仇,合并x与y的敌人在同一所监狱内。(3)最后,若所有有仇的罪犯都被分配到了不同的监狱内,输出0。:对左边的n个点进行n次dfs,如果能在右边找到与之对应的点,答案++。1.排序,尽可能让怒气值大的两个罪犯分到不同的监狱中。:行数为左边列,每一行中值为1的列数为右边列。
2023-12-17 12:02:41 74 1
原创 Week 9 啥也不是()
P1119 灾后重建 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn):要使每一条边的两点被染成两种不同的颜色,否则,impossible。反向建边:题目要求能到达的编号最大的点,可以反向考虑。(2)某点在起点到终点的所有路径中的。时,该点一定是起点和终点之间的关键点。分别记录(1)起点到终点的。较大的点能够到达哪些点。
2023-12-10 16:13:30 67 1
原创 Week 8 最短路径问题
的数据结构,用于处理一些不相交集合的合并及查询问题(即所谓的并、查)。比如说,我们可以用并查集来判断一个森林中有几棵树、某个节点是否属于某棵树等。P8794 [蓝桥杯 2022 国 A] 环境治理 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)B3647 【模板】Floyd - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)二分:每治理一次,P值都会下降,为。中,顶点到某个节点的最短路就是其。蒟蒻也不太懂,就不瞎解释了。在题解中看到一个新奇的思路,BFS搜索树的深度。
2023-12-09 15:28:46 92
原创 Week 7 DFS
即i + j = c(c为常数),所以标记为。表示某点是否来过,如果终点被标记为来过的话,则存在这个路径,输出"Yes",否则,输出"No"。BFS和DFS均可,不过BFS常用于最短路径等问题,而且蒟蒻正在学习DFS,所以此处用。(1)因为输入的全是数字,而int会认为一整行为一个数字,所以改用。,同时要注意判断点(i,j)处是否为0时要用。每条这样的对角线上的点的横纵坐标相加都为定值。:一旦来过第j列就将第j列标记为1,即。i + j和i - j + n的大小。(c为常数),所以标记为。
2023-11-25 17:57:48 42
原创 Week 6 BFS
这里用的结构体,分别记录当前楼层和下一楼层,包括它们的层级数 和到这层的min步数。:从当前楼层向上向下移动,如果能到下一层(不超过边界 && 之前没到过这一 层),将下一层加入队列。:定义一个数组vis[ ]初始值均为0,如果到达第i层,将vis[ i ] = 1,表示已经到过。,输出"Yes",反之,输出"No"。,在从前往后遍历洞的数组,如果。
2023-11-20 14:35:45 45 1
原创 Week 5 背包(0-1,完全,多重)
(这里多重背包的二进制优化没咋的听懂,就全部暴力转化成0-1背包了,2.把每个物体看成价值和体积均为a[i](即物品体积)。1.求最小剩余空间,就是求能够放入的最大体积。(采用一维数组从后往前遍历进行优化)。:时间为体积,草药的价值为价值。可以将这题转化成一个。
2023-11-11 15:26:05 73 1
原创 Week 4 DP
一一求出以第i个整数为末尾的最长上升子序列的长度(line[i]),每当第i个数大于第j个数(在第i个数前面) && 目前line[i]小于line[j]+1(即。,如果小于零,sum[i] = a[i];如果大于零,sum[i] = sum[i-1]+a[i]。反之,sum[i] = a[i]。状态转移方程:a[i][j] = a[i-1][j] + a[i][j-1]第i-1项的最大和sum[i-1]与第i项的和a[i]时。第i项的最大和sum[i]
2023-11-04 16:34:20 90
原创 Week 3 递推
第二种想法:开四个一维数组a[MAXN],b[MAXN],g[MAXN],k[MAXN]记录每张地毯上的点,第一个想法:开一个二维数组,第i张地毯输入a,b,g,k时直接将该地毯上的点记录为i。第i个台阶可以从i-1,i-2,......,i-k阶走上来(保证i与k中取最小)。=0)时,f[n] = f[n-1] +f[n/2]即a[n] = a[n-1]+a[n-2]+...+a[n-k]。合法数列的个数f[n] == f[n-1]。综上,f[8] = f[7] +f[4],即。
2023-10-28 16:50:22 38
原创 Week 2 贪心
最开始是想着算出平均数之后,先找到最大的那个数,再向左向右移,尽可能使得它和与它相邻的堆的纸牌数变成平均值,但是思考了半天,好像也没有很好的解决办法(大抵是水平太低,转化不成代码,卑微)。动态数组a也可以直接写成普通数组,本来打算找到一个min,弹出一个min,所以用的vector,结果忘记了每弹出一个元素,角标i也会-1,那vector就没用了。3.最短的平均等待时间,我这里用的是,从最长的那段时间开始,依次n个人的等待时间的总和。,如果a[i]==ave直接跳过,每移动一次,次数+1。
2023-10-21 20:59:35 85
原创 Week 1
注意:因为这里的find函数中while循环结束条件是left==right,所以一旦找到与目标数字相同的数会自动覆盖掉原来的mid,使得最终结果一定第一个编号。然后,希望找到最大的d,一开始用的是双层循环,直接爆了TLE,后来改用函数gcd求任意两项之间的最大公约数((2) if(d==0),即每一项的值都相等,则项数直接为n。(不提前说明#1会报RE)翻译题意:有n个坐标,存在x满足m(m
2023-10-13 16:08:42 98 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人