2019牛客国庆集训派对day2 J.Vertex Cover(思维,组合数学算贡献)
发布日期:2021-06-30 10:32:59 浏览次数:2 分类:技术文章

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

从序号最大的点开始考虑

考虑 ( i , j ) (i,j) (i,j)(其中 i < j i<j i<j)这条边,选和不选的方案数放在 i i i点考虑

这样可以做到不重不漏

p p p表示权值大于 i i i且被选择的点数, q q q表示权值大于 i i i且没被选择的点数

①.若点 i i i被选择(只考虑 ( i , j ) (i,j) (i,j)边,其中 i < j i<j i<j)

那么至少存在一个代价更大且没被选择的点和 i i i相连

如果不是这样,完全可以不选 i i i而把其他小于 i i i的点全选上,更优

如果是这样,那么可以保证 i i i会被选择

方案数是 ( 2 q − 1 ) ∗ 2 p (2^{q}-1)*2^p (2q1)2p

②.若点 i i i没有被选择(只考虑 ( i , j ) (i,j) (i,j)边,其中 i < j i<j i<j)

显然 i i i不可能和其他代价更大且没有被选择的点相连

显然 i i i可能和所有代价更大且被选择的点相连

这样最优,方案数是 2 q 2^q 2q


累乘即是答案

#include 
using namespace std;#define int long longconst int maxn = 1e6+10;const int mod = 1e9+7;int base[maxn],n;char a[maxn];signed main(){
base[0] = 1; for(int i=1;i<=1000000;i++) base[i] = base[i-1]*2%mod; while( cin >> n >> ( a+1 ) ) {
int p = 0 , q = 0 , ans = 1;//被选择的点,没有被选择的点 reverse( a+1,a+1+strlen(a+1) ); for(int i=strlen(a+1)+1;i<=n;i++) a[i] = '0'; for(int i=n;i>=1;i--) {
if( a[i]=='0' )//不被选择 ans = ans*base[p]%mod,q++; else ans = ans*( base[q]-1 )%mod*base[p]%mod,p++; } cout << (ans%mod+mod)%mod << endl; }}

转载地址:https://issue-is-vegetable.blog.csdn.net/article/details/116542170 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:2021蓝桥杯第二次省赛B组题解(全&详细&有PDF)
下一篇:湘潭G.String Transformation(思维)

发表评论

最新留言

网站不错 人气很旺了 加油
[***.192.178.218]2024年04月20日 19时14分20秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

学习笔记(11):一学即懂的计算机视觉(第一季)-数学形态学滤波 2019-04-30
学习笔记(12):一学即懂的计算机视觉(第一季)-实战演练:图像平滑滤波对比... 2019-04-30
学习笔记(14):一学即懂的计算机视觉(第一季)-Canny算子 2019-04-30
学习笔记(15):一学即懂的计算机视觉(第一季)-程序示例 2019-04-30
学习笔记(16):一学即懂的计算机视觉(第一季)-数学形态学扩展应用 2019-04-30
学习笔记(20):一学即懂的计算机视觉(第一季)-图像变换有什么用? 2019-04-30
学习笔记(21):一学即懂的计算机视觉(第一季)-灰度直方图 2019-04-30
学习笔记(22):一学即懂的计算机视觉(第一季)-霍夫变换 2019-04-30
学习笔记(23):一学即懂的计算机视觉(第一季)-图像变换实战演练 2019-04-30
学习笔记(26):一学即懂的计算机视觉(第一季)-为什么要图像分割? 2019-04-30
学习笔记(27):一学即懂的计算机视觉(第一季)-基于灰度直方图的阈值分割 2019-04-30
学习笔记(28):一学即懂的计算机视觉(第一季)-灰度阈值分割实战演练 2019-04-30
学习笔记(31):一学即懂的计算机视觉(第一季)-区域生长算法 2019-04-30
学习笔记(32):一学即懂的计算机视觉(第一季)-分水岭算法 2019-04-30
学习笔记(33):一学即懂的计算机视觉(第一季)-图像分割实战演练(II) 2019-04-30
学习笔记(34):一学即懂的计算机视觉(第一季)-图像表示与描述 2019-04-30
学习笔记(35):一学即懂的计算机视觉(第一季)-图像表示与描述II 2019-04-30
学习笔记(36):一学即懂的计算机视觉(第一季)-图像表示描述实战演练 2019-04-30
学习笔记(37):一学即懂的计算机视觉(第一季)-总结 2019-04-30
学习笔记(38):高并发下的Nginx性能优化实战-Nginx优势特点总结 2019-04-30