jzoj6316-djq的朋友圈【状压dp】

正题


题目大意

有盟友和情敌关系,情敌的情敌是朋友之类的规则,然后如果一个人和111的关系已经确定,以后都不会有任何影响,然后求一个序列,要求111的盟友最大。


解题思路

定义与111直接连边的是AAA类点,不与111直接连边,但与与AAA直接连边的是BBB类点
我们发现如果已经确定某些BBB类点,我们发现对于AAA类点的选择顺序并不重要,所以我们可以用状压dpdpdp,用0/10/10/1表示一个BBB类点的关系是否确定。这样时间复杂度O(2B)O(2^B)O(2B)

然后如果我们已经知道AAA类点是否选择,我们可以发现我们也不需要知道前面的序列,所以我们可以用状压dpdpdp,用0/10/10/1表示一个点是否选择。这样的时间复杂度为O(2A)O(2^A)O(2A)

然后我们每次选择一个最小的时间复杂度O(2min{A,B})O(2^{min\{A,B\}})O(2min{A,B}),那么因为有A+B≤nA+B\leq nA+Bn所以有min{A,B}≤n2min\{A,B\}\leq \frac{n}{2}min{A,B}2n


codecodecode

#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
const ll N=55;
ll n,m,v[N][N],id[N],f[1<<23];
ll con[N],dev[N];
ll cnt1,cnt2,ans;
int main()
{freopen("friends.in","r",stdin);freopen("friends.out","w",stdout);scanf("%lld%lld",&n,&m);memset(v,-1,sizeof(v));for(ll i=1;i<=m;i++){ll x,y,opt;scanf("%lld%lld%lld",&x,&y,&opt);v[x][y]=opt;v[y][x]=opt;}for(ll i=2;i<=n;i++){if(v[1][i]==-1) continue;id[i]=++cnt1;ans+=v[1][i]^1; for(ll j=2;j<=n;j++){if(v[1][j]==-1&&v[i][j]!=-1){if(!id[j]) id[j]=++cnt2;con[id[i]-1]|=1<<id[j]-1;dev[id[i]-1]|=(ll)((v[1][i]^v[i][j]^1)<<id[j]-1);}}}if(cnt1<cnt2){ll MS=1<<cnt1;memset(f,0xcf,sizeof(f));f[0]=0;for(ll i=0;i<MS;i++){if(f[i]<0) continue;ll k=0;for(ll j=0;j<cnt1;j++) if(i&(1<<j)) k|=con[j];for(ll j=0;j<cnt1;j++)if(!(i&(1<<j)))f[i|(1<<j)]=max(f[i|(1<<j)],f[i]+__builtin_popcountll(dev[j]&(~k)));}ans+=f[MS-1];}else{ll MS=1<<cnt2;memset(f,0xcf,sizeof(f));f[0]=0;for(ll i=0;i<MS;i++){if(f[i]<0) continue;ll k=0;for(ll j=0;j<cnt1;j++)if((i|con[j])!=i)f[i|con[j]]=max(f[i|con[j]],f[i]+__builtin_popcountll(dev[j]&(~i)));}ans+=f[MS-1];}printf("%lld",ans);
}

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

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

相关文章

.Net 4.X 提前用上 .Net Core 的配置模式以及热重载配置

1. 前言在提倡微服务及 Serverless 越来越普及的当下&#xff0c;传统 .Net 应用的配置模式往往依赖于一个名为 web.config 的 XML 文件&#xff0c;在可扩展性和可读性与时代脱节了。当然&#xff0c;我不会怂恿一下子把所有应用迁移到 .Net Core 上&#xff0c;本文将在尽量不…

P4764-[CERC2014]Pork barrel【主席树,LCT,最小生成树】

正题 题目链接:https://www.luogu.org/problem/P4764 题目大意 给出一张图&#xff0c;若干个询问&#xff0c;每个询问求只使用权值在[L,R][L,R][L,R]这个范围内的边组成的最小生成树权值和&#xff0c;强制在线。 解题思路 我们先考虑LLL固定&#xff0c;这时我们发现我们…

C# 枚举特性 FlagAttribute 的应用

写在前面枚举Enum 全称(Enumeration)&#xff0c;即一种由一组称为枚举数列表的命名常量组成的独特类型。可以看出枚举的出现是为了使我们可以在程序中方便的使用一些特定值的常量&#xff0c;一般的使用大家都比较熟悉&#xff0c;本文主要介绍枚举的特性 FlagAttribute。Flag…

jzoj2908,P1527-[集训队互测 2012]矩阵乘法【整体二分,二维树状数组】

正题 题目链接:https://www.luogu.org/problem/P1527 题目大意 给出一个矩阵&#xff0c;每个询问求子矩阵中的第kkk小数。 解题思路 我们发现我们对于每个询问我们可以二分答案&#xff0c;然后查找该子矩阵中有多少个数≤mid\leq mid≤mid来判断。 但是这样时间复杂度和空…

重温.NET下Assembly的加载过程

最近在工作中牵涉到了.NET下的一个古老的问题&#xff1a;Assembly的加载过程。虽然网上有很多文章介绍这部分内容&#xff0c;很多文章也是很久以前就已经出现了&#xff0c;但阅读之后发现&#xff0c;并没能解决我的问题&#xff0c;有些点写的不是特别详细&#xff0c;让人…

jzoj3410-[GDOI2014模拟]Tree【最小生成树,贪心】

正题 题目大意 在一张图中选择一颗生成树使得边权的方差最小。 解题思路 我们很容易想到一种贪心&#xff0c;那就是在按照边权排好序后选择一段连续的区间然后使用这段区间构成最小生成树&#xff0c;这样时间复杂度是O(m3log⁡m)O(m^3\log m)O(m3logm)&#xff0c;时间复杂…

看eShopOnContainers学一个EventBus

最近在看微软eShopOnContainers 项目&#xff0c;看到事件总线觉得不错&#xff0c;和大家分享一下看完此文你将获得什么&#xff1f;eShop中是如何设计事件总线的实现一个InMemory事件总线eShop中是没有InMemory实现的&#xff0c;这算是一个小小小的挑战发布订阅模式发布订阅…

jzoj3682-Points and Segments【模型转化,欧拉回路】

正题 题目大意 给出若干个区间&#xff0c;然后给每个区间涂颜色(蓝或红)&#xff0c;求一种方案使得每个点的颜色数量差不超过111。 解题思路 我们可以从每个lll向rrr连一条双向边&#xff0c;若此时我们可以跑出欧拉回路&#xff0c;那么这就满足颜色差为0(从l∼rl\sim rl∼…

常用解题算法总结

一、四大基本算法 分治法 动态规划&#xff08;一次买卖股票、多次买卖股票、最大连续子序列和、最大连续子序列积、最长公共子序列&#xff09; 贪心算法 穷举法 二、常用便捷算法 异或法&#xff08;单次偶次数、顺序单次偶次数&#xff09; 位运算&#xff08;单次k次…

创建基于MailKit和MimeKit的.NET基础邮件服务

邮件服务是一般的系统都会拥有和需要的功能&#xff0c;但是对于.NET项目来说&#xff0c;邮件服务的创建和使用会较为的麻烦。.NET对于邮件功能提供了System.Net.Mail用于创建邮件服务&#xff0c;该基础服务提供邮件的基础操作&#xff0c;并且使用也较为的简单。对于真正将该…

欢乐纪中A组赛【2019.8.23】

前言 我好菜 成绩 %%%TRXdalao\%\%\% TRXdalao%%%TRXdalao RankRankRankPersonPersonPersonScoreScoreScoreAAABBBCCC888(H−2)TRX(H-2)TRX(H−2)TRX120120120202020100100100000121212(H−2)HJW(H-2)HJW(H−2)HJW100100100100100100000000181818(J−3)XXY(J-3)XXY(J−3)XXY80…

Java JVM总结

一、jvm参数 1&#xff09;内存 -Xms -Xmx -Xss -Xloggc:file -Xprof -XX:DisabledExplicitGC -XX:PreBlockSpin -XX:CompileThreshold 2&#xff09;Parallel -XX:SurvivorRatio -XX:PreTenureSizeThreshold -XX:MaxTenuringThreshold -XX:ParallelGCThreads -XX:Us…

EF Core下利用Mysql进行数据存储在并发访问下的数据同步问题

小故事在开始讲这篇文章之前&#xff0c;我们来说一个小故事&#xff0c;纯素虚构&#xff08;真实的存钱逻辑并非如此&#xff09;小刘发工资后&#xff0c;赶忙拿着现金去银行&#xff0c;准备把钱存起来&#xff0c;而与此同时&#xff0c;小刘的老婆刘嫂知道小刘的品性&…

牛客练习赛50-记录

正题 比赛链接:https://ac.nowcoder.com/acm/contest/1080#question 成绩 本届 升高二届 总结 以后还是不要写太多自己不擅长的写法&#xff0c;空间要多检查&#xff0c;不要像个傻逼一样啥都写错。 尽量不要为了省一点空间和时间写一些不舒服的东西&#xff0c;尽量在能…

物联网框架ServerSuperIO在.NetCore实现跨平台的实践路线

正所谓天下大势&#xff0c;不跟风不行。你不跨平台&#xff0c;很low嘛。java说&#xff1a;你们能跨嘛&#xff0c;跨给我看看。C#说&#xff1a;不要强人所难嘛。java说&#xff1a;能部署在云上吗&#xff1f;docker&#xff1f;微服务&#xff1f;C#说&#xff1a;不要强人…

Spring Aop总结

一、什么是AOP 面向方面的编程&#xff08;AOP&#xff09;是一种编程技术&#xff0c;是面向对象编程的补充&#xff0c;它也提供了模块化。 在面向对象编程中&#xff0c;关键的单元是对象&#xff0c;AOP的关键单元是切面&#xff0c;或者说关注点。一些切面可能有集中的代…

P3750-[六省联考2017]分手是祝愿【期望dp】

正题 题目链接:https://www.luogu.org/problem/P3750 题目大意 nnn盏灯和按钮&#xff0c;每次随机选择一个xxx按下后会让xxx的倍数的灯都取反&#xff0c;然后若最少kkk步就可以将所有灯关闭那么直接选择最优策略&#xff0c;求关闭所有灯的期望次数。 解题思路 做期望dpdpd…

使用WebApiClient请求和管理Restful Api

前言本篇文章的内容是WebApiClient应用说明篇&#xff0c;如果你没有了解过WebApiClient&#xff0c;可以先阅读以下相关文章&#xff1a;WebApi client 的面向切面编程我来给.Net设计一款HttpClient.Net45下HttpClient的几个缺陷.net的retrofit--WebApiClient库.net的retrofit…

Spring MVC总结

一、Spring MVC &#xff08;1&#xff09;介绍 Spring MVC是一个基于Java的实现了MVC设计模式的请求驱动类型的轻量级Web框架。 通过把Model&#xff0c;View&#xff0c;Controller分离&#xff0c;将web层进行职责解耦&#xff0c;把复杂的web应用分成逻辑清晰的几部分&…

拥抱.NET Core系列:MemoryCache 缓存选项

MSCache项目MSCache 目前最新的正式版是 2.0.0&#xff0c;预览版是2.1.0&#xff0c;会与 .NETCore 2.1 一起发布。本篇用了2.0.0版本开源在 GitHub 上&#xff0c;仓库地址是&#xff1a;https://github.com/aspnet/CachingNuGet地址为&#xff1a;https://www.nuget.org/pac…