首页 > 其他分享 >DPU Grouping

DPU Grouping

时间:2023-11-23 09:46:05浏览次数:36  
标签:DPU int Grouping long array include getchar

题意

给定 \(n\) 个物品,任意分组,\(i\) 与 \(j\) 物品在同一组贡献为 \(a_{i, j}\)。

求最大贡献。\(n \le 16\)。

Sol

考虑状压 \(f_i\) 表示 \(i\) 集合的最大贡献。

注意到枚举最后一个选的数不好转移,考虑用一个集合转移到另一个集合。

子集枚举即可。

复杂度 \(3^n\)。

Code

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <array>
#define int long long
using namespace std;
#ifdef ONLINE_JUDGE

#define getchar() (p1 == p2 && (p2 = (p1 = buf) + fread(buf, 1, 1 << 21, stdin), p1 == p2) ? EOF : *p1++)
char buf[1 << 23], *p1 = buf, *p2 = buf, ubuf[1 << 23], *u = ubuf;

#endif
int read() {
	int p = 0, flg = 1;
	char c = getchar();
	while (c < '0' || c > '9') {
		if (c == '-') flg = -1;
		c = getchar();
	}
	while (c >= '0' && c <= '9') {
		p = p * 10 + c - '0';
		c = getchar();
	}
	return p * flg;
}
void write(int x) {
	if (x < 0) {
		x = -x;
		putchar('-');
	}
	if (x > 9) {
		write(x / 10);
	}
	putchar(x % 10 + '0');
}
const int N = 21, M = 1e6 + 5;
array <array <int, N>, N> G;
array <int, M> f, g;
signed main() {
	int n = read();
	for (int i = 1; i <= n; i++)
		for (int j = 1; j <= n; j++)
			G[i][j] = read();
	for (int T = 0; T < 1 << n; T++) {
		for (int i = 1; i <= n; i++) {
			for (int j = 1; j <= i; j++) {
				if (!(T & (1 << (i - 1))) || !(T & (1 << (j - 1)))) continue;
				g[T] += G[i][j];
			}
		}
	}
	for (int T = 0; T < 1 << n; T++) {
		f[T] = g[T];
		for (int P = (T - 1) & T; P; P = (P - 1) & T)
			f[T] = max(f[T], f[T ^ P] + f[P]);
	}
	write(f[(1 << n) - 1]), puts("");
	return 0;
}

标签:DPU,int,Grouping,long,array,include,getchar
From: https://www.cnblogs.com/cxqghzj/p/17850857.html

相关文章

  • 【论文阅读笔记】【OCR-文本检测】 Few Could Be Better Than All: Feature Sampling
    CVPR2022读论文思考的问题论文试图解决什么问题?一些基于DETR的方法在ICDAR15,MLT17等文字尺度变化范围较大的数据集上文本检测的效果不佳DETR运用的高层特征图难以捕捉小文字的特征,且会引入很多无关的背景噪声,增加了检测的困难程度即使使用DETR的改进模型......
  • Java 通过collectors.groupingBy根据某个字段统计
    要使用Collectors.groupingBy根据某个字段统计,你可以通过提供一个函数来指定分组的条件。假设你有一个包含Person对象的列表,每个对象都有age字段表示年龄,你想要根据年龄分组,并统计每个年龄组的人数。以下是一个使用Collectors.groupingBy的示例代码:importjava.util.Arrays;imp......
  • Java 使用`Collectors.groupingBy`计算百分比
    要使用Collectors.groupingBy计算百分比,你需要先对数据进行分组,然后计算每个组内元素的百分比。假设你有一个包含整数的列表,你想要按照它们的奇偶性进行分组,并计算每个组内元素的百分比。以下是一个使用Collectors.groupingBy和自定义收集器的示例代码:importjava.util.Arrays;......
  • 集众力、汇众智,2023 中国计算机大会 DPU技术论坛成功举办
    以“发展数字基础设施、支撑数字中国建设”为主题的第二十届中国计算机大会(CNCC2023)10月26日在沈阳启幕,约1.3万名计算机行业专业人士齐聚沈阳,据组委会介绍参加本届大会的院士多达49位。中科驭数在大会中组织的DPU技术论坛以“大算力需求背景下,DPU芯片应用实践和解决方案探索”为主......
  • MapReduce自定义GroupingComparator
    需求:有如下订单明细数据0000001 01 222.80000002 06 722.40000001 05 25.80000003 01 222.80000003 01 33.80000002 03 522.80000002 04 122.4第一列是订单编号,第二列是商品id,第三列是商品金额,列与列之间用制表符分隔。现在需要求出每一个订单中最贵的商品。思路:将订单id和商......
  • What Is a DPU?
    一、Wikipedia介绍Adataprocessingunit(DPU)isaprogrammablecomputerprocessorthattightlyintegratesageneral-purposeCPUwithnetworkinterfacehardware.Sometimestheyarecalled"IPUs"(for"infrastructureprocessingunit")or&......
  • USB适配器应用芯片 国产GP232RL软硬件兼容替代FT232RL DPU02直接替代CP2102
    USB适配器,是英文UniversalSerialBus(通用串行总线)的缩写,而其中文简称为“通串线”,是一个外部总线标准,用于规范电脑与外部设备的连接和通讯。是应用在PC领域的接口技术,移动PC由于没有电池,电源适配器对其尤为重要。今天来讲讲USB适配器的国产适用芯片。一、GP232RL,直接软硬件......
  • 构筑下一代数据中心互联的“超级高速公路”,中科驭数正式发布KPU FLEXFLOW®-2100R RDM
    2023服贸会期间,中科驭数重磅推出最新自研的高性能网络“利器”——KPUFLEXFLOW®-2100RRDMA加速DPU卡。这款产品的发布标志着中科驭数在高性能计算和数据中心领域的不断创新,旨在面向高速网络、高性能存储搭建起算力集群内部通信的"超级高速公路”,助力高性能计算领域创新。站在数......
  • 天翼云加速落地紫金DPU实践应用,让算力供给更高效!
    近日,以“智驱创新·芯动未来”为主题的第三届DPU峰会在北京成功举办。会上,天翼云凭借紫金DPU在架构革新、算力释放、场景落地等多方面的成果,荣膺“2023芯星品牌奖”,技术实力与品牌影响力再获行业认可。天翼云科技有限公司基础架构事业部高/级产品经理雷晓龙在技术生态论坛发表了题......
  • DPU替代网络可视化专用设备实现业务报文深度处理
    网络可视化中的深度业务处理网络可视化场景中,通常需要将采集过来的数据经过深度业务处理后再交给后端分析系统。这些深度业务处理功能包括:传统的深度业务处理通常由带CPU的框式设备完成,但框式设备成本高、功耗大、扩展不够灵活的种种给客户带来了极大的困扰。DPU算力的池化应用Heli......