题目

  http://acm.hdu.edu.cn/showproblem.php?pid=6109

分析

  对于相同的条件,明显直接并查集

  对于不同的条件,可以用set来保存,并查集合并的时候也要对set启发式合并

  还有另一种很奇妙的做法

  如果我们只考虑一段[l..r]是否可行,那么我们可以离线,先挑出相同的条件构出并查集,然后对所有的不同条件进行判断就行了

  这样我们就可以写出一个时间复杂度为O(r-l)的check(l,r)

  那我们怎么分段呢?

  我们对于当前起点now,进行倍增寻找长度最小的L(L=2^k)使得[now...now+L]这一段不能构成一段

  然后我们再对[now..now+L]进行二分寻找准确的分界点

  时间复杂度O(nlogn)

最新文章

  1. 在MVC控制器里面使用dynamic和ExpandoObject,实现数据转义的输出
  2. this
  3. 《zw版·Halcon-delphi系列原创教程》 只有2行代码的超市收款单ocr脚本
  4. iOS中使用RSA对数据进行加密解密
  5. Solr学习笔记(一)
  6. Android应用加入微信分享
  7. Ext.Net学习笔记03:Ext.Net MessageBus用法
  8. [cocos2d-x] 让精灵响应触摸 并把方向旋转到相对应的角度
  9. Linux 使用 cp 命令强制覆盖功能
  10. 【原】用Java编写第一个区块链(二)
  11. 使用Nome监控服务器各项指标
  12. 002-golang安装配置
  13. background-position 的设置
  14. PHP 多态理解
  15. windows系统安装
  16. ubuntu 安装u盘恢复
  17. 记DateTime.Now.ToString()遇到的一个坑
  18. 关于Unity中的摄像机
  19. Mediainfo的编译安装(suse)
  20. 远程线程注入shellcode笔记

热门文章

  1. SqlServer 2008 创建测试数据
  2. uva1610 Party Games
  3. python爬虫---实现项目(一) Requests爬取HTML信息
  4. PHP15 Smarty模板
  5. python+Eclipse+pydev环境搭建1
  6. http请求响应格式
  7. IO之Object流举例
  8. bash实现自动补全
  9. log4j 、logback 以及slf4j三者之间的关系
  10. 关于flock文件锁的阻塞与非阻塞