一开始做的时候(TLE),A,C,G这三类作为边,然后点和点直接建边搜个环:then time BOOM!

可以发现只属于“A”类的之间都并在一起就好,同理“G”类和“C”类,那么整幅图会变成?

所以我们只需要分析三角的位置,从而就能搞出整个图是否是个环。

一种思路:

直接分类!但是要严谨。。。

1.如果只有以一个“A”类/“G”类/“C”类为交界的,举只有“A”类例子:(num["A"]+num["AG"]+num["AC"]+num["AGC"]==n),就是yes,同理得G类和C类

2.如果只有以A,G,C其中两个作为交界的,如果只有以A,G的话,那么就是num["C"]==0&&num["AG"]+num["AGC"]>=2,就是yes,同理得相同情况。

3.如果三个都存在的话:num["AG"]?1:0+num["AC"]?1:0+num["GC"]?1:0+num["AGC"]>=3就好了或者(num["AG"]>=2&&num["AC"]>=2)或者(num["AG"]>=2&&num["GC"]>=2)或者(num["AC"]>=2&&num["GC"]>=2)

OK,that's all.

第二种方法:

DFS。

关键还是这幅图,第一种方法判断似乎好像太过思维?

DFS的话注意复杂度,所以要缩小点的数量。

对于A类/C类/G类的话,只需要一个点。

对于AG,GC,AC的话,最多只需要两个,主要就是多了也没用。

对于ACG的话,最多只要三个。

所以整幅图最多1+1+1+2+2+2+3=12,2^12,当然不保险,AG/AC/GC类可以需要3个点?2^15?复杂度还是可以的。

最新文章

  1. 笔记——shell脚本学习指南
  2. javascript正则表达式(一)
  3. Java NIO 开篇
  4. [转载] google mock CheatSheet
  5. C++中String类的实现
  6. [Practical Git] Diagnose which commit broke something with git bisect
  7. pthread_setcanceltype 线程取消
  8. 04747_Java语言程序设计(一)_第8章_多线程
  9. asp.net js 获取服务器控件值
  10. keep健身计划
  11. Node.js v0.10.31API手冊-控制台
  12. sql 各种格式
  13. java 判断大小写、数字出现的次数
  14. inotify软件部署及实时同步
  15. RocketMQ,JStorm与Tair使用笔记
  16. render与vue组件和注册
  17. Nginx学习系列二Linux下Nginx实现负载均衡
  18. csp20151203画图 解题报告和易错地方
  19. decimal模块
  20. BZOJ4541 [Hnoi2016]矿区

热门文章

  1. php总结7——文件函数库、序列化数据、文件包含
  2. DAICO模式到底是什么?
  3. svn 出现冲突时可以使用 meld . 命令合并。 而git的冲突合并详见内容
  4. Java AQS详解(转)
  5. jquery .html(),.text(),.val()用法
  6. 用fiddler替换线上网页资源调试界面
  7. iOS 使用GitHub托管代码
  8. 20145239杜文超 《Java程序设计》第1周学习总结
  9. (转)MongoDB和Redis区别
  10. codeforces 706A A. Beru-taxi(水题)