摘要:
https://www.luogu.org/problem/show?pid=2602 数位dp是dp的一种,一般来说这种东西至少要一个预处理数组 这种题目你只要靠自己的力量成功搞掉一道,基本上思路都是在的,和背包很像,是有模板的; 我们先弄一个f[i]表示位数位i时,所有情况中0... 阅读全文
摘要:
我是先讲题目呢,还是先骂人呢? 算了,先讲题目;https://www.luogu.org/problem/show?pid=3237 题目意思是遍地可找的,但是我们怎么去记录某个点值确定时根节点的值呢? 我一开始想到一个dfs n次的算法,时间复杂度n^2,炸! 其实你画个图自己... 阅读全文
摘要:
https://www.luogu.org/problem/show?pid=1896 感觉像N皇后问题有没有啊,但是这里范围比较少,我们可以采用状压dp来搞一搞; 预处理搞出每一种状态需要国王的数量,以及每两种状态之间是否以衔接,之后用dp一层一层地算就好了 现在我知道为什么有人... 阅读全文
摘要:
c++的long long很坑爹的啊; 首先 -2^63~2^63-1 输出时printf要”%lld” 另外还有一些神奇的东西啊; 1.关于数字,在后面+LL就特指longlong的数字 在位运算是,比如a&1,如果a为longlong,1位int那就完了啊,因为int的长度不如... 阅读全文
摘要:
这题很简单,而且题面描述也很清楚,我就不放样例了。 设f[i][2]表示第i个点选(1)或不选(0),以i为根的这棵子树能选的最大价值。易得转移方程为: f[i][0]=∑(max(f[s][0],f[s][1])) f[i][1]=∑(f[s][0])+w[i] ————————... 阅读全文
摘要:
https://www.luogu.org/problem/show?pid=3437 代码就不用看了,全抄hzwer的,但是我调了一个多钟头汗; 这个就是基本的二维线段树了,lazy都不用的,不知道是不是传说中的标记永久化; 二维线段树,我选择树套树,因为四分树好像会被卡 网上只... 阅读全文
摘要:
https://www.luogu.org/problem/show?pid=3437 今天做题,做到了这个,二维线段树; 不会的我便仔细研究起hzwer的代码; 明明是区间修改,为什么没有lazy? 这个问题我算法不解; 我这几天,做了不少线段树的题目,也看到了很多优秀的代码模板... 阅读全文
摘要:
https://www.luogu.org/problem/show?pid=2894#sub 这道题第一天我觉得贼难,感觉很复杂; 第二天看便有了思路,但觉得写起来不简单; 第三天发现,只不过是线段树里面多维护了几个东西罢了; 以后的练习,估计线段树不再仅仅是维护一下数值就好了;... 阅读全文
摘要:
凡有位运算的全加括号!!!!!二进制嘛,可以加速 a*2==a>1 2^b==1(a%2==1) a^1可以求出数的一个相邻数 等等等等 下面我会在做题目时记录一下位运算的技巧https://www.luogu.org/problem/show?pid=1558 这题让我们统计区间... 阅读全文
摘要:
https://www.luogu.org/problem/show?pid=2061 这是我做的第一道“入门难度”的线段数,全程犯傻; 首先,我们要维护线段数,一个下标线段数; 下标很大,1e9; 所以我们要离散; 问题来了,我根本不会离散…….; 其实离散,很简单; 比如两个坐... 阅读全文