2021-01-20周总结

本文探讨了分层图中最短路径问题的新视角,结合状态压缩技巧、线段树在动态规划中的应用,以及排列组合的隔板法实例。同时提到了熟练掌握STL库的重要性。关键词包括状态压缩、线段树、dp、分层图、数论、STL。
摘要由CSDN通过智能技术生成

最近几天刷了几道状压dp与线段树dp,在补题的时候发现了分层图最短路这个知识点之前没有接触过,类似于网络流中的拆点。最近主要在练习一些数论题,我数论接触的不是很久,感觉挺难的。

状态压缩中的几个小技巧

	int comb = (1<<(k)) - 1;//
    while(comb < (1<<n)){
		//总集合为{ 0 到 (1<<n)-1 } , 对大小为k个1的子集进行枚举 comb为子集	

        int x = comb & (-comb) ,y = comb + x;
        comb = ((comb & ~y)/x >> 1) | y;
    }



    for(int sub = n;sub;sub =(sub-1)&n){
        //sub 为 n 的子集
    }
	
int table[16] = {0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4};
int popcount(unsigned int x) { // 返回x的二进制中1的个数
    int ret = 0;
    for(int i = 0; i < 8; i++) {ret += table[x & 15]; x >>= 4;}
    return ret;
}

线段树优化的dp 也是比较套路的
大概像是在区间段里进行背包,通过线段树优化快速找到转移的状态

排列组合的隔板法:
a1 + a2 + a3 + a4 + … + ak = n
如果是等式 就要减去一个 :C[n-1][k-1]
l <= a1 <= a2 <= a3 <= … <= ak <= r
如果是不等式就 要就要把 隔板左边那一段的作为一个区间 : C[r-l+k][k]

做cf的时候发现stl要用熟练啊,虽然平时都说不能依赖stl但是如果用不熟练的话真的很吃亏

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值