5328. 【NOIP2017提高A组模拟8.22】世界线 bitset+拓补序合并
来源:互联网 发布:linux shutdown命令 编辑:程序博客网 时间:2024/06/05 01:55
题意:给你一个DAG,算每个点能到达的点数-已经连边的边数。
这数据范围很鬼畜啊。直接暴力拓补序合并GG,加个bitset也有点危险,然后我就学习了一种新姿势。。
每次只存500个点,类似于循环展开,那么时间复杂度就是
bitset中能到达的点设为1,否则为0.
#include<cstdio>#include<algorithm>#include<cstring>#include<bitset> #define fo(i,a,b) for(int i=a;i<=b;i++)#define fd(i,a,b) for(int i=a;i>=b;i--)using namespace std;const int N=3e5+5;bitset <505> a[N]; typedef long long ll;int n,m;int head[N],next[N],go[N],tot;int du[N],q[N],t,w;ll ans;inline void add(int x,int y){ go[++tot]=y; next[tot]=head[x]; head[x]=tot;}int main(){ //freopen("worldline.in","r",stdin); //freopen("worldline.out","w",stdout); scanf("%d%d",&n,&m); ans=-m; fo(i,1,m) { int x,y; scanf("%d%d",&x,&y); add(x,y); ++du[y]; } fo(i,1,n)if (!du[i])q[++t]=i; fo(x,1,t) { for(int i=head[q[x]];i;i=next[i]) { int v=go[i]; if (!--du[v])q[++t]=v; } } int l=1,r=500; for(;l<=n;l=r+1,r+=500) { fo(i,1,n)a[i].reset(); fd(i,t,1) { for(int j=head[q[i]];j;j=next[j]) { int v=go[j];a[q[i]]|=a[v]; } ans+=a[q[i]].count(); if (q[i]>=l&&q[i]<=r)a[q[i]][q[i]-l]=1; } } printf("%lld\n",ans);}
阅读全文
1 0
- 5328. 【NOIP2017提高A组模拟8.22】世界线 bitset+拓补序合并
- 【jzoj5328】【NOIP2017提高A组模拟8.22】【世界线】【bitset】
- JZOJ 5328. 【NOIP2017提高A组模拟8.22】世界线
- 【NOIP2017提高A组模拟8.22】世界线
- 世界线 【NOIP2017提高A组模拟8.22】
- 【JZOJ5328】【NOIP2017提高A组模拟8.22】世界线
- JZOJ5399. 【NOIP2017提高A组模拟10.7】Confess bitset
- JZOJ5384. 【NOIP2017提高A组模拟9.23】四维世界
- 【NOIP2017提高A组模拟8.22】密码
- jzoj100048 【NOIP2017提高A组模拟7.14】紧急撤离 (网格图,分治,bitSet)
- 【JZOJ5328】【NOIP2017提高组模拟】世界线(STL)
- JZOJ5384. 【NOIP2017提高A组模拟9.23】四维世界 组合数学
- JZOJ 5384. 【NOIP2017提高A组模拟9.23】四维世界
- 5329. 【NOIP2017提高A组模拟8.22】时间机器 map
- jzoj5330 【NOIP2017提高A组模拟8.22】密码
- JZOJ 5329. 【NOIP2017提高A组模拟8.22】时间机器
- 【NOIP2017提高A组模拟8.22】时间机器
- 【JZOJ5329】【NOIP2017提高A组模拟8.22】时间机器
- 合并财务报表无条件抵销分录
- 安装完win7后,ubuntu 启动项不见了(boot repair法)
- 在Unity Project面板右键菜单的拓展
- MySQL 5.6 for Windows 解压缩版配置安装
- Redis
- 5328. 【NOIP2017提高A组模拟8.22】世界线 bitset+拓补序合并
- nginx二级目录设置
- PostgreSQL9.6, PostGIS2.3 常用函数
- CISSP国际注册信息系统安全专家
- Idea集成Activiti开发
- web缓存
- 最小的k个数
- html页面数据抓取
- 图像语义分割的总结和资源推荐