04 2022 档案

摘要:状态压缩DP,是今天所要讲到的内容。 其实状态压缩这个概念我们并不陌生,我们之前在做八数码问题的时候就是把那张图给压缩成了一串数字来表示,这里其实也是利用到了状态压缩,让图的内容可以很简单的用数来表示。 例题:291. 蒙德里安的梦想 - AcWing题库 题解:我们来分析一下这道题该怎么做,以及我 阅读全文

posted @ 2022-04-27 20:56 ZheyuHarry 阅读(40) 评论(0) 推荐(0) 编辑

摘要:我们知道,动态规划用来解决一类最优化问题,通过将原问题分解成若干的子问题,并综合子问题的最优解从而得到原问题的最优解,线性DP就是这么一种现行的分析DP的思路。 我们这里来介绍几种常见的模型以及例题: 1.数字三角形模型 例题:898. 数字三角形 - AcWing题库 状态表示: f[i]j[j] 阅读全文

posted @ 2022-04-25 23:45 ZheyuHarry 阅读(137) 评论(0) 推荐(0) 编辑

摘要:我们知道,背包问题是一种非常经典的动态规划问题,本文总结了几种类型的背包问题并进行了分析: 根据百度百科,我们可以看到背包问题(Knapsack problem)是一种组合优化的NP完全问题。问题可以描述为:给定一组物品,每种物品都有自己的重量和价格,在限定的总重量内,我们如何选择,才能使得物品的总 阅读全文

posted @ 2022-04-23 15:58 ZheyuHarry 阅读(240) 评论(1) 推荐(0) 编辑

摘要:题目: (我的题目很长,你忍一下……) 题目分析: 这道题目的体面比较复杂,先是讲了一下树是怎样的一个结构,并且告诉我们在这里,他是以什么样的一种方式描述一棵树的,就是通过描述每个节点的父节点是哪个(b数组),然后告诉我们要安排边权,使得树中的每个节点到根的距离都能如同p数组那样进行排序,然后叫我们 阅读全文

posted @ 2022-04-16 11:02 ZheyuHarry 阅读(95) 评论(0) 推荐(0) 编辑

摘要:这是一道比较综合的数学题目,光是吧题目看懂就花了我好一会儿时间,先看看题目吧: 题目分析:对于m段给定连续段的或值,要求出n个数的序列子序列的异或值之和; 题解: 这道题,我们先不要把它当作一个数一个数来做,而是要考虑每一位的贡献值; 考虑二进制第 位对"数组所有子序列异或值的和"的贡献。设 中第 阅读全文

posted @ 2022-04-15 18:59 ZheyuHarry 阅读(100) 评论(0) 推荐(0) 编辑

摘要:题目: 题目分析: 这道题是一个关于树的问题,我们已知一棵深度若干的健康的树,然后每秒能进行一次操作,操作分为两个内容,一个是spreading,是说一群兄弟节点中,只要有一个被感染了,每一秒这些兄弟节点之间就会被感染一个(注意,只是感染一个,而不是说每一个被感染的都可以去感染一下旁边的节点,不然就 阅读全文

posted @ 2022-04-11 16:58 ZheyuHarry 阅读(48) 评论(0) 推荐(0) 编辑

摘要:分析题目:这道题的题目是说给定一个2的幂次n,然后要求我们从0~n-1这n个数中不重复的挑选两个进行配对,要求配对后的每一对按位与之和为k; 而且k的话还是从0~n-1都有的; 既然题目都这样说了,那么这道题就肯定要转换为二进制来观察了,我们可以发现因为n始终是2的幂次,所以n-1的二进制表示就是1 阅读全文

posted @ 2022-04-09 11:16 ZheyuHarry 阅读(49) 评论(0) 推荐(0) 编辑

摘要:题目分析:我们先简单的分析一下这道题是在干什么啊,给我们三个整数n,a,b,问我们能否构造这样的排列使得序列中有a个极大值,b个极小值,能的话就给出任意一种可能的情况,不能的话就输出-1; 其实一开始我分析这道题的方法不是很好,这道题最好的解决方法不是举几个栗子然后观察规律,而是应该学会数形结合,我 阅读全文

posted @ 2022-04-08 22:02 ZheyuHarry 阅读(62) 评论(0) 推荐(1) 编辑

摘要:题目分析:我们先分析一下这道题目要我们做什么,我们会得到一个长度为n的序列,然后我们可以随机挑取前k个数字并找出其MEX的值放入b中,并把这前k个数删掉,然后继续操作,要求我们最后得到的b序列的字典序最大; ·解释一下:首先什么是MEX呢? 就是找出这一段序列中第一个未出现的自然数; ·什么是b的字 阅读全文

posted @ 2022-04-08 17:50 ZheyuHarry 阅读(30) 评论(0) 推荐(0) 编辑

摘要:求一个数的最大公约数最常用的方法就是辗转相除法,也就是说gcd(a,b) == gcd(b,a%b); 为什么说这样是可以的呢,我们首先证明一下if(a%d == 0 && b%d == 0) then (k1*a+k2*b)%d == 0; 我们接下来继续说明一下原式为什么可行: 假设a>b,a 阅读全文

posted @ 2022-04-06 20:16 ZheyuHarry 阅读(398) 评论(0) 推荐(0) 编辑

摘要:让我们先来看到欧拉函数的定义: 我们相当于已经知道了公式只需要按照公式进行质因式分解即可,直接来看代码吧: #include<bits/stdc++.h> using namespace std; int main(){ int n; cin >> n; while(n -- ){ int a; c 阅读全文

posted @ 2022-04-06 20:10 ZheyuHarry 阅读(66) 评论(0) 推荐(0) 编辑

摘要:这一部分我们将会讲到数论中的快速幂问题,是用于快速求解a^k%p 的此类问题的; 1<=a,k,p <= 1^9; 解题思路: 我们假设a^k的因式分解可以分解为x1,x2,x3....,xk,ans = (x1%p)(x2%p)....(xk%p); 因为我们如果按照朴素做法肯定要一步步求出a^k 阅读全文

posted @ 2022-04-06 19:55 ZheyuHarry 阅读(31) 评论(0) 推荐(0) 编辑

摘要:分析:我们可以看出这道题目的描述并不是很复杂,就是说对于一个给定的整数n,我们能否把他拆成k个powerful的数,也就是说这k个数要么是2的幂次,要么是某个数的阶乘,并且我们要让当前的k越小越好;然后如果不能被拆的话输出-1; 我们这样来看,先看会不会输出-1,我们如果把这个整数n用二进制的方法写 阅读全文

posted @ 2022-04-05 13:56 ZheyuHarry 阅读(79) 评论(0) 推荐(0) 编辑

摘要:分析:通过读题我们可以知道,这道题其实并不是什么很困难的题,无非就是让我们找到当前产奶量倒数第二小的奶牛,并且特判一下有多头奶牛满足或者没有奶牛满足的情况罢了,这道题的关键在于我们应该如何去分析数据,首先我们知道这里的挤奶记录不是把名字相同的奶牛给综合了,所以我们要想得到对应的奶牛的产奶的数量最简单 阅读全文

posted @ 2022-04-05 13:40 ZheyuHarry 阅读(37) 评论(0) 推荐(0) 编辑

摘要:先前我们已经介绍过了怎么判断质数和约数,现在我们对于约数的个数和约数之和也要进行求解,而求解的方法就是根据算术基本定理来的! 先介绍一下什么是算术基本定理: 算术基本定理可表述为:任何一个大于1的自然数 N,如果N不为质数,那么N可以唯一分解成有限个质数的乘积N=P1^a1*P2^a2*P3^a3. 阅读全文

posted @ 2022-04-04 18:01 ZheyuHarry 阅读(174) 评论(0) 推荐(0) 编辑

摘要:约数和质数是我们在认识数学问题中经常遇到的两个概念,所以如何判断他们肯定也是我们需要去考虑! 首先我们看一些判断质数: 因为我们可以知道质数的概念指的是这个数只能被1和自身整除,所以我们枚举从2~sqrt(x)的范围内的数,是因为如果不是质数的话是一一对应的,如果在2~sqrt(x)这个范围内被整除 阅读全文

posted @ 2022-04-04 17:46 ZheyuHarry 阅读(90) 评论(0) 推荐(0) 编辑

摘要:我们如何计算从1~n一共有多少个质数呢,我们就要考虑一种筛法,用已知的数把确定的那些不会是质数的数全部筛掉! 我们先介绍第一种一般筛法: void get_primes2(){ for(int i=2;i<=n;i++){ if(!st[i]) primes[cnt++]=i;//把素数存起来 fo 阅读全文

posted @ 2022-04-03 16:14 ZheyuHarry 阅读(169) 评论(0) 推荐(0) 编辑

摘要:题目: 分析:让我们把题目换成人能听懂的话,题目询问的是当前的这个矩阵上被喷成黑色的连通块是不是一个标准的矩阵! 就是说一旦有凸出去或者凹进去的都不行; 题解:我们以2X2的矩阵来看,只要矩阵中黑色的个数不为3,就不会产生问题,就至少不会在这个地方产生凹进去或者凸出来的问题; 这样就非常简单了! 阅读全文

posted @ 2022-04-01 23:02 ZheyuHarry 阅读(47) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示