POJ 2443 Set Operation】的更多相关文章

题目链接:http://poj.org/problem?id=2443 题目大意:给你N个集合,每个集合里有若干个数.M个查询,每个查询有a,b两个数.问是否存在一个集合同时包含a,b这两个数.若存在则输出Yes,否则为No. 康神竟然一下子就想出来了.. 思路:统计每个数在哪个集合出现过,用bitset记录下来.然后对于a,b,则把两个bitset取与. 如果得到空集就是No,否则就是Yes. #include <cstdio> #include <bitset> #includ…
Set Operation Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 3558   Accepted: 1479 Description You are given N sets, the i-th set (represent by S(i)) have C(i) element (Here "set" isn't entirely the same as the "set" defi…
http://poj.org/problem?id=2443 题意: 有1000个集合,每个集合有至多10000个数,之后输入多个询问,判断询问的两个数是否位于同一个集合. 思路: 位运算...很强大!! 用二进制来判断是否位于这个集合,0表示不在,1表示处于在的. 那么对于1000个集合来说,就需要1000位的二进制,一个int型的数可以保存32的二进制,32*32>1000,所以我们只需要32位的数组就可以表示出这1000个集合. #include<iostream> #includ…
Description You are given N sets, the i-th set (represent by S(i)) have C(i) element (Here "set" isn't entirely the same as the "set" defined in mathematics, and a set may contain two same element). Every element in a set is represente…
本文同时发布于 博客园 洛谷博客 题目链接 题目分析 给你n个集合,每个集合里面都有可能会重复的数字 q个询问,每次询问两个数是否会在同一集合内 $n<=1000$ $q<=200000$ 做法分析 算法一: $\mathcal{O}(nq)$ 的暴力做法 $vis[x][i]$ 表示 x 是否出现在第 i 个集合中,是为1,否为0 每一次询问枚举 算法二: 状态压缩压掉第二维 时间复杂度 $\mathcal{O}(n+q)$ 但是 $n<=1000$ 范围会爆空间 具体做法: vis[…
Set Operation Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 2965   Accepted: 1196 Description You are given N sets, the i-th set (represent by S(i)) have C(i) element (Here "set" isn't entirely the same as the "set" defi…
Preface bitset,还是一个比较好用的STL,可以给一些题目做到神奇的常数优化(\(O(\frac{原来的复杂度}{机器的位数(32位or64位)})\)) 关于一些具体的函数等内容可以参考,这里不再赘述.通过一些简单的题目看一下实际运用. Newcoder 132C 简单瞎搞题 这个东西我们感觉可以用类似背包的方法搞一下,记录一下哪些数是是当前可以取到的,可以滚存一下. 但是我们考虑到这样bool数组赋值可能会使复杂度达到\(O(n^4)\),因此我们可以把bool数组改为bitse…
bitset的用途挺多的,是一个比较骚的常数优化 一.很多位数的二进制数 poj 2443 http://poj.org/problem?id=2443 直接开个1万位的二进制数,求交就行了. 有关集合求并交的时候可以考虑biset优化 #include<bitset> #include<cstdio> #define REP(i, a, b) for(register int i = (a); i < (b); i++) #define _for(i, a, b) for(…
BFS算法与树的层次遍历很像,具有明显的层次性,一般都是使用队列来实现的!!! 常用步骤: 1.设置访问标记int visited[N],要覆盖所有的可能访问数据个数,这里设置成int而不是bool,基于一个考虑,多次循环时不用每次都清空visited,传递进去每次一个数字即可,比如第一次标记为1,判断也采用==1,之后递加即可. 2.设置一个node,用来记录相关参数和当前的步数,比如: struct node { int i; int j; int k; int s;//步数 }; 3.设计…
Pots Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Submit Status Practice POJ 3414 Description You are given two pots, having the volume of A and B liters respectively. The following operations can be performed: FILL(i)…