2020年7月8日

[SDOI2016]储能表

摘要: 数位dp题。 f[i][0/1][0/1][0/1]表示从高到低第i位,是否到n的上界,是否到m的上界,当前异或结果是否到k的下界。 对于每个状态记录合法方案数和所有合法i,j的异或和,对于每一位枚举n和m选0还是1转移即可。 #include<bits/stdc++.h> #define file 阅读全文

posted @ 2020-07-08 22:59 啊啊啊起个什么名字好 阅读(116) 评论(0) 推荐(0) 编辑

[NOI2019]I 君的探险

摘要: 大概思路如下: 我们随便点亮一个点集S,假设此时T集合中的点是亮的,就代表着T集合中的每个点到S集合至少有一条边,我们通过整体二分可以找出这条边。可以证明这样找到一条边的期望次数是log的,因此总次数为O(mlogn),加些随机化就过了。 #include<cstdio> #define maxn 阅读全文

posted @ 2020-07-08 22:55 啊啊啊起个什么名字好 阅读(181) 评论(0) 推荐(0) 编辑

宝石游戏

摘要: 神仙题,考虑暴力dp,f[i][j]代表以i为根的子树,到i距离为j的点的权值和。由于这个dp跟深度有关,显然可以用长链剖分优化到O(n) 考虑修改,我们可以将操作序列分块,对于每个块跑一遍长链剖分,统计一个点的询问时暴力进行在这个询问之前的所有修改,处理完一个块之后再把块内的所有修改加上。 我们需 阅读全文

posted @ 2020-07-08 22:47 啊啊啊起个什么名字好 阅读(157) 评论(0) 推荐(0) 编辑

[NOI2018]冒泡排序

摘要: 题意可以转化成一个点不能既向左又向又移动。 条件成立当且仅当对于任意一个点,不同时存在左边比它的大点和右边比它小的点,即一个点如果不是前缀最大值就是后缀最小值。 假设不考虑字典序,有f[i][j]代表考虑前i个点,当前最大值为j的方案数,考虑到如果第i个数如果不填j就只能填所有能填的数中最小的,有转 阅读全文

posted @ 2020-07-08 22:32 啊啊啊起个什么名字好 阅读(106) 评论(0) 推荐(0) 编辑

导航