HDU 6085 Rikka with Candies
来源:互联网 发布:达内java视频百度网盘 编辑:程序博客网 时间:2024/06/07 10:55
题意:
给出一个A数组中有n个数, B数组中有m个数, 再给出q个询问每个询问为k, 求有多少对pair (i, j)使得
代码:
# include <bits/stdc++.h>using namespace std;typedef long long LL;const int INF = 0x3f3f3f3f;const int Q = 1e9+7;const int N = 10;bitset<N> a, b;int ans[N], vis[N];void solve (){ int n, m, q, x, M = -INF; a.reset (), b.reset (); memset (vis, 0, sizeof(vis)); scanf ("%d%d%d", &n, &m, &q); while (n--) { scanf ("%d", &x); a.set (x); } while (m--) { scanf ("%d", &x); vis[x] = 1; M = max(x, M); } for (int i=M; i>=0; --i) {//因为k必须小于等于Bi则从最大值开始遍历 ans [i] = (b & (a >> i)).count () & 1;//a>>i表示a中每一个元素都减去i, 并且丢弃小于零的情况 //当b在i位和a中在i位的位同为1时则表示Ai-k对Bi取余为0 if (vis[i]) { for (int j=0; j<N; j+=i) { b.flip (j);//将b中每隔i位进行取反,记录i的倍数,如果期间有重复,则表示反转了偶数次,对2取余位零, 因此可以忽略不计 } } } while (q--) { scanf ("%d", &x); printf ("%d\n", ans [x]); }}int main (){ int T; scanf ("%d", &T); while (T--) { solve (); } return 0;}
阅读全文
0 1
- HDU 6085 Rikka with Candies
- HDU 6085 Rikka with Candies
- HDU 6085 Rikka with Candies
- hdu 6085 Rikka with Candies
- Rikka with Candies HDU
- Hdu 6085 Rikka with Candies【思维+Bitset】
- hdu 6085 Rikka with Candies bitset
- HDU 6085 Rikka with Candies 模拟bitset
- HDU 6085 Rikka with Candies (bitset)
- HDU 6085 Rikka with Candies(bitset)
- HDU 6085 Rikka with Candies (bitset)
- HDU 6085 Rikka with Candies (暴力压位)
- HDU 6085 Rikka with Candies 压位 bitset区间提取
- hdu 6085 Rikka with Candies(bitset 计数原理)
- hdu 6085 Rikka with Candies(bitset容器)
- 【多校训练】hdu 6085 Rikka with Candies bitset
- HDU 6085 Rikka with Candies(bitset操作+思路转化)
- hdu 6085 Rikka with Candies bitset优化计数
- 【51nod 1085 背包问题】
- Java7的一些新特性
- Xbrowser远程登录Ubuntu闪退问题的解决方案
- Mac下解决sublime text 2中文乱码
- 401. Binary Watch
- HDU 6085 Rikka with Candies
- Unity如何利用Mapbox在游戏中实现真实地图?
- Til the Cows Come Home
- 安卓实现类似连续点击5次进入开发者模式的功能
- openssl制作证书全过程(windows) + 部分修改
- webpack 学习记录
- springboot 定时任务
- 我想我们都没太在意
- 每日一题(36)—— 什么是预编译 , 何时需要预编译?