F - Close Group

2024-08-26 00:44
文章标签 close group

本文主要是介绍F - Close Group,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

子集切割型 递推的dp
链接
有别于旅行商那种子集dp f[s][i]这种。。
子集切割型。。他研究的一般是子集和子集的拼凑。。
有点像 区间dp的递推类似。。把当前子集 分割成小子集+小子集。

#include <bits/stdc++.h>
using namespace std;
#define int long long
#define ll __int128_t
#define ar array<int, 2>
#define arr array<int, 3>
int  n, m, k, inf = 1LL << 61, mod = 998244353;// 1e9+7;
const int N = 18;
int f[1 << N], a[N];
void solve() {cin >> n >> m;for (int i = 1; i <= m; ++i) {int x, y;cin >> x >> y;x--, y--;a[x] |= 1 << y;//这种记录方式可以快速验证 一些和x有关的信息。a[y] |= 1 << x;}for (int i = 0; i < n; ++i)a[i] |= 1 << i;memset(f, -1, sizeof f);for (int s = 0; s < 1 << n; ++s) {//就是初始化那些自成 完全图的子集 。。int ok = 1;for (int i = 0; i < n; ++i) {if (s >> i & 1 && (a[i]&s) != s)ok = inf;}f[s] = ok;}for (int s = 0; s < 1 << n; ++s)for (int j = s; j >= 0; j = (j - 1)&s) {f[s] = min(f[s], f[j] + f[s ^ j]);//这边就是切割 拼凑if (j == 0)break;}cout << f[(1 << n) - 1];
};signed main() {ios::sync_with_stdio(false);cin.tie(0);cout << fixed << setprecision(15);
#ifdef DEBUGfreopen("../1.in", "r", stdin);
#endif//init_f();//init();//expr();// int T; cin >> T; while(T--)solve();return 0;
}

这篇关于F - Close Group的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1107068

相关文章

matlab读取NC文件(含group)

matlab读取NC文件(含group): NC文件数据结构: 代码: % 打开 NetCDF 文件filename = 'your_file.nc'; % 替换为你的文件名% 使用 netcdf.open 函数打开文件ncid = netcdf.open(filename, 'NC_NOWRITE');% 查看文件中的组% 假设我们想读取名为 "group1" 的组groupName

AI辅助编程里的 Atom Group 的概念和使用

背景 在我们实际的开发当中,一个需求往往会涉及到多个文件修改,而需求也往往有相似性。 举个例子,我经常需要在 auto-coder中需要添加命令行参数,通常是这样的: /coding 添加一个新的命令行参数 --chat_model 默认值为空 实际上这个需求涉及到以下文件列表: /Users/allwefantasy/projects/auto-coder/src/autocoder/auto

一次生产环境大量CLOSE_WAIT导致服务无法访问的定位过程

1.症状 生产环境的一个服务突然无法访问,服务的交互过程如下所示: 所有的请求都是通过网关进入,之后分发到后端服务。 现在的情况是用户服务无法访问商旅服务,网关有大量java.net.SocketTimeoutException: Read timed out报错日志,商旅服务也不断有日志打印,大多是回调和定时任务日志,所以故障点在网关和商旅服务,大概率是商旅服务无法访问导致网关超时。 后

group by 新体会

group by 分组语句中的 select 后面查询的东西,只能是 group by 中的字段或聚合函数,如果含有group by 中的没有的字段,sql 会报错。 表users   例子:  1.select count(1),sex from users group by sex; sql执行正确   2.select count(id),sex from users gr

delphi : 窗体的close,free,destroy的区别

一、我用application.create(TForm2,Form2)语句,创建了Form2,可是调用了Form2.close后,重新调用Form2.show. 刚才所创建的Form2仍然存在。问为了节约资源,应该怎样使用close,free,destroy. 三者的关系是什么? 1、Action:=caFree。 2、 with TForm1.Create(Application) do

初次用用Spring 和mybatis整合的报出Manual close is not allowed over a Spring managed SqlSession错误

一般这种错误是由于没有删dao实现类中的close,因为框架已经帮你写好了

【Mysql】系统服务启动访问报错问题处理:this is incompatible with sql_mode=only_full_group_by

一、背景: 本来已经正常运行的平台,突然有一天由于对服务器进行部分操作迁移,发现jar可以正常启动,但是访问功能一直报错,监控后台日志后,发现了问题: 报错的具体信息如下: Caused by: java.sql.SQLSyntaxErrorException: Expression #1 of SELECT list is not in GROUP BY clause and conta

【codeforces】293E. Close Vertices 点分治+树状数组

传送门:【codeforces】293E. Close Vertices 题目分析:找一棵树上有多少条路径长度不超过l且边权和不超过w的路径。 我们用点分治处理。 分治每一层,对每一个重心,预处理出到重心距离d,边权和为w的所有路径。将路径按照w排序,然后我们用双指针扫描数组,同时维护一个树状数组,树状数组中保存的是到重心距离为d的条数。因为有贡献可能来自子树,于是我们对子树进行同样的

group by和order by

order by  是按字段排序       (排序查询asc升序desc降序) group by  是按字段分类    (分组查询having只能用于group by子句,作用于组内,having条件子句可以直接跟函数表达式)       order by 从英文里理解就是行的排序方式,默认的为升序。 order by 后面必须列出排序的字段名,可以是多个字段名。

docker 启动 wurstmeister/zookeeper出错:be owned by root and not group or world-writable docker zookeep

总有一些意想不到的问题,别的环境都好好的,这个环境就是不行,启动脚本 docker run -d --name zookeeper -p 2181:2181 -t wurstmeister/zookeeper 发现 zookeeper启动后直接退出。查看日志 >> docker logs zookeeper>> /var/run/sshd must be owned by root and