随笔分类 -  刷题记录

摘要:题意: 我们需要算所有l,r组合区间中的x,y组合使得0的数量等于1的数量。 思路: 1.暴力显然不可得,容易想到计算(x,y)的贡献,最后乘上所在区间即可; 2.这里我们将0视为-1,只要前后前缀和的值相等即可判断01数量相等,即sum[x-1] == sum[y]; (用哈希表即可 3.现在来求 阅读全文
posted @ 2025-03-17 11:59 windfallll 阅读(21) 评论(0) 推荐(0)
摘要:显然不可暴力解出,因此是到数学题。已知$$y=x * k^n$$所以我们可以利用y的区间范围$$[l1, r1]$$得出x的新的区间范围$$[l2/k^n(向上取整), r2/k^n(向下取整)]$$接着与原来的范围取交集 然后不断枚举n即可,注意k^n不可能超过y #include <iostre 阅读全文
posted @ 2024-12-16 23:15 windfallll 阅读(86) 评论(0) 推荐(0)
摘要:思路要点: 对于第i - 1个和第i个数字,利用第i-1个数字乘以的2x,在此基础之上再进行多乘或者少乘使得第i个数字足以大于等于第i-1个数字,由此可以得到最小的步骤数(本质上也就是前缀和) #include <iostream> #define int long long using names 阅读全文
posted @ 2024-12-09 10:06 windfallll 阅读(22) 评论(0) 推荐(0)
摘要:要灵活运用sort函数: 利用bmp函数对其进行自定义规则的排序 ```cpp #include <bits/stdc++.h> using namespace std; int n; string a[30]; bool bmp(const string& a, const string& b) 阅读全文
posted @ 2024-11-25 15:26 windfallll 阅读(19) 评论(0) 推荐(0)
摘要:使用对数lg直接估算所求位数, 每次乘以2^60大大加快速度(不够60再乘以更小的) 9*2^60为10,376,293,541,461,622,784刚好不会超ull范围(18,446,744,073,709,551,616) #include <iostream> #include <cstdi 阅读全文
posted @ 2024-11-17 18:08 windfallll 阅读(21) 评论(0) 推荐(0)