
思维题
文章平均质量分 89
新笑雨
这个作者很懒,什么都没留下…
展开
-
2023 CCPC Shenzhen M
首先有一个感性的想法是不处理大整数,而是将这些大整数都对质数取模变成普通整数。然而我们只能轻松地计算形如。可以发现其实是从低到高前k位不变,更高位向下平移了k位再相加。注意仅仅这样处理的话会漏掉。即加和出来的结果是确定的。全部对M取模,这样取模后再相加,符合要求的结果就只有。再进一步考虑,我们可以一开始将。的情况,只用在后续处理中加上。不确定的话就不好处理了。现在的问题变成了怎么让。原创 2024-08-03 10:16:43 · 1045 阅读 · 0 评论 -
一道区间dp题
题意 你有一个有序的数组,现在要插入一个新的数,相信你一定学过二分查找,也知道最坏情况下需要比较几次才能找到新的数该插入什么位置,但是现在,我们稍微改变下套路,把新的数与数组中的每一个数比较都会有一个特定的代价,代价在1-9之间,求最坏情况下,假设你采用最优的比较策略,你会花费多少费用插入新的数。 数据范围 有t(t≤10)t(t\le 10)t(t≤10)组数据,数组大小n≤100000n\le 100000n≤100000 解法 首先考虑一个常规的区间dp:f[l][r]表示查询[l,r]中任意一个数的原创 2020-05-11 20:37:18 · 169 阅读 · 0 评论 -
noi.ac 767
orz zhf 题目链接 解法 首先把问题方向转化一下,变成考虑每个点的贡献,这样就是考虑每个点左边m个比它大的数的位置,右边m个比它大的数的位置,有了这些数据就可以稍微推一下式子算出这个点一共在多少个区间中产生了贡献。 然后首先有一个O(nmlogn)O(nmlogn)O(nmlogn)的做法,就是对于每个数,向左向右二分查找第一个比它大的数,用st表+二分,但是不能的满分,考虑更快的做法。 我...原创 2020-02-26 19:35:03 · 162 阅读 · 0 评论 -
codeforces 1290C
题目链接 题意 有一个长度为n的01字符串和m个子集,保证任意3个子集∩为空,问将长度从1到n的字符串前缀全部变成1的最小步数,其中每一步可以做的事情是选择一个子集,将这些位置上的字符全部取反。保证可以将整个字符串变成全1状态 数据范围 n,m≤3e5n,m \le 3e5n,m≤3e5 解法 首先观察到,任意3个子集的交为空说明任意一个位置只会最多在两个子集中出现,所以对于一个位置,如果它出现在...原创 2020-02-03 18:50:33 · 238 阅读 · 0 评论 -
codeforces 848C
题目链接 题意 给定长度为n的数组, 定义数字X在[l,r]内的值为数字X在[l,r]内最后一次出现位置的下标减去第一次出现位置的下标 给定m次询问, 每次询问有三个整数a,b,c,询问规则如下: 当a=1时, 将数组内第b个元素更改为c 当a=2时, 求区间[b,c]所有数字的值的和 输入: 第一行两个整数n,m 第二行n个整数, 表示数组 第3到3+m行, 每行三个整数, 表示每次询问 输出:...原创 2020-01-15 17:50:49 · 331 阅读 · 0 评论 -
codeforces 17E
题目链接 题意 给定一个长度为n的小写字母串。问你有多少对相交的回文子 串(包含也算相交) 。 输入格式 第一行是字符串长度n(1<=n<=2*10^6),第二行字符串 输出格式 相交的回文子串个数%51123987 Translated by liyifeng 解法 因为首先是回文串,所以考虑manacher,求出每个节点的f[i],然后考虑直接求相交的回文串对数量不是很好求,所以用...原创 2020-01-15 09:23:35 · 247 阅读 · 0 评论 -
一道数位dp练习题
题意 给定一个n*m的网格图,图上有一个起点和一个终点(起点和终点处没有障碍),以及若干障碍,对于每个数字0-9都将会给出一对数(ai,bi)。对于一个数t,我们从高位到低位扫一遍,对于t的每一个数字i将当前位置行加上ai列加上bi,若从起点开始在模拟过程中能不走出边界且不走到障碍最终到达终点,就说数t对于当前网格图合法。问区间[L,R]内合法的数t个数有多少,答案对1,000,000,007取模...原创 2020-01-09 13:31:40 · 271 阅读 · 0 评论 -
一道网络流练习题
题意 现有一款游戏,你作为玩家,拥有k种物品。开始时,每种物品有1000件。 现在,在你面前有n个任务,每种任务都可能消耗一些物品,也可能得到一些物品。做第i个任务的物品得失情况用一个包含k个字母的字符串Si表示,其中每个字母都是+,-,/中的一种,第j个字母表示该任务对物品j的数量的影响。+表示做这个任务能得到一个物品j,-表示做这个任务会消耗一个物品j,/表示做这个任务对物品j的数量不产生影响...原创 2020-01-08 19:33:02 · 314 阅读 · 0 评论 -
codeforces 1263F
题目链接 题意 给两棵有根树,叶子数相同,每个叶子都连接着某个电机,同一棵树的叶子连着不同的电机,电机数等于叶子数,问最多可以删掉几条边,使得每台电机至少连接着一个树根 数据范围 叶子数num≤1000,树的节点个数n,m≤2000叶子数num\le 1000,树的节点个数n,m\le 2000叶子数num≤1000,树的节点个数n,m≤2000 解法 dp 设val[0/1][l][r]表示第0...原创 2020-01-07 19:44:43 · 245 阅读 · 0 评论 -
luogu P2737
题意,给一些数,问最大的不能被这些数表示出来的数(自由相加)是多少。(大凯的疑惑) 解法 一个想法是dp,然后对答案有影响的上界接近于最大数的平方。 这个和noip 2018 d1t2也差不多 另一个做法是先选择这些数中的一个数,我们为了方便就选最小的一个mn,然后可以发现如果可以表示出x,那么x+mn,x+2×mn,x+3×mnx+mn,x+2\times mn,x+3\times mnx+mn...原创 2019-12-26 22:18:58 · 161 阅读 · 0 评论