解题:BZOJ 4644 经典砂比题(雾
初见线段树分治
(对我来说可不是什么经典题=。=)
把时间轴建出来一棵线段树,然后在对应的区间上打标记,最后把整棵树DFS一遍,到叶节点输出答案即可
(把最终答案开成全局的了调了半天
#include<cstdio>
#include<bitset>
#include<vector>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=,M=;
int n,m,s,t1,t2,len,lst[N];
char str[M]; bitset<M> lbt[N],rd;
vector<bitset<M> > ve[*M];
struct a
{
bitset<M> bit[M];
void Set(bitset<M> bt)
{
for(int i=;~i;i--)
if(bt[i]) bt^=bit[i];
for(int i=;~i;i--)
if(bt[i]&&!bit[i].any())
{bit[i]=bt; break;}
}
void Output()
{
bitset<M> outp; outp.reset();
for(int i=;~i;i--)
if(!outp[i]&&bit[i].any())
outp^=bit[i];
bool b=false;
for(int i=;~i;i--)
if(outp[i])
{
b=true;
for(int j=i;~j;j--)
printf("%d",outp[j]?:);
break;
}
if(!b) printf(""); puts("");
}
}sb;
void Add(int nde,int l,int r,int ll,int rr,bitset<M> bt)
{
if(l>rr||r<ll)
return ;
else if(l>=ll&&r<=rr)
ve[nde].push_back(bt);
else
{
int mid=(l+r)/,ls=*nde,rs=*nde+;
Add(ls,l,mid,ll,rr,bt),Add(rs,mid+,r,ll,rr,bt);
}
}
void Getans(int nde,int l,int r,a sb)
{
int siz=ve[nde].size();
for(int i=;i<siz;i++)
sb.Set(ve[nde][i]);
if(l==r)
sb.Output();
else
{
int mid=(l+r)/,ls=*nde,rs=*nde+;
Getans(ls,l,mid,sb),Getans(rs,mid+,r,sb);
}
}
int main()
{
scanf("%d%d%d",&s,&n,&m);
for(int i=;i<=m;i++)
{
scanf("%d%d",&t1,&t2);
scanf("%s",str),len=strlen(str);
if(t1!=t2)
{
rd.reset();
for(int j=;j<len;j++)
rd[j]=str[len-j-]-'';
if(lst[t1]) Add(,,m,lst[t1],i-,lbt[t1]);
if(lst[t2]) Add(,,m,lst[t2],i-,lbt[t2]);
lst[t1]=lst[t2]=i,lbt[t1]^=rd,lbt[t2]^=rd;
}
}
for(int i=;i<=n;i++)
if(lst[i]) Add(,,m,lst[i],m,lbt[i]);
Getans(,,m,sb);
return ;
}
解题:BZOJ 4644 经典砂比题(雾的更多相关文章
- [BZOJ]4644: 经典傻逼题
某天我觉得一切题目都是那么不可做,于是百度了一下"傻逼题"-- 题目大意:对于图中的任意一个点集(可以为空或者全集),所有恰好有一个端点在这个点集中的边组成的集合被称为割.一个割的 ...
- [POJ 1000] A+B Problem 经典水题 C++解题报告 JAVA解题报告
A+B Problem Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 311263 Accepted: 1713 ...
- 转:sql 经典50题--可能是你见过的最全解析
题记:从知乎上看到的一篇文章,刚好最近工作中发现遇到的题目与这个几乎一样,可能就是从这里来的吧.^_^ 里面的答案没有细看,SQL求解重在思路,很多时候同一种结果可能有多种写法,比如题中的各科成绩取前 ...
- 经典算法题每日演练——第十七题 Dijkstra算法
原文:经典算法题每日演练--第十七题 Dijkstra算法 或许在生活中,经常会碰到针对某一个问题,在众多的限制条件下,如何去寻找一个最优解?可能大家想到了很多诸如“线性规划”,“动态规划” 这些经典 ...
- 经典算法题每日演练——第十六题 Kruskal算法
原文:经典算法题每日演练--第十六题 Kruskal算法 这篇我们看看第二种生成树的Kruskal算法,这个算法的魅力在于我们可以打一下算法和数据结构的组合拳,很有意思的. 一:思想 若存在M={0, ...
- 经典算法题每日演练——第十四题 Prim算法
原文:经典算法题每日演练--第十四题 Prim算法 图论在数据结构中是非常有趣而复杂的,作为web码农的我,在实际开发中一直没有找到它的使用场景,不像树那样的频繁使用,不过还是准备 仔细的把图论全部过 ...
- 经典算法题每日演练——第十一题 Bitmap算法
原文:经典算法题每日演练--第十一题 Bitmap算法 在所有具有性能优化的数据结构中,我想大家使用最多的就是hash表,是的,在具有定位查找上具有O(1)的常量时间,多么的简洁优美, 但是在特定的场 ...
- 经典算法题每日演练——第八题 AC自动机
原文:经典算法题每日演练--第八题 AC自动机 上一篇我们说了单模式匹配算法KMP,现在我们有需求了,我要检查一篇文章中是否有某些敏感词,这其实就是多模式匹配的问题. 当然你也可以用KMP算法求出,那 ...
- 经典算法题每日演练——第六题 协同推荐SlopeOne 算法
原文:经典算法题每日演练--第六题 协同推荐SlopeOne 算法 相信大家对如下的Category都很熟悉,很多网站都有类似如下的功能,“商品推荐”,"猜你喜欢“,在实体店中我们有导购来为 ...
随机推荐
- Kafka科普系列 | Kafka中的事务是什么样子的?
事务,对于大家来说可能并不陌生,比如数据库事务.分布式事务,那么Kafka中的事务是什么样子的呢? 在说Kafka的事务之前,先要说一下Kafka中幂等的实现.幂等和事务是Kafka 0.11.0.0 ...
- 高可用OpenStack(Queen版)集群-4.keystone集群
参考文档: Install-guide:https://docs.openstack.org/install-guide/ OpenStack High Availability Guide:http ...
- 使用NNI的scikit-learn以及Tensorflow分析
一.NNI简介 NNI (Neural Network Intelligence) 是自动机器学习(AutoML)的工具包. 它通过多种调优的算法来搜索最好的神经网络结构和(或)超参,并支持单机.本地 ...
- hadoop 集群HA高可用搭建以及问题解决方案
hadoop 集群HA高可用搭建 目录大纲 1. hadoop HA原理 2. hadoop HA特点 3. Zookeeper 配置 4. 安装Hadoop集群 5. Hadoop HA配置 搭建环 ...
- dobule运算
DecimalFormat df = new DecimalFormat("0.00"); double rate = (warnMonNum/totalCustCount)*10 ...
- java.util.ConcurrentModificationException: null
是因为在map.foreach中又put新的值了 在map.foreach中可能是不可以增删改
- YQCB冲刺周第五天
站立会议: 任务看板: 今天的任务为依旧为将用户记录的数据添加到数据库中,以及金额球的设置. 遇到的问题为金额球在jsp页面的显示.
- window 窗口编辑
package com.chuangkohua; import java.awt.FileDialog; import java.awt.FlowLayout; import java.awt.Fra ...
- 软工1816 · Beta冲刺(2/7)
团队信息 队名:爸爸饿了 组长博客:here 作业博客:here 组员情况 组员1(组长):王彬 过去两天完成了哪些任务 完成考试 确定历史记录页面与排行榜页面的前端页面风格 接下来的计划 & ...
- fcn模型训练及测试
1.模型下载 1)下载新版caffe: https://github.com/BVLC/caffe 2)下载fcn代码: https://github.com/shelhamer/fcn.berkel ...