学习之路,长路漫漫,写学习笔记的过程就是把知识讲给自己听的过程。前段时间我们的实验室进行纳新,准备了一些题目,由于之前很少刷题的缘故,在这次刷题的过程中出现了很多的纰漏与问题。同时,我们选用的平台,对代码进行检查时,也会爆出各种问题,而我也不知道什么问题/(ㄒoㄒ)/~~,提交了很多次后我放弃了?。评论区有没有大佬,或者刷题的朋友们,可以跟我分享一下刷题经验。?目前正在自学C++,求大佬关于
今年我23了,时间过的可快啊。我爱我身边的人,我爱我老公。
转载 2009-07-15 14:13:34
171阅读
树形dp
原创 2023-02-17 01:28:01
19阅读
题面 看到 \(n \leq 35\) ,这是一个非常小的数据,但是 \(O(2^n)\) 的暴力跑不过去,所以考虑玄学做法 \(\text{Meet in Middle}\) 。就是先做左边,然后做右边的时候顺便和左边合并。 考虑到每个点最多进行一次操作(两次操作回源没用),所以对于每个点只有操作 ...
转载 2021-08-03 17:14:00
86阅读
2评论
明显的动态规划 题目大意 \(n\) 种游戏主机,第 \(i\) 种主机的价格是 \(P_i\)。该主机有 \(G_i\) 个独占游戏。很明显,奶牛必须先买进一种游戏主机,才能买进在这种主机上运行的游戏。在每种主机中,游戏 \(j\) 的价格为 \(\mathit{GP}_j\),每头奶牛在玩了该游 ...
转载 2021-08-02 12:06:00
47阅读
题面 本人用的是暴力分类讨论 + \(unordered\_map\) 存储,与所有的题解都不同。 因为 \(n \leq 6\) ,非常的小,并且我不想写 DFS,所以直接暴力分类讨论 \(n=1,n=2,\dots,n=6\) 的情况。 当 \(n \leq 3\) 时,可以用循环嵌套来解决,这 ...
转载 2021-08-04 16:31:00
72阅读
2评论
题面 看起来非常简单,但是细节多的一批的状压DP入门题。 我设 \(f_i\) 为 \(i\) 状态时最小分组数, \(g_i\) 为 \(i\) 状态时最后一组剩余空间。 对于每一个 \(i\) ,枚举每一个 \(1\le j\le n\) 且 \(j\) 不在 \(i\) 内, 即 \(i \& ...
转载 2021-08-09 16:15:00
124阅读
2评论
题面 这个题就是个暴力题。 暴力从后往前枚举每一个状态,对于每一个状态暴力枚举每一种操作,然后暴力转移。 就是操作的时候位运算要看好是 << (l-1) 还是 << l 。另外就没什么难点了。 代码 ...
转载 2021-08-11 15:52:00
70阅读
2评论
题面 看题目就知道这是一个点覆盖型树形DP。 首先定义状态。设 \(f_i\) 为 \(i\) 节点的状态。 那么, \(f_i\) 有三种情况: 自己不放置坑爹。 儿子坑了自己。 儿子全部自给自足,自己不放置,靠儿子养活。 三个状态分别如图所示: 知道状态以后,转移就很简单了。 初始状态:坑爹,因 ...
转载 2021-08-13 15:00:00
145阅读
2评论
题目传送门 题意概述 给定一个长度为 \(2\times n\) 的布尔数列,求交换的最小次数,使得左右两个长度为 \(n\) 的数列的逆序对的数量相同。 思考 首先,我们令 \(\Delta=f(1,n)-f(n+1,2\times n)\), 其中 \(f(i,j)\) 表示这个数列下标在 \( ...
转载 2021-09-27 22:09:00
84阅读
2评论
根据题意,分析如右图 显然,对于每个前缀,有这样的性质A==B==C,所以,周期最长则a最短,即求该字符串的最短公共前后缀。通过kmp算法中nex数组的迭代,很容易求得最短前后缀。 for(int i=2;i<=len;++i) { j=i; while(nex[j]!=0) { j=nex[j]; ...
转载 2021-09-28 21:03:00
111阅读
2评论
题目传送门 这道题是一道很好的递归题。(当然模拟也可以做) 首先我们看题:在次题中,logo有3个关键词: 1.FD(向前); 2.BK(向后); 3.REPEAT(重复)。 这些关键词语法分别为: 1.FD n 表示向前移动n步; 2.BK n 表示向后移动n步; 3.REPEAT n[..... ...
转载 2021-07-27 20:33:00
208阅读
题面 首先他叫我们建一颗笛卡尔树,所以我们就建一颗笛卡尔树。 然后他说要生成序列中最小的。想到笛卡尔树的一条性质:左<根<右。但是根节点必须先插进去。他的两个儿子用贪心的思想就知道是先选左边那个。然后这题就做完了。 根据分析我们知道,遍历的顺序是根-左-右,这不是先序遍历么。 code ...
转载 2021-08-03 17:07:00
154阅读
2评论
题面 首先,对于每个数,有三种状态:选入集合A,选入集合B,或者不选入集合。暴力枚举的时间复杂度是 \(O(n\times3^n)\) ,显然跑不过去。 因此考虑 \(\text{Meet in Middle}\) 。记录选取前半部分的数时的总和,然后和右边每次搜索的结果进行匹配。 我设两个集合分别 ...
转载 2021-08-05 16:38:00
88阅读
2评论
题面 显然是个状压DP。 看数据范围,不难发现算法复杂度应该是 \(O(n\times 2^n \times 2^n)\) 。 显然第一个 \(n\) 是遍历每一行的土地。 后面两个 \(2^n\) ,想都不用想就知道是暴力枚举上一行和这一行的状态。 而枚举状态这个东西比较浪费时间,所以我们可以先不 ...
转载 2021-08-09 19:15:00
74阅读
2评论
题面 对于每一秒,Bessie 肯定会跑一个单位。这是什么?过河卒! 然后枚举每一秒, \(f_{nowx,nowy,t}=\sum_{i=0}^3 f_{nowx-x_i,nowy-y_i,t-1}\) 。 这像一个DP。 没了。 代码 ...
转载 2021-08-16 16:42:00
63阅读
2评论
题面 树形DP。 首先可以发现, \(m>2\) 时,难受度只出现在最大的头吃的果子上(因为我把果子分成最大的头吃的和其他的,其他的里面,相邻的果子让不同的头吃即可)。 然后我定义 \(f_{i,j,k}\) 为当前为 \(i\) 节点,当前节点分 \(j\) 个果子给最大的头,当前节点选择情况为 ...
转载 2021-10-09 20:15:00
75阅读
2评论
题面 首先这 \(n\) 个数是互相独立的,所以我们不需要统一的去考虑,只需要考虑其中一个数即可。 我们以 \(k=5\) 的情况举例。 我设 \(f_i\) 为最后一行只填前 \(i\) 个点的情况数, \(g_i\) 为 \(k=i\) 时总共的情况数。 显然, \(f_0\) 就是 \(g_{ ...
转载 2021-10-04 08:50:00
116阅读
2评论
题面 模拟退火练手好题。 对于这个题,一般有两种解法: 每次随机两个数交换。 每次直接打乱数组。 两个方法都可以过,我写了第一种,因为不想用stl。 代码 ...
转载 2021-08-07 17:21:00
30阅读
2评论
题面 观察原递推式, \(f_i=1\times f_{i-1}+0\times f_{i-2}+1\times f_{i-3}\) , 所以 \[ \begin{aligned} f_i &= 1\times f_{i-1}+0\times f_{i-2}+1\times f_{i-3}, \\ ...
转载 2021-08-19 17:59:00
32阅读
2评论
  • 1
  • 2
  • 3
  • 4
  • 5