随笔分类 - 刷题记录
摘要:题意: 我们需要算所有l,r组合区间中的x,y组合使得0的数量等于1的数量。 思路: 1.暴力显然不可得,容易想到计算(x,y)的贡献,最后乘上所在区间即可; 2.这里我们将0视为-1,只要前后前缀和的值相等即可判断01数量相等,即sum[x-1] == sum[y]; (用哈希表即可 3.现在来求
阅读全文
摘要:显然不可暴力解出,因此是到数学题。已知$$y=x * k^n$$所以我们可以利用y的区间范围$$[l1, r1]$$得出x的新的区间范围$$[l2/k^n(向上取整), r2/k^n(向下取整)]$$接着与原来的范围取交集 然后不断枚举n即可,注意k^n不可能超过y #include <iostre
阅读全文
摘要:思路要点: 对于第i - 1个和第i个数字,利用第i-1个数字乘以的2x,在此基础之上再进行多乘或者少乘使得第i个数字足以大于等于第i-1个数字,由此可以得到最小的步骤数(本质上也就是前缀和) #include <iostream> #define int long long using names
阅读全文
摘要:要灵活运用sort函数: 利用bmp函数对其进行自定义规则的排序 ```cpp #include <bits/stdc++.h> using namespace std; int n; string a[30]; bool bmp(const string& a, const string& b)
阅读全文
摘要:使用对数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
阅读全文

浙公网安备 33010602011771号