qbxt Day 4 乱搞+乱搞+乱搞
来源:互联网 发布:abplc编程软件安装 编辑:程序博客网 时间:2024/06/06 15:51
吐槽:
我语文不好!
T1,T3的题面看不懂 读了40分钟还是不懂
至于难度,两个字:呵呵~;
T2:
lowbit(a ^ b) =>
a,b在二进制中,从左向右,a和b第一个不同的数;
可以用Trie树来做,记录每个节点
1的儿子数和0的儿子数;
最后dfs遍历整棵树统计答案;
注意:
不要忘记取模;
取模要彻底(对所有的乘都要取模)!!!
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#define lc(x) ch[x][0]#define rc(x) ch[x][1]using namespace std;const int mod = 998244353,MAXN = 600001;int a[MAXN],ch[MAXN*8][2],cnt,siz[MAXN*8][2];int sum,n,T,tot;int read(){ char c = getchar(); int ss = 0,flag=1; while(c < '0' || c > '9') { if(c == '-') flag = -1; c = getchar(); } while(c >= '0' && c <= '9') { ss = ss * 10 + c - '0'; c = getchar(); } return ss * flag;}struct Trie{ void insert(int x) { int rt = 0; for(int i = 0;i <= 31;i ++ ) { int p = (x >> i) & 1; if(!ch[rt][p]) ch[rt][p] = ++cnt; siz[rt][p]++; rt = ch[rt][p]; } return; } void dfs(int rt,int k) { if(k>31) return; if(siz[rt][0] && siz[rt][1]) sum = (sum % mod + (1 << (k + 1)) % mod * siz[rt][0] % mod * siz[rt][1] % mod) % mod; if(lc(rt)) dfs(lc(rt),k + 1); if(rc(rt)) dfs(rc(rt),k + 1); return; }}trie;void init(){ memset(ch,0,sizeof(ch)); memset(siz,0,sizeof(siz)); sum = 0; cnt = 0; return;}void solve(){ T=read(); while(T--) { init(); n=read(); for(int i = 1;i <= n;i ++) a[i]=read(),trie.insert(a[i]); trie.dfs(0,0); printf("Case #%d: %d\n",++tot,sum%mod); } return;}int main(){ solve(); return 0;}
阅读全文
1 0
- qbxt Day 4 乱搞+乱搞+乱搞
- qbxt Day 1 乱搞+乱搞+DP
- 乱搞
- 乱搞
- qbxt Day 6 搜索+乱搞+差分约束
- BZOJ4104【乱搞】
- 乱搞题
- 树上乱搞
- 乱搞hash
- 乱搞题
- 代码乱搞
- 乱搞 寿司
- BZOJ4121 乱搞
- 乱搞题目
- [****Camp Day 1]C. Control Point(乱搞)
- [雅礼4-7]T3 最小割/乱搞
- HDU1538------水题,乱搞之
- hdu4618Palindrome Sub-Array(乱搞)
- getEncodedSchemeSpecificPart 和getSchemeSpecificPart 区别探究
- 设置 github 作为 git 的远程仓库
- 二次采样
- JACOCO的xx系统实践
- Win10下安装CentOS7双系统
- qbxt Day 4 乱搞+乱搞+乱搞
- 10-9前端学习内容复习(选项卡、三目运算符、与或运算符)
- 排序
- 阿里巴巴Java开发手册要点备注
- 17高软实验三报告
- Java微信语音开发
- upD79F8513A(NEC)或upD78F0511A(NEC)之串口6
- 51nod-1717-好数
- perl语言中的.pm文件和.pl文件有何区别