9.13~9.30刷题(shui)题解

博主分享了在9月13日至9月30日期间所做的算法题目题解,涉及内容包括线段树、二分图匹配、Python编程、高斯消元、状态压缩、概率DP等。通过链接提供了每道题目的代码实现,涵盖了多项图算法和数据结构的应用。

9.30蒟蒻有事没法来机房,提前写篇题解
bzoj 3064:十分麻烦的线段树,我不想多说啥了,直接上代码吧。
http://paste.ubuntu.com/12610859/
bzoj 1854:二分图,由每个点的两个权值向其连边,然后做二分图匹配,做到哪算哪
http://paste.ubuntu.com/12610888/
bzoj 2656:python题,据说递归会T,所以我膜拜了CA爷的非递归的写法
http://paste.ubuntu.com/12610915/
bzoj 1923:异或方程高斯消元,有自由元的话输出无解。没有的话统计最后的序号。
http://paste.ubuntu.com/12610953/
bzoj 1076:状态压缩+概率DP
http://paste.ubuntu.com/12610979/
bzoj 2763:分层图最短路+堆优化dijkstra
http://paste.ubuntu.com/12611005/
bzoj 2173: fi=2fi1+fi2
http://paste.ubuntu.com/12611035/
bzoj 1191:二分图最短路,由每关向起所对应的锦囊连边
http://paste.ubuntu.com/12611069/
bzoj 2429:如题意可知,做最小瓶颈生成树(TM就是最小生成树),然后看那只猴子的跳跃能力大于最大边
http://paste.ubuntu.com/12611106/
bzoj 1093:强连通分量缩点+拓扑序求最长路
http://paste.ubuntu.com/12611136/
bzoj 2751:数论,对于连续一段的区间我们可以一起算
http://paste.ubuntu.com/12611146/
bzoj 2660:一个很神的DP:
f[i][1] f[i][0] 分别表示第 i 组成n的斐波那契数, idx[i] 表示其在数列中的位置
f[i][1]=f[i1][0]+f[i1][1]
f[i][0]=(idx[i]idx[i1])/2f[i1][0]+(idx[i]idx[i1]1)/2f[i1][1]
http://paste.ubuntu.com/12611208/
bzoj 1034:同田忌赛马,每次尽量能赢则赢,否则用差的选手对阵对方强的
http://paste.ubuntu.com/12611226/
bzoj 1059:考虑到有解的情况肯定是有 n 各点两两不同行不同列,所以我们可以从每个点的横坐标向纵坐标连边,跑二分图匹配
http://paste.ubuntu.com/12611246/
bzoj 1821:做出最小生成树的前nm+1条边,最后的边权即为答案
http://paste.ubuntu.com/12611263/
bzoj 1064:奇怪向的乱搞,答案必定是环大小的约数,于是乱搞
http://paste.ubuntu.com/12611273/
bzoj 1293:单调扫一下,求一下最小值即可
http://paste.ubuntu.com/12611284/
bzoj 2467:规律 ans=5n14n
http://paste.ubuntu.com/12611303/
bzoj 1880:分别以两个人的起点为原点做出最短路径图,在穷举出在两个最短路径图上的距离最远的点
http://paste.ubuntu.com/12611325/
bzoj 3506:一个让我不愿意提起的概率DP,我不想说了,膜拜VA爷的题解
http://paste.ubuntu.com/12611339/
bzoj 3969:二分答案,看是否有符合有条件分出这种答案
http://paste.ubuntu.com/12611354/
bzoj 2464&&1925:傻逼最短路,随便YY一下就好了
2464:http://paste.ubuntu.com/12611365/
1925:http://paste.ubuntu.com/12611505/
bzoj 1924:强连通分量缩点+拓扑序求最长路(这题我用了vector那种奇怪的加边方法)
http://paste.ubuntu.com/12611386/
bzoj 2957:奇怪的线段树,用分治的思想处理左子树对右子树的影响,当最大值大于右子树的左子树时,递归处理右子树;否则递归左子树,复杂度 O(nlog2n)
http://paste.ubuntu.com/12611420/
bzoj 3191:joseph问题有个很神的公式,请自行度娘
f[i][(j+a[k])modi]=f[i1][j]1m
http://paste.ubuntu.com/12611443/
bzoj 2134: ans[0]=ans[n]
ans=ni=11max(a[i1],a[i])
http://paste.ubuntu.com/12611459/
bzoj 3732:货车运输(突然发现我写的是Tarjan= =)
http://paste.ubuntu.com/12611480/
bzoj 1816:二分+验证
http://paste.ubuntu.com/12611492/
bzoj 1266:跑出最短路径图后再跑最小割
http://paste.ubuntu.com/12611519/
bzoj 1296:先分层DP在按行背包
http://paste.ubuntu.com/12611531/
bzoj 2595:斯坦纳树
http://paste.ubuntu.com/12611538/
bzoj 2330:差分约束
http://paste.ubuntu.com/12611549/
bzoj 2654:首先如果我们给白边加上一个权值,那么最小生成树中白边个数是单调的,于是二分+最小生成树
http://paste.ubuntu.com/12611561/
bzoj 2302:无解的情况做后缀和统计一下就好了,DP的部分:
f[i][j] 表示 i 后面已经安排好了j个人
f[i][j]=jk=0f[i+1][jk]Ckj
bzoj 1069:先求一边凸包,在枚举对角线,考虑两侧的三角形面积是单调的, O(n3) 求得即可
http://paste.ubuntu.com/12611640/
bzoj 1085:爆搜
http://paste.ubuntu.com/12611653/
bzoj 4146:和bzoj 1607轻拍牛头相同
http://paste.ubuntu.com/12611674/
bzoj 1832:和bzoj 1757紧急集合相同
http://paste.ubuntu.com/12611706/
bzoj 3643:爆搜
http://paste.ubuntu.com/12611716/
bzoj 3685:权值线段树(似乎并不用zkw线段树)
http://paste.ubuntu.com/12611725/

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值