2024 ICPC Online 第二场(K)

news/2024/10/2 18:26:13
#pragma GCC optimize("O3,unroll-loops")
//#pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt")
//如果在不支持 avx2 的平台上将 avx2 换成 avx 或 SSE 之一
#include<bits/stdc++.h>
using namespace std;
#define x first
#define y second
typedef pair<int,int> PII;
typedef long long ll;
typedef unsigned long long ull;
typedef unsigned int uint;
typedef vector<string> VS;
typedef vector<int> VI;
typedef vector<vector<int>> VVI;
vector<int> vx;
inline void divide() {sort(vx.begin(),vx.end());vx.erase(unique(vx.begin(),vx.end()),vx.end());}
inline int mp(int x) {return upper_bound(vx.begin(),vx.end(),x)-vx.begin();}
inline int log_2(int x) {return 31-__builtin_clz(x);}
inline int popcount(int x) {return __builtin_popcount(x);}
inline int lowbit(int x) {return x&-x;}
const int N = 210,p = 998244353,mod = p;
ll k;
ll fac[N<<1],C[N<<1][N<<1];
//参数表示的是对于第t为考虑集合a和集合b
vector<ll> fuck(int t,vector<ll> A,vector<ll> B)
{vector res(A.size()+B.size()+1,0ll);//如果t == -1的话说明所有可能的都考虑完了剩下的随意组合即可if(A.empty()||B.empty()){res[0] = 1;return res;}if(t == -1){int Asz = A.size(), Bsz = B.size();for(int i=0;i<=Asz;++i){res[i] = C[Asz][i]*C[Bsz][i]%p*fac[i]%p;}return res;}//如果a或b有一个为空那只有结果为0vector<ll> a0,a1,b0,b1;for(auto p:A) if(p>>t&1) a1.push_back(p);else a0.push_back(p);for(auto p:B) if(p>>t&1) b1.push_back(p);else b0.push_back(p);int a0sz = a0.size(), a1sz = a1.size(), b0sz = b0.size(), b1sz = b1.size();if(k>>t&1){auto tmp1 = fuck(t-1,a1,b0);auto tmp2 = fuck(t-1,a0,b1);int tmp1sz = tmp1.size(), tmp2sz = tmp2.size();for (int i=0;i<tmp1sz;++i) {for (int j=0;j<tmp2sz;++j) {res[i+j] += tmp1[i]*tmp2[j]%p, res[i+j]%=p;}}}//如果说当前位为0那么a,b当前位不同就可以直接匹配,无需往下递归//而当前位相同的需要递归求解else {//tmp1为当前位(a,b)都选0后的方案数多项式//tmp2为当前位(a,b)都选1后的方案数多项式//i表示挑选了几个a1去完成(a1,b1)配//j表示挑选了几个a0去完成(a0,b0)配//x表示挑选了几个a1去完成(a1,b0)配//y表示挑选了几个a0去完成(a0,b1)配auto tmp1 = fuck(t-1,a1,b1); // iauto tmp2 = fuck(t-1,a0,b0); // jint tmp1sz = tmp1.size(), tmp2sz = tmp2.size();for (int i=0;i<tmp1sz;++i) {for (int j=0;j<tmp2sz;++j) {for (int x = 0; x + i <= a1sz && x + j <= b0sz; ++x) {for (int y = 0; y + i <= b1sz && y + j <= a0sz; ++y) {res[i + j + x + y] += tmp1[i] * tmp2[j] % mod* C[a1sz - i][x] % mod * C[b0sz - j][x] % mod * C[b1sz - i][y] % mod * C[a0sz - j][y] % mod * fac[x] % mod * fac[y] % mod;res[i + j + x + y] %= mod;//cout<<ans[i+j+x+y]<<'\n';}}}}}return res;
}void solve()
{ll n;cin>>n>>k;vector<ll> a(n),b(n);for(int i=0;i<n;++i) cin>>a[i];for(int i=0;i<n;++i) cin>>b[i];auto ans = fuck(60,a,b);for(int i=1;i<=n;++i) cout<<ans[i]<<'\n';
}
signed main()
{ios::sync_with_stdio(false);cin.tie(0);int T = 1;//cin>>T;for (int i=0;i<N*2;i+=1) {if (i == 0) fac[i] = 1; else fac[i] = fac[i-1] * i % p;C[i][0] = 1;for (int j=1;j<=i;j+=1) C[i][j] = (C[i-1][j] + C[i-1][j-1])%p;}//cout<<fac[200]<<' '<<C[5][2]<<'\n';while(T--){solve();}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/67159.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

DAY2-补题

我补题AK了,但你出言不逊是 非常好的一套题,让我的大脑旋转啊。 不太想开一个文章单独屑,所以扔到随笔里面。 敲字速度有待加强。 说在前面 题目难度单调递减,分数单调递减。果然屑死了。 T1再次读题失误,正确的来说是代码敲得非常抽象。T2DP但没骗到分非常不好,T3场上想…

独立站如何批量查收录,教你独立站如何批量查收录的方法操作步骤

独立站批量查收录是SEO优化工作中的重要环节,有助于网站管理员或SEO人员及时了解网站在搜索引擎中的表现,从而制定针对性的优化策略。以下是一些常用的独立站批量查收录的方法及其操作步骤: 一、使用搜索引擎的Site指令结合自动化脚本 编写脚本或配置爬虫: 利用Python、She…

04-论说文:审题与立意(1)

命题作文 比较开放 近义词 相关性 竞争 合作 竞争合作 ==》 竞争合作的关系 概率==》风险 风险 利益 审题 较难

南沙C++信奥赛陈老师解一本通题 1966:【14NOIP普及组】比例简化

​【题目描述】在社交媒体上,经常会看到针对某一个观点同意与否的民意调查以及结果。例如,对某一观点表示支持的有 1498 人,反对的有 902 人,那么赞同与反对的比例可以简单的记为1498:902。 不过,如果把调查结果就以这种方式呈现出来,大多数人肯定不会满意。因为这个比例…

pycharm 拆分窗口 pycharm怎么分屏,取消分屏

Split Vertically 或者 Split Horizontally 可以把当前编辑窗口垂直或者水平拆分成两个。 Split Vertically或者Split Horizontally可以把当前编辑窗口垂直或者水平拆分成两个。 取消拆分窗口:

三维激光扫描技术在文保修缮项目中的应用

三维激光扫描技术作为一种新兴的高精度空间数据获取手段,其在文物保护和修缮项目中的应用日益广泛。这项技术通过快速获取物体表面的三维密集点云数据,为文物的数字化存档、保护、修复及再利用提供了强有力的技术支持。 数据采集:高精度与非接触性三维激光扫描技术通过激光测…

找到一个数最接近的比它大的2的n次幂的代码分析

pub fn f1(mut n: u32) -> u32 {n = n | (n >> 1);n = n | (n >> 2);n = n | (n >> 4);n = n | (n >> 8);n = n | (n >> 16);n }如果n的输入类型为 u32(32位无符号整型), 上述代码的结果为大于等于n的2^k - 1的值(因为可能会出现溢出,所…

《如 何 速 通 一 套 题》8.0

邮寄 开场秒 B。 A 稍微退了一会儿,推出一个解法(后面发现假掉了)...... 然后 CD,D 感觉是一个 SA。结果 SA 写错了,算法假掉了...... A 智乃的差分 分类讨论。 \(x > 0\) 最大值 \(= x\),最小值 \(= 0\) 此时可以直接找一个不是 \(x\),不是 \(0\) 的数来(严格次小值…