题目

有\(m\)条线段,每条线段为\([l_i,r_i]\),每条线段可以是黑/白色

有些线段已经被染色,有些需要被确定颜色

询问是否存在一种染色方案,使得对于每一个位置\(i\),覆盖它的线段黑白个数差的绝对值不超过1

\(1 \le m \le 10^5 , n \le 10^9\)

题解

  • 将每条线段变成\([l_i-0.5,r_i+0.5]\)

  • 对于一个合法的方案可以加一些线段使得黑白覆盖的个数相等

  • 对\(l_i\)向\(r_i\)连一条边,如果把染色看成定向

  • 合法的方案满足在相邻两个点的中间划分,正向割边数=反向隔边数

  • 这相当于求一个欧拉回路(暂时不会证)

  • 离散化,连边后找到度数为奇数的点补成偶数

  • 注意由于一段的-1+1可能是交替的,所以只能对相邻的点补边

  • 接着用网络流做混合图的欧拉回路

    #include<bits/stdc++.h>
    #define inf 0x3f3f3f3f
    using namespace std;
    const int N=60010;
    int n,m,cnt,tot,o,S,T,d[N],val[N],cur[N],dis[N],hd[N],id[N],sub[N],tt;
    map<int,int>mp;
    map<int,int>::iterator it;
    struct edge{int u,v,w;}e[N];
    struct Edge{int v,nt,f;}E[N<<2];
    int get(int x){int&t=mp[x];if(t)return t;val[t=++cnt]=x;return t;
    }void adde(int u,int v,int w){E[o]=(Edge){v,hd[u],w};hd[u]=o++;E[o]=(Edge){u,hd[v],0};hd[v]=o++;
    }bool bfs(){static int head,tail,q[N],vis[N];for(int i=S;i<=T;++i)vis[i]=0,dis[i]=0;head=tail=0;vis[q[++tail]=S]=1;while(head<tail){int u=q[++head];for(int i=hd[u];~i;i=E[i].nt)if(E[i].f&&!vis[E[i].v]){int v=E[i].v;dis[v]=dis[u]+1;vis[v]=1;q[++tail]=v;if(v==T)return true;}}return false;
    }int dfs(int u,int F){if(u==T||!F)return F;int flow=0,f;for(int i=cur[u];~i;i=E[i].nt){int v=E[cur[u]=i].v;if(dis[v]==dis[u]+1 && (f=dfs(v,min(E[i].f,F)))){flow+=f,F-=f;E[i].f-=f,E[i^1].f+=f;if(!F)break;}}if(!flow)dis[u]=0;return flow;
    }int dinic(){int flow=0;while(bfs()){for(int i=S;i<=T;++i)cur[i]=hd[i];flow+=dfs(S,inf);}return flow;
    }int main(){freopen("wait.in","r",stdin);freopen("wait.out","w",stdout);scanf("%d%d",&m,&n);for(int i=1,u,v,w;i<=m;++i){scanf("%d%d%d",&u,&v,&w);v++;sub[++tt]=u;sub[++tt]=v;u=get(u),v=get(v);id[i]=-1;if(w==1)d[v]++,d[u]--;else d[u]++,d[v]--;e[++tot]=(edge){u,v,w};}sort(sub+1,sub+tt+1);for(int i=1;i<=tt;i+=2){if(sub[i]==sub[i+1])continue;int u=get(sub[i]),v=get(sub[i+1]);d[u]++,d[v]--;e[++tot]=(edge){u,v,-1};id[tot]=-1;}/*int lst=0,now=0;for(it=mp.begin();it!=mp.end();++it){int i=(*it).second;if(!(d[i]&1))continue;if(!lst){lst=i;continue;}else now=i;d[lst]++,d[now]--;e[++tot]=(edge){lst,now,-1};id[tot]=-1;lst=0;}*/S=0;T=cnt+1;for(int i=S;i<=T;++i)hd[i]=-1;//cout<<S<<" "<<T<<endl;int sum=0;for(int i=1;i<=cnt;++i)if(d[i]>0)adde(S,i,d[i]/2),sum+=d[i]/2;else adde(i,T,-d[i]/2);for(int i=1;i<=tot;++i)if(!~e[i].w){e[i].w=0;id[i]=o;adde(e[i].u,e[i].v,1);}////cout<<o<<endl;if(dinic()!=sum){puts("-1");return 0;}for(int i=1;i<=tot;++i)if(~id[i]&&!E[id[i]].f)e[i].w^=1;/*{for(int i=1;i<=tot;++i)printf("%d %d %d\n",e[i].u,e[i].v,e[i].w);}*/for(int i=1;i<=m;++i)printf("%d ",e[i].w);return 0;
    }

转载于:https://www.cnblogs.com/Paul-Guderian/p/11094221.html

【JZOJ6231】【20190625】等你哈苏德相关推荐

  1. 【2019暑假集训】06.25比赛总结

    今天试了一下省选组,成功自闭 考场思路 contest(https://jzoj.net/senior/#contest/home/2783) T1(梦批糼):数不包含障碍点的三维长方体.计算答案概率 ...

  2. 年轻人的第一台哈苏徕卡?和老牌相机合作的3C厂商到底得到了什么

    哈苏.徕卡,即使对摄像一无所知的人,恐怕也会认识这些品牌.这些名词意味着相机这款产品,以及光学成像技术的历史沿革和技术高度.它们是被老法师挂在嘴边的信仰,在普通人眼里,它们也代表着高端.专业甚至奢侈. ...

  3. 学习动力之“学习金字塔 (爱德加•戴尔)”理论

    一.什么是学习金字塔? 学习金字塔是美国缅因州的国家训练实验室研究成果,它用数字形式形象显示了:采用不同的学习方式,学习者在两周以后还能记住内容(平均学习保持率)的多少.它是一种现代学习方式的理论.最 ...

  4. 铜陵新松工业机器人项目_投资10亿元,茶山德威工业机器人和精密模具项目动工...

    来源:东莞时间网-i东莞 12月12日,德威工业机器人和精密模具项目在茶山镇正式破土动工.该项目是茶山镇的省.市重大项目,投资10亿人民币,将建设成企业总部,年产值预计达20亿人民币,将进一步优化茶山 ...

  5. 2.4g 无线键鼠对码软件_富德iK8900无线键鼠套装评测:静音纤薄

    作为世界三大无线键鼠品牌之一的富德科技,自2008年成立以来就专注于无线键鼠领域.凭借扎实的品质.出色的做工以及时尚潮流的外观设计,获得了众多年轻消费者的青睐.更与时下较为流行的动漫IP合作,推出联名 ...

  6. 提示以演示模式运行_德事隆和IMSAR在小型无人机上集成并演示合成孔径雷达

    [据德事隆系统公司网站2019年2月18日公告]德事隆系统公司(德事隆)与IMSAR公司于2019年2月18日宣布,在德事隆系统公司的Aerosonde小型无人机上成功集成并演示了IMSAR公司的NS ...

  7. 微软CEO纳德拉对话沈向洋:那些未来可期的计算机视觉研究与应用

    编者按:6月16日,CVPR 2020 大会以全球连线的形式如期开幕.在大会的首场主题演讲中,微软公司 CEO 萨提亚·纳德拉与微软公司前执行副总裁沈向洋进行了一场精彩的炉边对谈,分享了对计算机视觉. ...

  8. 轮椅度过一生!微软CEO纳德拉26岁长子去世,半生为儿也难逃病魔

      视学算法报道   编辑:桃子 拉燕 [新智元导读]周一,微软CEO纳德拉长子Zain Nadella去世,享年26岁.作为微软CEO,纳德拉是一个伟大的商业领导者,更是一名合格的父亲. 2月28日 ...

  9. 马斯克蝉联美国CEO薪酬榜No.1,年入41亿,库克皮猜纳德拉加起来都没他高

    郭一璞 杨净 发自 凹非寺 量子位 报道 | 公众号 QbitAI 硅谷钢铁侠.星链缔造者.特斯拉血汗工厂资本家.新造车势力的噩梦.中国人民的好朋友.煎饼果子爱好者,一龙·马斯克,现在又有了一个新的t ...

最新文章

  1. 最常见的 35 个 Python 面试题及答案
  2. Java 地位不保,落后已成定局 ?| 10月编程语言排行
  3. JDK8新特性之Stream流
  4. 如何解决tmux中Anaconda虚拟环境下的python版本不正确的问题
  5. 在VNC远程桌面环境Xfce4中Tab键失效的解决方法
  6. IntelliJ IDEA for Mac 如何取消双击shift键打开全局搜索弹窗
  7. python数据包头_Python爬虫-请求响应包头
  8. 决定要放下的人,要不要好好道个别?
  9. Web前端开发需要掌握的技能有哪些?
  10. win10计算机管理字体糊,大神分析win10系统高分屏字体模糊的办法介绍
  11. 一般线性模型和混合线性模型_从零开始的线性混合模型
  12. vivado ERROR: [Synth 8-4556] size of variable is too large to handle
  13. 薅羊毛算副业吗?薅羊毛到底是怎么赚钱的?
  14. 如何做好虾皮跨境电商?关于Shopee店铺快速开单的真相!
  15. 前端重要信息手机号、邮箱、身份证号进行脱敏处理
  16. 屁股决定脑袋--是否可以把0603电容更换为0402的电容
  17. 回归预测 | MATLAB实现SSA-BiLSTM麻雀算法优化双向长短期记忆神经网络多输入单输出
  18. [导入]【07欧美爆笑青春性喜剧】《魅力学堂_青男涩女》【DVD中字】【15:00】
  19. 人人开源renren-fast-vue
  20. 小程序毕设作品之微信企业公司小程序毕业设计(7)中期检查报告

热门文章

  1. bzoj 1050: [HAOI2006]旅行comf(codevs.cn 1001 舒适的路线) 快排+并查集乱搞
  2. 介绍两个Eclipse插件: Implementors Call Hierarchy
  3. 【转】C++面试题(四)——智能指针的原理和实现
  4. 科技公司高管职位知多少?(转)
  5. RAC环境下的备份与恢复(四)
  6. MVC之Model转Json
  7. 3星|《财经》年刊:各行业专家学者的现状分析与短期预测
  8. 关于Unity3D中鼠标移动指定物体的解决方案
  9. 探索 ConcurrentHashMap 高并发性的实现机制
  10. 斯诺登称美向日提供监控系统 日本人或遭大规模监控