C. 奇奇怪怪的魔法阵(未搞懂)

C. 奇奇怪怪的魔法阵

题意:

n个点m条边,定义集合S为独立集,当且仅当任意x,y∈S,x与y之间没有边。空集也是独立集
现在对于每一个点的集合T,有多少子集为独立集
设N=0,1,…,n-1,AT=∑S⊂T[S是独立集]A_{T}=\sum_{S⊂T}[S是独立集]AT=ST[S]。对于每一个T⊂N,求出ATA_TAT
1<=n<=26

题解:

看这个数据范围就很明显,复杂度是(1<<26),正好1s内
而且肯定是dp转移,但是还是不知道咋做,看了题解恍然大悟

设dp[msk]表示msk的子集内独立集的个数。开始考虑转移,在msk中随便选一个元素i。对于元素i有两种情况,考虑i在不在独立集里,如果不在的话,i号点对其他点是没有影响的,那么直接从dp[msk^(1<<i)]转移。如果在,i号点的所有邻居都不能在独立集里,设i号点及其邻居的节点集合为net[i]net[i]net[i],这种情况就从dp[msk⨁net[i]]dp[msk⨁net[i]]dp[msknet[i]]转移即可
以上这是官方题集,我现在还有很大的疑惑?等想明白继续更新

代码:

#include<bits/stdc++.h>
using namespace std;
const int mod=1e9+7;
int n,m,x,y,msk[55],dp[(1<<26)+10],fun[(1<<25)+10],id,ans;
int main()
{scanf("%d%d",&n,&m);for (int i=0;i<n;i++) msk[i]=1<<i;for (int i=1;i<=m;i++){scanf("%d%d",&x,&y);msk[x]|=(1<<y);msk[y]|=(1<<x);}for (int i=0;i<n;i++) fun[1<<i]=i;dp[0]=1;for (int i=1;i<(1<<n);i++){id=fun[i&(-i)];//获取1的最低位 /*i^(1<<id):当前i的状态中去掉第id个 */ dp[i]=dp[i^(1<<id)]+dp[i^(i&msk[id])];if (dp[i]>=mod) dp[i]-=mod;}for (int i=(1<<n)-1;i>=0;i--) ans=(233ll*ans+dp[i])%mod;printf("%d\n",ans);return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/315947.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

.NET Core之只是多看了你一眼

技术学习是一件系统性的事情&#xff0c;如果拒绝学习&#xff0c;那么自己就会落后以至于被替代。.NET也是一样&#xff0c;当开源、跨平台成为主流的时候&#xff0c;如果再故步自封&#xff0c;等待.NET的就是死路一条&#xff0c;幸好.NET Core问世了&#xff0c;社区反响积…

Educational Codeforces Round 111 (Rated for Div. 2)

Educational Codeforces Round 111 (Rated for Div. 2) 题号题目知识点AFind The ArrayBMaximum Cost DeletionCManhattan SubarraysDExcellent Arrays组合数学思维EStringforces状压dpFJumping Aroundboruvka算法

TOTP 介绍及基于 C# 的简单实现

TOTP 介绍及基于 C# 的简单实现IntroTOTP 是基于时间的一次性密码生成算法&#xff0c;它由 RFC 6238 定义。和基于事件的一次性密码生成算法不同 HOTP&#xff0c;TOTP 是基于时间的&#xff0c;它和 HOTP 具有如下关系&#xff1a;TOTP HOTP(K, T)HOTP(K,C) Truncate(HMAC-…

微软携手红帽,共筑开源新未来

官宣了&#xff0c;官宣了&#xff01;微软携手红帽正式推出重要力作Global Azure 公有云第一款联合管理的 OpenShift 产品&#xff0c;业界欢腾&#xff01;自此&#xff0c;微软在拥抱云计算开源之路上&#xff0c;多了一股强劲的推动力。5月初刚刚举办的全球 Red Hat Summit…

CF1550D Excellent Arrays(完全会了更新)

CF1550D Excellent Arrays 题意&#xff1a; 定义一个长度为n的整数序列a是好的仅当对于任意整数i∈[1,n]&#xff0c;都有ai!ia_i !iai​!i 设F(a)等于满足1<i<j<n,aiajija_ia_jijai​aj​ij的(i,j)对数 我们定义一个长度为n的序列a是完美的&#xff0c;仅当&#…

.NET Core 3.0之深入源码理解Startup的注册及运行

开发.NET Core应用&#xff0c;直接映入眼帘的就是Startup类和Program类&#xff0c;它们是.NET Core应用程序的起点。通过使用Startup&#xff0c;可以配置化处理所有向应用程序所做的请求的管道&#xff0c;同时也可以减少.NET应用程序对单一服务器的依赖性&#xff0c;使我们…

置换群,Polya引理和burnside引理(等价类计数问题)

参考文章&#xff1a; 等价类计数问题 Burnside引理&Plya定理 Burnside引理与Polya定理 置换群和Burnside引理&#xff0c;Polya定理 概念引入&#xff1a; 离散数学应该学过置换群的相关概念&#xff0c;置换本质就是映射&#xff0c;可以理解成一个正方形绕其中心逆时针…

时隔两年的重大更新,微软发布.NET Framework 4.8

微软发布了.NET Framework 4.8&#xff0c;这是两年来.NET 框架的第一个重大更新。新版本包含多个产品领域的改进&#xff0c;其中包括 Windows 窗体、WCF、WorkFlow 和 WPF。它还在基类库&#xff08;BCL&#xff09;和通用语言运行时&#xff08;CLR&#xff09;中有一些更新…

P1446 [HNOI2008]Cards

P1446 [HNOI2008]Cards 题意&#xff1a; 有n张牌&#xff0c;染三种颜色&#xff0c;每种颜色规定数目&#xff0c;给出m种不同的洗牌方法。两种染色方法相同当且仅当其中一种可以通过任意的洗牌法&#xff08;即可以使用多种洗牌法&#xff0c;而每种方法可以使用多次&…

EventStore文件存储设计

背景ENode是一个CQRSEvent Sourcing架构的开发框架&#xff0c;Event Sourcing需要持久化事件&#xff0c;事件可以持久化在DB&#xff0c;但是DB由于面向的是CRUD场景&#xff0c;是针对数据会不断修改或删除的场景&#xff0c;所以内部实现会比较复杂&#xff0c;性能也相对比…

CF79D Password(P3943 星空)

CF79D Password&#xff08;P3943 星空&#xff09; 题意&#xff1a; 你有 n 个灯泡&#xff0c;一开始都未点亮。 同时你有 l 个长度&#xff0c;分别为 a1∼ala_1∼ a_la1​∼al​ 每次你可以选择一段连续的子序列&#xff0c;且长度为某个 aia_iai​&#xff0c;并将这些…

.NET Core 如何禁止.resx文件自动生成Designer.cs

点击上方蓝字关注“汪宇杰博客”在 Visual Studio 中&#xff0c;如果我们在一个 .NET Core 工程里加入了一个资源文件&#xff08;.resx&#xff09;&#xff0c;那么你会发现有个对应的 .Designer.cs 文件被自动生成了&#xff0c;每次资源文件的内容有变化&#xff0c;这个设…

P1450 [HAOI2008]硬币购物

P1450 [HAOI2008]硬币购物 题意&#xff1a; 共有 4 种硬币。面值分别为c1,c2,c3,c4c_1,c_2,c_3,c_4c1​,c2​,c3​,c4​。 某人去商店买东西&#xff0c;去了 n 次&#xff0c;对于每次购买&#xff0c;他带了 did_idi​枚 i 种硬币&#xff0c;想购买 s 的价值的东西。请问…

.net core百万设备连接服务和硬件需求测试

随着物联网的普及&#xff0c;服务应用将面对大量物联设备处理&#xff1b;早期.NET在通讯上的处理能力一直给人的印像并不怎样&#xff0c;但net core经历过大量的优化后在各个模块的处理性能都有着比较出色的提升&#xff0c;针对网络方向的处理模块也有着显著的提升。以下主…

字符串匹配(多模式匹配篇)

字符串匹配&#xff08;多模式匹配篇&#xff09;摘要&#xff1a;问题的提出&#xff1a;众所周知&#xff0c;KMP算法在O&#xff08;n&#xff09;的时间中solve单模式串匹配问题。但怎样solve多模式串匹配问题呢&#xff1f;Solve&#xff1a;本文用简要记叙了使用trie树&a…

.net core编写转发服务

我有个小伙伴问我&#xff0c;他需要写一个转发服务的他有很多功能要通过他的服务转发~技术栈又不一定asp.net core&#xff0c;我就想起泥水老前辈的BeetleX.FastHttpApi中午午休&#xff0c;折腾了一会儿前辈&#xff0c;问清楚了FastHttpApi如何配置控制器依赖注入和控制器的…

Jumping Monkey(CCPC网络赛重赛)

Jumping Monkey(CCPC网络赛重赛) 题意&#xff1a; n个点的树&#xff0c;每个点有一个不同的值aia_iai​.现在一个猴子在树上&#xff0c;这个猴子从点u跳到点v当且仅当ava_vav​是u到v最短路径上的最大值。如果没有点能跳将停止。 对于k∈[1,n]&#xff0c;计算猴子在点k开…

数据结构(终极线段树篇)

数据结构&#xff08;终极线段树篇&#xff09; 摘要&#xff1a; 问题的提出&#xff1a;如何解决多样化的区间操作问题&#xff1f; solve&#xff1a;线段树&#xff01;&#xff01;&#xff01; 关键字&#xff1a; 线段树&#xff0c;可持久化线段树&#xff0c;权值线段…

.NET Core 3.0之深入源码理解Configuration(一)

微软在.NET Core里设计出了全新的配置体系&#xff0c;并以非常灵活、可扩展的方式实现。从其源码来看&#xff0c;其运行机制大致是&#xff0c;根据其Source&#xff0c;创建一个Builder实例&#xff0c;并会向其添加Provider&#xff0c;在我们使用配置信息的时候&#xff0…

摊还分析

摊还分析 1何为摊还分析&#xff1f; 摊还分析主要求解数据结构维护序列执行的所有操作的平均时间&#xff0c;来评价操作的代价&#xff0c;从而保证最坏情况下每个操作的平均性能。 2聚合分析 2.1何为聚合分析&#xff1f; 若长度为n的操作序列最坏情况下所花费时间为T(…