暑假集训 || bitset
bitset是一个存储0和1的数组
可以快速的把两个bitset的每一位对应做与或啥的
在可以用01串表示某个状态的时候可以应用到它
就是有两个集合,求它们的交集
bitset <> a,b,c;
a[] = a[] = a[] = ;
b[] = b[] = b[] = b[] = ;
c = a & b;
cout << c << endl;
cout << "size = " << c.count() << endl;
HihoCoder 1513
题意:给出n个学生,他们5门课的排名,问对每个学生,每科都有多少人排在它前面
思路:n是30000,n^2在bitset下可以过的,因为每个学生的排名不同,所以bs[i][j]保存第 i 门课,排名为 j 的学生,有哪些人排名比他高
这里要注意储存的状态的选择,因为输出的时候每个学生我们只知道它该门课它的排名,而对于这门课来说,不同排名的人的bs数组肯定是不同的,所以 j 的状态选择即为排名为 j
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <cstring>
#include <algorithm>
#include <bitset>
using namespace std;
const int SZ = ;
const int INF = ;
int mp[SZ][];
int a[SZ], b[SZ], c[SZ], d[SZ], e[SZ];
bitset<SZ> bs[][SZ], ans;
int main()
{
int n;
scanf("%d", &n);
for(int i = ; i <= n; i++)
{
scanf("%d %d %d %d %d", &a[i], &b[i], &c[i], &d[i], &e[i]);
mp[a[i]][] = i, mp[b[i]][] = i, mp[c[i]][] = i, mp[d[i]][] = i, mp[e[i]][] = i;
}
for(int i = ; i < ; i++)
for(int j = ; j <= n; j++)
{
bs[i][j] = bs[i][j-];
bs[i][j][mp[j-][i]] = ;
//cout << i <<" "<< j <<" "<< bs[i][j] << endl;
}
for(int i = ; i <= n; i++)
{
ans = bs[][a[i]] & bs[][b[i]] & bs[][c[i]] & bs[][d[i]] & bs[][e[i]];
printf("%d\n", ans.count());
}
return ;
}
Gym 100342J
题意:给n个城市,有些城市间有有向边,求三元环的个数(三元环:A->B->C->A)
思路:想不到bitset哇。。。把每个城市能到达的城市,和能被到达的用bitset表示出来
循环n个城市(A),对每个A找到它能到达的B(用vector存)
B能到达的城市,和A能被到达的城市,这两个集合的交集就是C,&一下然后count1的个数即可
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <cstring>
#include <algorithm>
#include <bitset>
#include <vector>
using namespace std;
typedef long long LL;
const int SZ = ;
const int INF = ;
int vis[SZ][SZ];
char s[SZ][SZ];
bitset<SZ> bs[][SZ];
vector<int> v[SZ];
int main()
{
freopen("triatrip.in", "r", stdin);
freopen("triatrip.out", "w", stdout);
int n;
scanf("%d", &n);
for(int i = ; i < n; i++)
scanf(" %s", s[i]);
for(int i = ; i < n; i++)
for(int j = ; j < n; j++)
if(s[i][j] == '+')
{
bs[][i][j] = ;
bs[][j][i] = ;
v[i].push_back(j);
}
LL cnt = ;
for(int i = ; i < n; i++)
for(int j = ; j < v[i].size(); j++)
cnt += (LL)((bs[][v[i][j]] & bs[][i]).count());
printf("%lld\n", cnt/);
return ;
}
暑假集训 || bitset的更多相关文章
- 2015UESTC 暑假集训总结
day1: 考微观经济学去了…… day2: 一开始就看了看一道题目最短的B题,拍了半小时交了上去wa了 感觉自己一定是自己想错了,于是去拍大家都过的A题,十分钟拍完交上去就A了 然后B题写了一发暴力 ...
- STL 入门 (17 暑假集训第一周)
快速全排列的函数 头文件<algorithm> next_permutation(a,a+n) ---------------------------------------------- ...
- 暑假集训Day2 互不侵犯(状压dp)
这又是个状压dp (大型自闭现场) 题目大意: 在N*N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案.国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共8个格子. ...
- 暑假集训Day1 整数划分
题目大意: 如何把一个正整数N(N长度<20)划分为M(M>=1)个部分,使这M个部分的乘积最大.N.M从键盘输入,输出最大值及一种划分方式. 输入格式: 第一行一个正整数T(T<= ...
- 2013ACM暑假集训总结-致将走上大三征途的我
回想起这个暑假,从开始与雄鹰一起的纠结要不要进集训队,与吉吉博博组队参加地大邀请赛,害怕进不了集训队.当时激励我月份开始接触的,记得当时在弄运动会来着,然后就问了雄鹰一些输入输出的东西,怀着满心的期待 ...
- [补档]暑假集训D5总结
%dalao 今天又有dalao来讲课,讲的是网络流 网络流--从入门到放弃:7-29dalao讲课笔记--https://hzoi-mafia.github.io/2017/07/29/27/ ...
- [补档]暑假集训D1总结
归来 今天就这样回来了,虽然心里极其不想回来(暑假!@#的只有一天啊喂),但还是回来了,没办法,虽然不喜欢这个地方,但是机房却也是少数能给我安慰的地方,心再累,也没有办法了,不如好好集训= = %da ...
- 暑假集训——cf热身赛部分题有感加其题解
刚刚开始集训,集训队队长暂时还没有拉专题,而是拉了部分codeforces上过题人数在2000左右的题组成了一场热身赛(其实就是一场练习),花了一天时间终于把它刷完了,其中很多题让我学到了很多骚操作, ...
- Uestc_suibian 暑假集训总结
唉,终于组队了,终于可以只BB了,我就BB,我就不上! 和Xiper以及chenxh组队了- 下面是总结: day1 第一天吃饱喝足,然后就上路了,我一开始就看到了C题大水题,但是我不敢想象这道题居然 ...
随机推荐
- const常量
1.不能给常量赋值 ; a=; 编译器报错:“a”: 不能给常量赋值
- Eclipse安装配置Maven
Eclipse安装配置Maven 1 安装配置Maven 1.1 下载Maven 从Apache网站 http://maven.apache.org/ 下载并且解压缩安装Apache Maven. ...
- iOS 拼音 Swift K3Pinyin
iOS 系统方法支持直接获取拼音,避免了之前各种第三方引入各种MAP或者资源文件.下面是一个Swift版本的简单示例: // swift 4.0 func pinyin(_ string: Strin ...
- JAVA基础-面向对象06
一.封装 1. 封装概念和体现 封装:包装的意思,隐藏被封装的事物的信息:生活中的包装:快递:食品:电子产品……方便:好看易用:安全: Java程序中的包装: 类:包装了同一类事物的共性信息: 函数: ...
- R Factor 如何转为c()
从 R语言本身来说 > f [1] 130015.IB 130013.IB Levels: 130013.IB 130015.IB > data = c(f) > data [1] ...
- bzoj 2959: 长跑【LCT+并查集】
如果没有环的话直接LCT 考虑有环怎么办,如果是静态的话就tarjan了,但是这里要动态的缩环 具体是link操作的时候看一下是否成环(两点已联通),成环的话就用并查集把这条链缩到一个点,把权值加给祖 ...
- IT兄弟连 Java Web教程 Servlet的生命周期
JavaWeb应用的生命周期由Servlet容器来控制,而Servlet作为JavaWeb应用的最核心的组件,其生命周期也由Servlet容器来控制.Servlet的生命周期可以分为3个阶段:初始化阶 ...
- VS2017专业版使用最新版Qt5.9.2教程(最新教材)
QT配置 Creator ================================================================= 之前运行release版本或者de ...
- 洛谷 P3455 [POI2007]ZAP-Queries || 洛谷P2522,bzoj2301
https://www.luogu.org/problemnew/show/P3455 就是https://www.cnblogs.com/hehe54321/p/9315244.html里面的方法2 ...
- AIDL(1):简介
Android 接口定义语言 (AIDL) 1.AIDL是什么 AIDL(Android 接口定义语言)与您可能使用过的其他 IDL 类似. 您可以利用它定义客户端与服务使用进程间通信 (IPC) 进 ...