博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Codeforces 576D. Flights for Regular Customers(倍增floyd+bitset)
阅读量:5137 次
发布时间:2019-06-13

本文共 785 字,大约阅读时间需要 2 分钟。

  这破题调了我一天...错了一大堆细节T T

  首先显然可以将边权先排序,然后逐个加进图中。

  加进图后,倍增跑跑看能不能到达n,不能的话加新的边继续跑。

  倍增的时候要预处理出h[i]表示转移矩阵的2^0~i的或和,转移是h[i]=h[i-1]*h[i-1]。

  注意两个矩阵包含0~i和0~j相乘的时候,得到的矩阵是0~i*j的,而两个矩阵包含0~i和0~j或起来的时候,得到的矩阵是j~i+j的。

  倍增的时候因为必须答案单调,所以当前的值必须或上之前的值。

#include
#include
#include
#include
#include
#include
#include
using namespace std;const int maxn=160, inf=1e9+160;struct mtx{bitset
mp[maxn]; mtx(){ for(int i=0;i
>=1, tmp=tmp*tmp) if(b&1) f=f*tmp;}inline bool cmp(poi a, poi b){ return a.dis
=0;j--) if(a[i].dis+ans+(1<
<=a[i+1].dis) { tmp2=tmp1; tmp2=tmp2*h[j]; if(tmp2.mp[1][n]) continue; ans+=(1<
View Code

 

转载于:https://www.cnblogs.com/Sakits/p/8040256.html

你可能感兴趣的文章
jquery的ajaxFileUpload异步上传
查看>>
http协议理解
查看>>
node随笔-二进制数组buffer
查看>>
Xcode 查找 TODO 清单
查看>>
nginx+uWSGI+django+virtualenv+supervisor发布web服务器
查看>>
什么是NSIS?
查看>>
从100PV到1亿级PV网站架构演变(转)
查看>>
scrapy Pipeline 练习
查看>>
Insert a Drop Down Calendar Menu In Excel – Choose a Date!
查看>>
56. Merge Intervals(js)
查看>>
MapReduce
查看>>
夜未眠1
查看>>
C++ 模板
查看>>
post参数的方法 json data 和特别的传参
查看>>
3.1本地数据获取
查看>>
阶段1 语言基础+高级_1-3-Java语言高级_02-继承与多态_第5节 final关键字_2_final关键字用于修饰类...
查看>>
lockback 生成json 日志配置
查看>>
【甲午年正月初九】测试的需求文档评审
查看>>
ASP导出数据到excel遇到的一些问题
查看>>
pdf文件之itextpdf插入html内容以及中文解决方案
查看>>