思维
goto_1600
我何来寂寞,哪有寂寞可言。
展开
-
leetcode 6054. 逃离火灾 思维 bfs
link思路:当然可以二分 + bfs 复杂度O(log(n∗m)n∗m)O(log(n*m)n*m)O(log(n∗m)n∗m) 这个比较好想,但如何进一步优化,我们可以逆向考虑,从终点倒着找到离终点最近的火和最近的人的距离,当然如果火比人先到那肯定就是-1,如果找不到火就是1e9,然后就判断最近的火和人的位置关系,因为右下角只有两种转移位置,一种是上方一种是左方,有个比较有意思的性质,到两个方向的人的差要么是0,要么是1,而火的差距可以取到0,1,2,大家可以思考一下为什么?如果最近的火到这两个原创 2022-05-02 13:37:27 · 281 阅读 · 0 评论 -
1927. 求和游戏
link题意:简述一下题意就是alice和bob轮流将数字0-9填入?,alice想左右数字和差不为0,bob想差值为0,问谁可以赢。思路:博弈的题是真头大了,一开始想的alice肯定让差值变大,填9,然后遗漏了很多性质,下面依次考虑一下遗漏的性质,考虑问号的数量,如果加起来是奇数那么一定输,因为alice可以操作最后一次,假设d为两者相同的最后一个取值,alice不选这个即可,然后考虑左右的问号数,由于差值变大,后者最好要重复上一次的操作,最后只变成了一边有问号了,那么肯定是偶数数量的问号,每一原创 2021-11-01 13:51:15 · 278 阅读 · 0 评论 -
UVA12716 GCD等于XOR GCD XOR 数论
link题意:给定n求∑i=1n∑j=in[i⊕j==gcd(i,j)] n<=3e7\sum_{i=1}^n \sum_{j=i}^{n} {[i\oplus j==\gcd(i,j)]} ~~~~~n<=3e7∑i=1n∑j=in[i⊕j==gcd(i,j)] n<=3e7思路:有个结论,就是i⊕j>=i−j>=gcd(i,j)i \oplus原创 2021-10-21 22:45:56 · 231 阅读 · 0 评论 -
Gourmet choice DP+拓扑
LINK题意:给定∑i=1n∑j=1m\sum_{i=1}^{n}\sum_{j=1}^{m}∑i=1n∑j=1ma[i]<b[j],也就是所有ai和bj的关系我们是知道的,最后求最大值最小的构造方案,如果无解输出NO思路:先把相等的点用并查集维护一下,然后我们只维护<的关系,因为>反向建图就行了,然后跑拓扑DP,f[i]>=∑j=premax(f[j]+1)f[i]>=\sum_{j=pre}{max(f[j]+1)}f[i]>=∑j=premax(f[j原创 2021-10-04 21:47:09 · 167 阅读 · 0 评论 -
CF1131F Asya And Kittens并查集,暴力,新颖建图思维
题意:要求给出一个排列,给定n,有n-1对x,y要求每次x和y相邻,并且要保证他俩没有合并,并且将他俩所在的联通块合并。输出一种方案即可,n<=2e5n<=2e5n<=2e5思路:看到了一个比较新颖的做法,类似克鲁斯卡尔重构树,每次合并两个点,新开一个点,然后用并查集去维护,把这两个点的根和点连边,维护并查集数组,然后求前序遍历就可以了。看上去好像挺对,因为每个联通块是独立的,我们每一次合并就是维护了他俩之间的顺序,也不影响他们内部的顺序#include<bits/stdc+原创 2021-10-04 21:41:48 · 192 阅读 · 0 评论 -
CF1305E Kuroni and the Score Distribution(构造)
Link题意:思路:先构造1,n直到溢出了位置,然后考虑加n,如果单纯加n,那么对于前面贡献是n2\frac{n}{2}2n,然后发现n每隔2个数对前面的贡献都会减1,感性的理解,就是,之前n和一个值能匹配x,现在x变大了,n怎么匹配也匹配不了了,那么暴力加n知道刚好能满足m就行了,然后最妙的就是如何处理剩下的数,要造成0贡献,不如隔开构造,也就是说当前的最大值是max,前面有n个数,我们可以构造1e9-n*(maxv+1),1e9-(n-1)*(maxv+1)…代码://#pragma GC原创 2021-10-01 16:48:45 · 250 阅读 · 0 评论 -
CF1305F Kuroni and the Punishment (随机化)
Link题意:思路:Jiangly都没做出来的题,原来这么操蛋,首先我们要发现一个性质,我们最多操作n次可以使得gcd>1,把ai变成偶数,所有ans<=n,然后可以有个更牛逼的性质,被操作两次及以上的数,不超过⌊n/2⌋\lfloor n/2 \rfloor⌊n/2⌋个,也就是说我们有大于⌊n/2⌋\lfloor n/2 \rfloor⌊n/2⌋个数仅仅只操作一次或者不操作,那么也就是会有大于1/2的概率gcd的质因子会出现在里面,然后只要我们多选几个数,这个概率就会惊人的高,假设选了原创 2021-10-01 16:42:13 · 213 阅读 · 0 评论 -
C. Kuroni and Impossible Calculation(鸽巢定理)
题意:求∏abs(a[i]−a[j]) mod mm<=1000n<=2e5\prod abs(a[i]-a[j])~mod~m\\m<=1000 n<=2e5∏abs(a[i]−a[j]) mod mm<=1000n<=2e5思路:完全没想到这是个**题,运用鸽巢定理,考虑n>m的时候一定会有个两个模m相同的数,那么答案一定是0。#include<bits/stdc++.h>using namespa原创 2021-09-30 10:20:43 · 203 阅读 · 0 评论 -
D. The Strongest Build二叉堆,map乱搞
Link题意:给定n个序列,要从每个序列选出一个数,价值为选出来的总和,然后有m个限制,代表m个序列不能用,求最大值 n<=10∑ ci<=2e5 m<=2e5n<=10 \sum~ci<=2e5~m<=2e5n<=10∑ ci<=2e5 m<=2e5思路:一开始想着类似于n路尺取,也就是先把所有最大值放进堆里,然后每次尺取花费最小的,然后会发现会漏掉某些情况。正解是暴力bfs,因为m<=2e5也就是原创 2021-09-21 20:36:15 · 397 阅读 · 0 评论 -
Spicy Restaurant (暴力多源bfs)
Link题意:有n个城市,每个城市有个辣度,给你个图,有q次询问求某个点开始,忍耐度为w,求最近辣度<=w的最短路,边权为1。q<=5e5 n<=1e5 m<=1e5 wi,w<=100q<=5e5 \space n<=1e5 \space\space \space m<=1e5 \space wi,w<=100q<=5e5 n<=1e5 &nb原创 2021-09-14 08:57:27 · 551 阅读 · 1 评论 -
CF785D Anton and School - 2(范德蒙德行列式卷积)
题意:给定含有(和)的字符串,求带有((()))类似的子序列的方案数(左括号等于右括号)思路:很容易想到枚举每个左括号的最后一个位置,cnt代1~i-1中(的数量,cnt2代表后缀的)的数量那么显然答案就是∑i=1n[s[i]==(]∑j=0min(cnt,cnt2−1)C(cnt,cnt−j)∗C(cnt2,j+1)\sum_{i=1}^{n}[s[i]== (]\sum_{j=0}^{min(cnt,cnt2-1)} C(cnt,cnt-j)*C(cnt2,j+1)∑i=1n[s[i]==(]原创 2021-09-13 14:30:31 · 473 阅读 · 1 评论 -
Buds Re-hanging 拆树苗 合并
题意:给定一棵树,树苗定义为至少存在一个子节点并且子节点都是叶子,每次可以选择一颗树苗挂到某个节点下,求最小根节点数。思路:可以观察到挂到某个节点下,一定是挂到他的叶子结点,这样会对答案贡献减1,那么我们是不是可以把问题转化成最多的树苗数了?贡献就是树苗数-1,那我们考虑能不能从下往上尽量拆,遇到能拆的尽量拆,这样可以变成更多个树苗了。link// Problem: E. Buds Re-hanging// Contest: Codeforces - Codeforces Global Roun原创 2021-09-13 11:46:21 · 292 阅读 · 0 评论 -
旅行家问题2(TSP,奇怪的转化模型)
link题意:旅行商问题,每ai->aj的边权为max(aj-ai,ci),求从1开始走,走完所有城市并且回到1的最小花费。思路:可以证明肯定是一个环,假设不是环,也就是有个非起点会被经过至少两次,这里假设两次,ai,aj,ak,其中aj为中转点,那么max(ci,aj-ai)+max(cj,ak-aj)>=max(ci,ak-ai),肯定是不优的,那么我们考虑先把ci提出来,变成常数项,也就是所有ci加起来加上max(0,aj-ai-ci),我们可以发现如果ai比aj大,那么ai到aj原创 2021-09-12 21:56:38 · 477 阅读 · 4 评论 -
lzh的蹦床 差分,贡献,思维
题意:给定一个序列a,每次走都会从i跳到i+a[i],并且可以把路径上的数都减去1,和1取max,问最小走多少趟把整个序列变为1。思路:由于可以都从1开始遍历,从前往后遍历,考虑第i个数被遍历的时候前面的数对ta造成的影响,由于每个数都要从a[i]降到2,是一段区间,显然可以差分维护,所以假设前面的贡献我们已经更新,我们计算可以少走多少趟,那还有个问题,如果前面的数对他造成的影响溢出了会怎么样呢?那么也就是说a[i]变成1以后又要多走溢出次的累计到后面的差分里去。那么这题就做完了。// Probl.原创 2021-09-12 21:43:17 · 233 阅读 · 2 评论 -
小x的数学题
题意:n<=1e18 m=1e4,求(10^n)/m下取证mod m的值思路:(10^n-m*m)/m %m =原柿子,所以我们直接将10的n次膜上m^2,在求就可以了。代码太简单不加了。原创 2021-09-10 11:51:21 · 189 阅读 · 0 评论 -
贪心 田忌赛马
link题意:有不同的马,两个序列,a和b,可以重新安排a,如果ai>bi 赚200,ai=bi 不赚钱 ai<bi 亏损200问最多能赚多少钱。思路:考虑贪心,把a和b都排序,维护四个指针,如果a的最大数比b的最大数大,那么直接赚,如果<=,比较a和b的最小数,如果还是比不过,之间换掉b的最大值,反正都会输。// Problem: Tian Ji -- The Horse Racing// Contest: Virtual Judge - HDU// URL: https:原创 2021-09-10 11:48:36 · 227 阅读 · 2 评论 -
再探water Balance(贪心,单调栈)
题意:给定一个序列,你每次可以选一段区间,把这个区间的每个数浮赋值成平均值,问最小字典序。思路:最后的答案一定是不降的,那么启发我们维护区间的平均值,平均值用区间sum和长度代替,那么就是可以在弹栈的时候可以体现,当后面平均值一直小于前面块的平均值。比较的时候a/b<c/d分别把d和b乘过去,避免精度的影响。代码:// Problem: 小x的序列// Contest: 信息学奥赛比赛系统// URL: https://qduoj.com/contest/114/problem/C//原创 2021-09-10 08:11:28 · 182 阅读 · 0 评论 -
D. Expression Evaluation Error(贪心,数学规律)
link题意:求n个数,这n个数和10进制为s,求他们11进制的最大值。思路:考虑先能不能无花费拆分,这里的无花费指的是两个数在11进制相加还是原数,例如2030,2和3都是可以拆的,拆成1030和1000,然后如果数列中还不满足的话,那么这些数都是满足100…这种形式的。由于花费要小,我们可以贪心的选择最小的数,并且拆掉一个次高位。例如1000拆成900和100,如果拆成1和999,和比前面那种拆法小,不优。代码:// Problem: D. Expression Evaluation Err原创 2021-09-06 15:01:50 · 574 阅读 · 2 评论 -
E. Road to 1600(构造,打表)
题意:构造方格1~n*n,皇后和车的走法如图,皇后和车会走当前能走的位置中没走过的值最小的来走,如果没有花费就会加1并且跳到整个图中没走过中的最小的方格来走,让你构造一个矩阵,使得车的花费比皇后少。思路:n<=2显然是无解的,n=3可以通过打表打出来,然后想想怎么拓展,我们可以通过走蛇形矩阵的方法,先蛇形递增的摆放食物诱导皇后和车同轨迹走,最后让车和皇后走到n,1或者1,n,(取决于n的奇偶性),然后皇后会跳进子问题n=3的陷阱,那么皇后就输了。代码:// Problem: E. Road.原创 2021-09-02 17:38:01 · 228 阅读 · 2 评论 -
Kuriyama Mirai and Exclusive Or
link题意:给定一个序列,两种操作,一种区间异或上一个常量x,第二种是区间异或上常量x+一个从0开始的等差数列。思路:第一种操作很好维护,通过差分数组来维护,就类似于加法的差分数组,第二种呢,严格意义上来说就是对于一个数y ^ (x+i),貌似不是很好维护,那么我们考虑异或的性质,如果i当前小于x的lowbit,那么加号和异或是等价的,可以直接变成y ^ x ^ i ,如果这样的话那么就好操作了,我们考虑一段一段的区间,把当前的l,r分为不超过log的区间,每一段区间都是x的lowbit,那么就和原创 2021-09-02 12:31:26 · 247 阅读 · 0 评论 -
Sweet Game
题意:有点绕,简单来说就是每次选一个位置a[i],i+1~n在之前要选完或者一点都没选,价值会随时间改变d[i],问最大价值是啥。思路:挺妙的。考虑倒着枚举n,那么考虑假设枚举到了x,我们对于当前的序列,我们只能插入到队首或者队尾,那么我们只需要考虑队首的贡献和队尾的贡献哪个最大就可以了。std:// Problem: Sweet Game// Contest: NowCoder// URL: https://ac.nowcoder.com/acm/contest/11235/D// Me.原创 2021-08-28 23:01:25 · 325 阅读 · 0 评论 -
银川G题链表,逆向思维
不一定正确,先贴一下//#pragma GCC target("avx")//#pragma GCC optimize(2)//#pragma GCC optimize(3)//#pragma GCC optimize("Ofast")// created by myq#include<iostream>#include<cstdlib>#include<string>#include<cstring>#include<cstdio&原创 2021-08-20 21:19:02 · 244 阅读 · 2 评论 -
xay loves trees(主席树dfs序 标记永久化优化)
链接题意:思路:早上更新那题的强化版。用线段树尺取,或者主席树,主席树维护从根节点到链上的最大深度。每次插入新节点,询问不符合节点的id,由于区间不相交,这样的值最多一个。 每次更新一下答案就可以了。// Problem: xay loves trees// Contest: NowCoder// URL: https://ac.nowcoder.com/acm/contest/11258/F// Memory Limit: 1048576 MB// Time Limit: 4000 ms原创 2021-08-08 21:42:27 · 449 阅读 · 0 评论 -
Tree Shuffling(树形dp)
link题意:给你一棵以1为根的树,和每个点的a,b,c ,a代表操作的花费,b代表当前他的值,c代表目标值,每次你可以选一个点花费k*size两两交换他的子节点,问让所有值变成目标值的花费。思路:一开始想到可以从根到u的交换值取min,对于原始和目标值相同的点我们可以不用管,因为早晚还要进行一次交换,证明:假设有1/1 0/1 1/0,我们操作{1/1,0/1},{0/1,1/0},不如直接操作{0/1,1/0}.后来就想不到了,题解说可以设dp[u][2]代表遍历到u,0/1还没有处理的个数原创 2021-08-08 12:39:44 · 260 阅读 · 0 评论 -
Trees of Tranquillity
链接题意:思路:这题考察了dfs序的问题,第二棵树要满足在不同子树,也就是dfs序他们不能相交。第一棵树很容易想到只能是一条链上的某些节点,那么我们先按照dfs序建出第二棵树,然后贪心的用set来维护第一棵树,set是来维护该节点在第二棵树上的L,R区间,我们每次贪心的来维护,如果上面的点覆盖了当前的区间,那肯定是区间小的更优秀。代码://#pragma GCC target("avx")//#pragma GCC optimize(2)//#pragma GCC optimize(3)/原创 2021-08-08 11:48:51 · 267 阅读 · 0 评论 -
Cow and Fields(最短路思维)
题意:思路:首先说一些性质,比如我们操作a,b点,如果a,b不在1~n的最短路径上,那么对答案是没有贡献的。如果在1到n的最短路径上呢?也就是我们要求Max(dist[a]+dist2[b]+1),dist1代表从1开始bfs,dist2代表从n开始bfs最短路径,O(n^2)枚举肯定不好,我们可以按照dist[a]-dist2[a]排序一下,然后这个答案就可以O(N)枚举得到了,我们在枚举的时候记录一下最大的dist[x],当前的dist2[b]已经固定了,更新一下答案就好了,最后注意要和原本图的最原创 2021-08-07 21:29:21 · 284 阅读 · 0 评论 -
Yazid的新生舞会(线段树)
题意:问所有满足出现次数严格超过一半的数的区间数。原创 2021-08-04 21:11:48 · 261 阅读 · 2 评论 -
D. Diane
题意:让你构造一个长度为n的字符串,使得每一个子串都出现奇数次。思路:死活构造不出来,只知道每一个字母只能出现奇数次,有一个奇妙的性质没有挖掘到,就是相邻长度l和l+1的连续的字母两个一块构造的话就能出现奇数次,那么讨论讨论就行了,把两个字符串分开用别的字母就可以。注意1的特判。// Problem: C. Mikasa// Contest: Codeforces - Codeforces Round #735 (Div. 2)// URL: https://codeforces.com/con原创 2021-07-30 11:46:39 · 241 阅读 · 0 评论 -
Tree Xor(线段树)
link题意:给定一颗树和每条边两个相邻节点的异或值,和每个节点的取值范围 Li~Ri,求有多少种取点的合法方案。思路:先确定根节点的值,那么所有值都确定了,那么也就是求所有区间异或上各自对应的点值,很可惜,区间异或不具有连续性,也就是说会分裂成好几个区间,那么有个做法就是按照线段树的建树方法来分裂区间,这些区间满足前缀不变,后缀为00000~111111,这样的区间也是具有连续性的,我们可以将每一个区间分裂成最多logn个区间,然后区间排序,求被覆盖n次的点的数量,类似于扫描线的做法。复杂度O(n原创 2021-07-26 23:05:20 · 428 阅读 · 0 评论 -
AcWing 构造数组(单调栈)
构造数组题意:思路:一开始想的枚举每一个山峰,然后往两边取min,然后TLE不知道怎么优化,正解是考虑单调栈,每一个l,r数组维护前缀、后缀的最大匹配值,例如l数组,对于a[i]而言,左边和它相邻所有比他大的数的贡献都是a[i]直到找到第一个比他小的数,那么就是a[i]*长度+l[stk[top]];// Problem: 构造数组// Contest: AcWing// URL: https://www.acwing.com/problem/content/description/3783/原创 2021-07-24 22:20:42 · 260 阅读 · 0 评论 -
E. Gold Transfer 树上倍增,动态加点
链接题意:思路:思考简单的贪心,肯定是距离根节点越近的点越先考虑,我们可以logn暴跳到离根最近的点的位置,然后修改,由于操作影响后面,也就是我们算法的贫瘠是nlogn,每次暴力倍增从v开始更新一下a数组就行了。fflush能做到缓冲std的效果。#include<iostream>#include<cstring>#include<cstdio>using namespace std;const int N=400010;int f[N][20]原创 2021-07-03 01:02:55 · 197 阅读 · 0 评论 -
D. Deleting Divisors(博弈,思维)
链接题意 :简要来说就是双方玩游戏,假设当前数为n,那么每次可以减去除了1和本身的因数,最后不能操作的话就输了。思路:也是个类似于sg函数打表找规律题,由于必胜态不可能是偶数,那么我们肯定尽量要让对方变成奇数,怎么操作呢?如果当前数是奇数,那么我方肯定输,当前数是偶数的话,如果含有除了2的质因子也是必赢,因为每次我们可以减奇数,让对方变成奇数,如果全含2的话,可以发现,如果当前数是2^i次,我们只能操作减去2的i-1次,因为减去其他,让对方变为偶数肯定是不行的,只要判断2的次幂是奇偶就行啦。代码:原创 2021-06-21 19:56:10 · 237 阅读 · 0 评论 -
Erase and Extend (Hard Version) 贪心
链接查看题意:你可以进行以下的无限次操作,操作1:s=s+s,操作2 删去s的最后一个字符,最后问长度为k的字符的最小字典序。思路:考虑贪心做法,我们贪心的维护前缀,如果当前遍历的值比循环节对应的位置大直接break ,如果小于,那么显然肯定是要选择的,然后把指针弄成1,如果刚好等于,我们就把指针+1。例如 “dbdadb”从第二个开始指针为0,到第三个指针进1,到第四个a比b小指针又指向第0个位置,到最后指针到了2这个位置。最后输出答案的串一定要让k变为0,也就是从最后pop掉k个数,因为没原创 2021-06-21 19:50:44 · 180 阅读 · 0 评论 -
第十二届蓝桥杯国赛括号线段树
题面:题意:操作1 把区间括号翻转操作2 查询最长合法括号序列序列从l开始思路:类似于区间合并的问题,对于每个区间我们记录左右最小最大前缀值,我们把(看作1,)看作-1,合法的括号序列满足于当前的sum=0且对于任意前缀都是>=0,那么满足二分性质,我们可以二分套线段树查询到从l开始满足前缀大于等于0的最大位置,然后如果下个位置的sum<0那么就是当前位置,但是会有可能是查询到n,然后后面没数了且sum>0,那么我们就要二分出第一个后缀最大值等于sum的位置。调了一下午调的心原创 2021-06-12 16:59:40 · 564 阅读 · 1 评论 -
E. Omkar and Forest 思维,结论
题意:思路:我们把#划分成0和1~INF,那么可以发现所有方案都是合法的,可以发现从0开始的点的值都是单调递增的。可以发现是个多源汇的最短路问题,所有不是0的点都是到最近的0点的曼哈顿距离,除了整个图都不是0的情况。特判一下,所以方案数是2^cnt-(cnt==size)。solution:#include<bits/stdc++.h>#define IL inline#define x first#define y secondtypedef long long ll;u.原创 2021-06-11 23:31:48 · 310 阅读 · 0 评论 -
cf c(map套pair)
题意:给定个string,让你从1~i每个位置,求出来d和k比值相同的段。思路:用个map来记录约分后的数量,太妙了。没想到。刚好就是a,b约分完出现的次数。// Problem: C. Diluc and Kaeya// Contest: Codeforces - Codeforces Round #724 (Div. 2)// URL: https://codeforces.com/contest/1536/problem/C// Memory Limit: 256 MB// Time.原创 2021-06-07 23:54:25 · 245 阅读 · 0 评论 -
牛客IOI周赛26-普及组 最短路
link:https://ac.nowcoder.com/acm/problem/219918思路:建立虚拟原点 31个点,如果a[i]>>k&1 就和k连一条边权为a[i]的无向边,比赛时候没想到这种建图=-=。// Problem: 最短路// Contest: NowCoder// URL: https://ac.nowcoder.com/acm/contest/11233/D// Memory Limit: 524288 MB// Time Limit: 2000原创 2021-06-04 22:47:40 · 359 阅读 · 0 评论 -
E - New Game Plus! 堆贪心 思维
提交 1000祭题意:思路:一开始想的就是按照值的大到小排序,然后不知道负数的时候怎么处理了,看了题解原来可以用堆,由于可以清k次零,也是就是把序列分割成k+1组,我们可以发现在每一组里面值是非递增的,否则可以交换两个元素,然后可以用堆维护每个组当前的值,每次取最大,然后把最大的值赋给当前最大的值。复杂度O(NlogN)代码:// Problem: CF1415E New Game Plus!// Contest: Luogu// URL: https://www.luogu.com.cn.原创 2021-06-01 19:15:03 · 192 阅读 · 0 评论 -
河南省省赛 甜甜圈(思维+隔板+线段树)
题意:给定两个栈,每次操作可以花费一个代价将栈顶的元素放到另一个栈的栈顶,如果当前序列的最大值是栈顶,可以0花费将这个最大值弹出。问最少操作多少次。思路:由于这样操作的序列是确定的,那么就没有贪心的成分所在了,就是想着怎么模拟了,一开始想用平衡树,由于某个数的上面的一堆数放到隔壁堆中,实现翻转,对于隔壁堆下面的所有元素,都加上size,但是没必要,看了标程,其实可以实现这样的操作。将所有数按照值大小,从大到小排序,维护每一个id,然后每次都维护当前板所在的位置,最后实现一个线段树单点修改区间查询.原创 2021-05-31 23:37:24 · 243 阅读 · 0 评论 -
D. Present按位拆分算贡献
链接求这个公式的答案 n<=400000 ,a[i]<=4e7思路:一开始就想到了按位算贡献,但是没有发掘一个性质,某一位k只受<=它的位数所影响,所以我们可以考虑按位统计,出现第k位为1有两种情况,一种情况是两数之和>=(1<<k) && <(1<<(k+1)) 还有一种是>=(1<<k)+(1<<(k+1)) ,在统计每一位的时候将a[i]%(1<<(k+1))放入数组中,将新数组排序原创 2021-05-31 10:38:21 · 242 阅读 · 0 评论