题面

初见线段树分治

(对我来说可不是什么经典题=。=)

把时间轴建出来一棵线段树,然后在对应的区间上打标记,最后把整棵树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 经典砂比题(雾的更多相关文章

  1. [BZOJ]4644: 经典傻逼题

    某天我觉得一切题目都是那么不可做,于是百度了一下"傻逼题"-- 题目大意:对于图中的任意一个点集(可以为空或者全集),所有恰好有一个端点在这个点集中的边组成的集合被称为割.一个割的 ...

  2. [POJ 1000] A+B Problem 经典水题 C++解题报告 JAVA解题报告

        A+B Problem Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 311263   Accepted: 1713 ...

  3. 转:sql 经典50题--可能是你见过的最全解析

    题记:从知乎上看到的一篇文章,刚好最近工作中发现遇到的题目与这个几乎一样,可能就是从这里来的吧.^_^ 里面的答案没有细看,SQL求解重在思路,很多时候同一种结果可能有多种写法,比如题中的各科成绩取前 ...

  4. 经典算法题每日演练——第十七题 Dijkstra算法

    原文:经典算法题每日演练--第十七题 Dijkstra算法 或许在生活中,经常会碰到针对某一个问题,在众多的限制条件下,如何去寻找一个最优解?可能大家想到了很多诸如“线性规划”,“动态规划” 这些经典 ...

  5. 经典算法题每日演练——第十六题 Kruskal算法

    原文:经典算法题每日演练--第十六题 Kruskal算法 这篇我们看看第二种生成树的Kruskal算法,这个算法的魅力在于我们可以打一下算法和数据结构的组合拳,很有意思的. 一:思想 若存在M={0, ...

  6. 经典算法题每日演练——第十四题 Prim算法

    原文:经典算法题每日演练--第十四题 Prim算法 图论在数据结构中是非常有趣而复杂的,作为web码农的我,在实际开发中一直没有找到它的使用场景,不像树那样的频繁使用,不过还是准备 仔细的把图论全部过 ...

  7. 经典算法题每日演练——第十一题 Bitmap算法

    原文:经典算法题每日演练--第十一题 Bitmap算法 在所有具有性能优化的数据结构中,我想大家使用最多的就是hash表,是的,在具有定位查找上具有O(1)的常量时间,多么的简洁优美, 但是在特定的场 ...

  8. 经典算法题每日演练——第八题 AC自动机

    原文:经典算法题每日演练--第八题 AC自动机 上一篇我们说了单模式匹配算法KMP,现在我们有需求了,我要检查一篇文章中是否有某些敏感词,这其实就是多模式匹配的问题. 当然你也可以用KMP算法求出,那 ...

  9. 经典算法题每日演练——第六题 协同推荐SlopeOne 算法

    原文:经典算法题每日演练--第六题 协同推荐SlopeOne 算法 相信大家对如下的Category都很熟悉,很多网站都有类似如下的功能,“商品推荐”,"猜你喜欢“,在实体店中我们有导购来为 ...

随机推荐

  1. Netty源码分析第5章(ByteBuf)---->第5节: directArena分配缓冲区概述

    Netty源码分析第五章: ByteBuf 第五节: directArena分配缓冲区概述 上一小节简单分析了PooledByteBufAllocator中, 线程局部缓存和arean的相关逻辑, 这 ...

  2. 下一个时代的发展架构竟然是它!FaaaaaaaaS到底是个啥?

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由腾讯云serverless团队发表于云+社区专栏 导读:2018年7月6 - 7日,一年一度的技术圈盛会ArchSummit全球架构师 ...

  3. 使用C#把Tensorflow训练的.pb文件用在生产环境

    训练了很久的Tf模型,终于要到生产环境中去考研一番了.今天花费了一些时间去研究tf的模型如何在生产环境中去使用.大概整理了这些方法. 继续使用分步骤保存了的ckpt文件 这个貌似脱离不了tensorf ...

  4. TeamWork#1,Week 5,Suggestions for Team Project

    我们团队联系到了我们六班的直系学长,并向他咨询了软件工程基础这门课的团队项目相关的问题.他们团队的名字命名为Z-XML,团队中的几个学长也都是我平时所熟识的.虽然学长已经大四,忙着考研工作等各种事务, ...

  5. HDU 4126 Genghis Khan the Conqueror 最小生成树+树形dp

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4126 Genghis Khan the Conqueror Time Limit: 10000/50 ...

  6. Prim's Algorithm & Kruskal's algorithm

    1. Problem These two algorithm are all used to find a minimum spanning tree for a weighted undirecte ...

  7. 小学四则运算结对项目报告(GUI)

    小学四则运算结对项目报告(GUI) 一.Coding.Net项目地址: https://git.coding.net/wsshr/Calculation.git 二.PSP表格(完成前): PSP 任 ...

  8. MongoDB安装笔记

    2017年11月17日,在Windows Service 2008R2上成功安装MongoDB. 版本:mongodb-win32-x86_64-2008plus-ssl-3.4.6-signed.m ...

  9. KEIL C51代码优化详细分析

    阅读了<单片机与嵌入式系统应用>2005年第10期杂志<经验交流>栏目的一篇文章<Keil C51对同一端口的连续读取方法>(原文)后,笔者认为该文并未就此问题进行 ...

  10. java.time 时间和简单任务

    java.time是jdk1.8才用的 时间管理 package com.test.time; import java.time.*; /** * Created by MY on 2017/8/7. ...