「NowCoder Contest 295」H. Playing games
还是见的题太少了
「NowCoder Contest 295」H. Playing games
题意:选出尽量多的数使得异或和为$ 0$
$ Solution:$
问题等价于选出尽量少的数使得异或和为全集
根据线性基思想可以推得整个集合的异或集合可以被不超过$ bitcount$个数的异或集合表示
因此答案也不超过$ bitcount$
对于原集合我们做若干次$ FWT$
每次把当前异或集合卷上初始集合
复杂度$ O(n \ log^2 \ n)$
足以通过本题
但是还不够
我们发现我们只是想知道$ FWT$数组中某一位上的值
设$ f’$是数组$ f$的$FWT$数组
有$ f_S=\frac{1}{2^n} \sum\limits f'_T(-1)^{|S\cap T|}$
这样我们只需要初始对原数组$ FWT$一次
期间一直用点值表达式进行计算
然后单词$ O(n)$验证即可
时间复杂度:$ O(n \ log \ n)$
$ my \ code$
#include<ctime>
#include<cmath>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<queue>
#define p 998244353
#define rt register int
#define ll long long
using namespace std;
inline ll read(){
ll x = ; char zf = ; char ch = getchar();
while (ch != '-' && !isdigit(ch)) ch = getchar();
if (ch == '-') zf = -, ch = getchar();
while (isdigit(ch)) x = x * + ch - '', ch = getchar(); return x * zf;
}
void write(ll y){if(y<)putchar('-'),y=-y;if(y>)write(y/);putchar(y%+);}
void writeln(const ll y){write(y);putchar('\n');}
int i,j,k,m,n,x,y,z,cnt,invn;
int ksm(int x,int y){
int ans=;
for(rt i=y;i;i>>=,x=1ll*x*x%p)if(i&)ans=1ll*x*ans%p;
return ans;
}
void FWT(int n,int *A,int fla){
for(rt i=;i<n;i<<=)
for(rt j=;j<n;j+=i<<)
for(rt k=;k<i;k++){
const int x=A[j+k],y=A[i+j+k];
A[j+k]=(x+y)%p,A[i+j+k]=(x-y)%p;
}
if(fla==-)for(rt i=;i<n;i++)A[i]=1ll*A[i]*invn%p;
}
int a[],b[];
int main(){
n=read();int s=;
for(rt i=;i<=n;i++){
x=read();s^=x;
a[x]=;
}
int lim=;invn=ksm(lim,p-);
a[]=;FWT(lim,a,-);
for(rt i=;i<lim;i++)b[i]=;
for(rt i=;i<=;i++){
ll ans=;
for(rt j=;j<lim;j++)if(__builtin_popcount(j&s)&)ans+=b[j];else ans-=b[j];
if(ans%p){
cout<<n-i;
break;
}
for(rt j=;j<lim;j++)b[j]=1ll*a[j]*b[j]%p;
}
return ;
}
「NowCoder Contest 295」H. Playing games的更多相关文章
- 2018牛客网暑假ACM多校训练赛(第八场)H Playing games 博弈 FWT
原文链接https://www.cnblogs.com/zhouzhendong/p/NowCoder-2018-Summer-Round8-H.html 题目传送门 - https://www.no ...
- H.Playing games
fwt #include<bits/stdc++.h> using namespace std; const int N=1<<19; const int mod=100000 ...
- 「COCI2016/2017 Contest #2」Bruza
「COCI2016/2017 Contest #2」Bruza 解题思路 : 首先对于任意时刻 \(i\) ,硬币一定移动到了深度为 \(i\) 的节点,所以第 \(i\) 时刻 Danel 一定染掉 ...
- 「NOWCODER」CSP-S模拟赛第3场
「NOWCODER」CSP模拟赛第3场 T1 货物收集 题目 考场思路即正解 T2 货物分组 题目 考场思路 题解 60pts 算法:一维 DP 100pts 算法:一维 DP ?线段树 + 单调栈 ...
- Objective-C 实用关键字详解1「面试、工作」看我就 🐒 了 ^_^.
在写项目 或 阅读别人的代码(一些优秀的源码)中,总能发现一些常见的关键字,随着编程经验的积累大部分还是知道是什么意思 的. 相信很多开发者跟我当初一样,只是基本的常用关键字定义属性会使用,但在关键字 ...
- LOJ6003 - 「网络流 24 题」魔术球
原题链接 Description 假设有根柱子,现要按下述规则在这根柱子中依次放入编号为的球. 每次只能在某根柱子的最上面放球. 在同一根柱子中,任何2个相邻球的编号之和为完全平方数. 试设计一个算法 ...
- LOJ6001 - 「网络流 24 题」太空飞行计划
原题链接 Description 有个实验和个仪器,做实验有报酬买仪器有花费.每个实验都需要一些仪器,求最大净收益(实验报酬仪器花费),并输出一组方案. Solution 实验向所需仪器连边,实验的点 ...
- LOJ6000 - 「网络流 24 题」搭配飞行员
原题链接 题意简述 求二分图的最大匹配. 题解 这里写的是匈牙利算法. 表示节点的当前匹配. 为真表示在这一轮匹配中,无法给节点一个新的匹配.所以如果为真就不用再dfs它了,直接continue就好. ...
- Loj #2331. 「清华集训 2017」某位歌姬的故事
Loj #2331. 「清华集训 2017」某位歌姬的故事 IA 是一名会唱歌的女孩子. IOI2018 就要来了,IA 决定给参赛选手们写一首歌,以表达美好的祝愿.这首歌一共有 \(n\) 个音符, ...
随机推荐
- WebClient请求接口,get和post方法
1,get方式 string URI = "url"; //实例化 WebClient client = new WebClient(); // client.UseDefault ...
- React之Perf
import Perf from 'react-addons-perf' // ES6语法 var Perf = require('react-addons-perf') // ES5语法针对node ...
- JAVA设计模式初探之适配器模式
http://blog.csdn.net/jason0539/article/details/22468457 1. 概述 将一个类的接口转换成客户希望的另外一个接口.Adapter模式使得原本由于接 ...
- JSP页面用<a>标签访问 Action 出错
问题: JSP页面 <a href="/crud1/crud1/add.action" >添加</a> struts.xml 中: <package ...
- Spring Cloud Netflix Eureka: 多网卡环境下Eureka服务注册IP选择问题
https://blog.csdn.net/neosmith/article/details/53126924 通过源码可以看出,该工具类会获取所有网卡,依次进行遍历,取ip地址合理.索引值最小且不在 ...
- (map string)Crazy Search hdu1381
Crazy Search Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) To ...
- 爬虫之requests请求库
介绍 #介绍:使用requests可以模拟浏览器的请求,比起之前用到的urllib,requests模块的api更加便捷(本质就是封装了urllib3) #注意:requests库发送请求将网页内容下 ...
- 2017-12-18python全栈9期第三天第一节之昨天内容回顾与作业讲解用户三次机会再试试
#!/user/bin/python# -*- coding:utf-8 -*-username = "zd"password = "123"i = 3whil ...
- perl trick
一.die if以及文件的操作 #!/usr/bin/perl -w use strict; die "USAGE:\n\tperl $0 <><><>\ ...
- MySQL5.7基于binary log的主从复制
MySQL5.7基于binary log的主从复制 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 基于binary log 的复制是指主库将修改操作写入binary log 中, ...