- 博客(5)
- 收藏
- 关注
原创 周赛补题:http://acm.lab.nsu.edu.cn/contest/54/problem/D
x是x的补码(补码是x是原码全部取反,然后+1),eg:5的二进制是101,补码是011,然后&运算就是011。所以lowbit的功能就是范围该数字的最后一位1的位置,然后一直减lowbit就能求出该数字二进制1的个数。6e7大概是2的26次方,直接枚举6e7个数字的26位,是会超时的,这里需要用到lowbit,其实见过很多次了。多组输入:每组给出L,R,求出L,R范围中每一个数字二进制1的个数的总和。范围:1<=T<=2e5 , 0<=L<=R<=6e7。
2024-06-17 19:25:03
147
原创 牛客小白月赛96 c题 补题
一个山峰数组定义为由三个元素组成 [a1,a2,a3][a_1,a_2,a_3][a1,a2,a3],满足 a1<a2a_1<a_2a1<a2 且 a2>a3a_2>a_3a2>a3。如果i满足山峰条件,则i+1一定满足,所以为了找到完整的答案区间,就是要二分到左边第一个满足山峰条件的位置ans,这样ans到n-1都是满足的。其中的细节 while(l>1有待思考。
2024-06-16 18:39:53
622
原创 Codeforces Global Round 26 C1题
dp[i][1]:表示前i个数,使用两中操作保持的最大数。abs(dp[i-1][0]+a[i])是最小值加上当前值的绝对值来维持最大值。dp[i][1]+a[i]是操作1来维持最大值。每个数字两种操作: 1:set c to c+ai 2:set c to |c+ai|dp[i][0]:表示前i个数,保持的最小数,最后转为正数就可以了。// 前i个的维护的最大和最小值。所以dp[i][0]只能只用操作1,来保持最小值。感觉dp懂了又不懂啊,qwq,说下这个题吧。
2024-06-13 10:28:16
224
原创 数学组合问题
我有精兵组阵,兵阵可看做一个 n×m 的矩阵,现在从左上角 (1,1) 派遣出通讯兵 去 (n,m) 传令,通讯兵每一步仅能向右走或者向下走,求会有几种不同的路线,答案对 998244353 取模。总结:思路最重要,就是组合数求方案,不管是再高深的算法,快速幂,逆元,都是用来实现你思路的工具罢了。除数取模,得用逆元啊!细节:在传入快速幂,(g[x-y]*g[y])%Mod 这里不取Mod,精度会WA。
2024-06-13 10:05:34
301
原创 P1037 [NOIP2002 普及组] 产生数 (dfs+高精度)
最开始是直接两层for直接暴力搜索,没有好好了解题意,其实数字的每一位单独考虑,求方案数,然后所有的位置的方案数直接相乘就是答案。但是n的数据范围是10^30,long long也得见祖宗好吧,得使用高精度,学了下高精度,用一个数组存下答案,最后除去所有的前导0,就可以输出结果了。写题解为了加深记忆吧,一个题做重要的是它的思路!然后是优美的实现,看题解,纯属学习代码技巧,好吧。最近感觉搜索一直掌握得不太好,就做做bdfs,今天上午做了这道题,学到了一些东西。i++){//s的每一个位置。
2024-06-06 13:58:22
413
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人