P8962 「WHOI-4」yadiw. Slua, gassp, lhtubs.题目背景If you know at least 3 of these things and you are not red — you are doing it wrong. Stop learning useless algorithms, go and solve some problems, learn how to use binary search.题目描述小 F 有一个奇妙的数组aaaaaa中没有重复的元素长度为nnn他使用std::sort将他排序了认为它是有序的所以他正在使用这样的方法进行二分查找。显然能否查到只和数列的离散化结果有关所以你可以直接把aaa看作1∼n1\sim n1∼n的一个排列。intsearch(intkey){intl1,rn;while(lr){intmid(lr)/2;if(a[mid]key)lmid1;elseif(a[mid]key)returnmid;elsermid-1;}return-1;}不幸的是小 W 为了让他戒掉万能头在bits/stdc.h中写了#define sort random_shuffle这意味着aaa实际是一个随机的排列。现在对于所有在111到NNN范围内的nnn以及所有在111到nnn范围内的kkk在aaa数列的所有排列中有几个可以正确地找到第kkk小的元素keykeykey即返回值非−1-1−1由于答案可能过大请输出它对给定模数ppp取模的结果。输入格式一行两个正整数p,Np,Np,N。输出格式NNN行第nnn行nnn个正整数代表在nnn个元素中找kkk能找到的方案数。输入输出样例 #1输入 #1998244353 5输出 #11 1 2 4 4 4 12 12 14 18 48 54 60 66 72说明/提示数据范围本题采用 Subtask 评测。Subtask 1101010ptsN10N10N10$ p\ge998244352$Subtask 2252525ptsN100N100N100p≥1009p\ge1009p≥1009且为素数Subtask 3252525ptsN400N400N400p≥1009p\ge1009p≥1009且为素数Subtask 4404040ptsN400N400N400。对于所有数据10≤N≤40010\le N\le 40010≤N≤400$ 2\le p\le998244353$。C实现#includebits/stdc.husingnamespacestd;typedeflonglongll;constintMAXN4e210;intn,mod;ll ans[MAXN],fac[MAXN],c[MAXN][MAXN];intmain(){scanf(%d%d,mod,n),*fac1;for(inti1;in;i)fac[i]fac[i-1]*i%mod;for(inti0;in;i)c[i][0]1;for(inti1;in;i){for(intj1;jn;j)c[i][j](c[i-1][j]c[i-1][j-1])%mod;}for(intm1;mn;m){for(inti1;im;i)ans[i]0;for(intk1,l,r,mid,x,y,t;km;k){l1,rm,xy0;while(lr){midlr1;if(midk)break;kmid?(rmid-1,y):(lmid1,x);}tfac[m-x-y-1]%mod*fac[x]%mod*fac[y]%mod;for(intix1;im-y;i){ans[i](ans[i]c[i-1][x]*c[m-i][y]%mod*t%mod)%mod;}}for(inti1;im;i)printf(%lld ,ans[i]);puts();}}后续接下来我会不断用C来实现信奥比赛中的算法题、GESP考级编程题实现、白名单赛事考题实现记录日常的编程生活、比赛心得感兴趣的请关注我后续将继续分享相关内容