bitset刷题记录
大佬的bitset用法小结 https://www.cnblogs.com/zwfymqz/p/8696631.html
BZOJ3687简单题
题意:求子集的算术和的异或和,子集大小为n(n<=1000),所有数和sum<=2000000
- 求子集和可以用01背包的那个动规,f[i]表示有多少个子集和为i 。时间复杂度O(n*sum)
- 但是只求异或和就只表示奇偶性,所以bit[i]表示和为i的子集个数的奇偶性。
- 时间复杂度降为O(n*sum/机器字长)
- 代码:
#include <bits/stdc++.h>
#define nmax 10010
#define f(a,b) for(int i=a; i<=b; i++) using namespace std;
typedef long long ll; int main(){
bitset<> bit;
bit[] = ;
int n, x;
int ans = ;
cin >> n;
f(, n) {
scanf("%d", &x);
bit ^= (bit << x);
}
f(,) if(bit[i]) ans^=i;
cout << ans << endl;
return ;
}(╹ڡ╹ )
HDU5036Explosion
- 求期望:先求出有多少个点能够到达点i :cnt[i],期望就等于$\sum_{i=1}^n cnt[i]$
- 这样求是因为:考虑使用在第i个门上的炸弹数量期望,要把第i个门弄开,可以有cnt[i]中爆炸选择,所以直接炸i的概率就是 1/cnt[i] ,根据期望的线性性质,所有门求和即得总的炸弹数量
- 但是这样还是不是很清楚为啥就是期望,因为可能每个门的出现不是均匀的,,,有木有路过的大佬能说一下呀~
- 所以用bitset优化floyd求传统闭包
- 代码:
#include <bits/stdc++.h>
#define nmax 1010
#define f(c, a, b) for (int c=a; c<=b; c++) using namespace std;
int n;
bitset <nmax> d[nmax]; void floyd(){ f(k, , n) f(i, , n) if(d[i][k]) d[i]|=d[k]; } void init(){ f(i,,n) { d[i].reset(); d[i][i]=; } } int main(){
int t;
cin >> t;
f(cas, , t) {
scanf("%d", &n);
init();
int ys, v;
double ans=;
f(i, , n) {
scanf("%d", &ys);
f(j, , ys) {
scanf("%d", &v);
d[v][i] = ;
}
}
floyd();
f(i,,n) ans += 1.0/d[i].count();
printf("Case #%d: %.5lf\n", cas, ans);
}
return ;
}bitset刷题记录的更多相关文章
- $2019$ 暑期刷题记录1:(算法竞赛DP练习)
$ 2019 $ 暑期刷题记录: $ POJ~1952~~BUY~LOW, BUY~LOWER: $ (复杂度优化) 题目大意:统计可重序列中最长上升子序列的方案数. 题目很直接的说明了所求为 $ L ...
- PE刷题记录
PE刷题记录 PE60 / 20%dif 这道题比较坑爹. 所有可以相连的素数可以构成一张图,建出这张图,在其中找它的大小为5的团.注意上界的估算,大概在1W以内.1W内有1229个素数,处理出这些素 ...
- leetcode刷题记录--js
leetcode刷题记录 两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但 ...
- Leetcode刷题记录(python3)
Leetcode刷题记录(python3) 顺序刷题 1~5 ---1.两数之和 ---2.两数相加 ---3. 无重复字符的最长子串 ---4.寻找两个有序数组的中位数 ---5.最长回文子串 6- ...
- 刷题记录:[HarekazeCTF2019]encode_and_encode
目录 刷题记录:[HarekazeCTF2019]encode_and_encode 一.知识点 JSON转义字符绕过 php伪协议 刷题记录:[HarekazeCTF2019]encode_and_ ...
- 刷题记录:[De1CTF 2019]Giftbox && Comment
目录 刷题记录:[De1CTF 2019]Giftbox && Comment 一.知识点 1.sql注入 && totp 2.RCE 3.源码泄露 4.敏感文件读取 ...
- 刷题记录:[强网杯 2019]Upload
目录 刷题记录:[强网杯 2019]Upload 一.知识点 1.源码泄露 2.php反序列化 刷题记录:[强网杯 2019]Upload 题目复现链接:https://buuoj.cn/challe ...
- 刷题记录:[XNUCA2019Qualifier]EasyPHP
目录 刷题记录:[XNUCA2019Qualifier]EasyPHP 解法一 1.error_log结合log_errors自定义错误日志 2.include_path设置包含路径 3.php_va ...
- 刷题记录:[DDCTF 2019]homebrew event loop
目录 刷题记录:[DDCTF 2019]homebrew event loop 知识点 1.逻辑漏洞 2.flask session解密 总结 刷题记录:[DDCTF 2019]homebrew ev ...
随机推荐
- 实验10: RIP
实验7-1 : RIPV1 实验目的通过本实验可以掌握:1. 在路由器上启动RIPv1 路由进程2. 启用参与路由协议的接口,并且通告网络3. 理解路由表的含义4. 查看和调试RIPv1 路由协议相 ...
- AWS的边缘计算平台GreenGrass和IoT
AWS的边缘计算平台GreenGrass和IoT 为什么需要有边缘计算? 如今公有云和私有云平台提供的服务已经连接上了绝大多数的桌面设备和移动设备.但是更多的设备比如,车辆,工程机械,医疗设备,无人机 ...
- Codeforces_835
A.比较两人总时间. #include<bits/stdc++.h> using namespace std; int s,v1,v2,t1,t2; int main() { ios::s ...
- python练习——第0题
原GitHub地址:https://github.com/Yixiaohan/show-me-the-code 题目:将你的 QQ 头像(或者微博头像)右上角加上红色的数字,类似于微信未读信息数量那种 ...
- Go语言实现:【剑指offer】复杂链表的复制
该题目来源于牛客网<剑指offer>专题. 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head.( ...
- 小白学 Python 数据分析(5):Pandas (四)基础操作(1)查看数据
在家为国家做贡献太无聊,不如跟我一起学点 Python 人生苦短,我用 Python 前文传送门: 小白学 Python 数据分析(1):数据分析基础 小白学 Python 数据分析(2):Panda ...
- 浅谈JSONP 的工作原理
小编最近在工作中经常用到 jsonp 这个东西, 表示之前从来没用过 最近稍微研究了下 当然很多内容来源于网上 收集整理 你懂的 ~~~ 话说我们访问一个页面的时候 需要像另一个网站获取部分信息, ...
- 如何用Python实现do...while语句
我在编程的时候可能会遇到如下代码: a = 0 while a != 0: a = input() print a 我所设想的运行过程是这样的: 很显然我是想先运行后判断的模式,即 do...whil ...
- HDU 5391 水题。
E - 5 Time Limit:1500MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64u Submit Statu ...
- Vue-20190623点滴
Vue-20190623点滴 推荐黄奕同学vue的学习方式和过程. https://juejin.im/post/5b18d2d7f265da6e410e0e20 ♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣ ...
- $2019$ 暑期刷题记录1:(算法竞赛DP练习)