2019牛客国庆集训派对day3 G排列(状压dp)
一道很好的状压DP,状态是当前的占位情况,排序操作和第21次CSP认证的第四题作用类似。
#include<cstdio>
#include<vector>
#include<algorithm>
using namespace std;
typedef long long ll;
const int N = 1 << 22;
const ll inf = 1e15;
int n, m, x, y;
int num[N], p[22];
ll dp[N];
vector<int> vt[22];
int main(){
for(int i = 1; i < N; ++i) num[i] = num[i - (i & -i)] + 1;
while(scanf("%d%d", &n, &m) != EOF){
for(int i = 0; i < n; ++i) scanf("%d", &p[i]), vt[i].clear();
for(int i = 0; i < (1 << n); ++i) dp[i] = inf;
while(m--){
scanf("%d%d", &x, &y);
vt[x - 1].emplace_back(y - 1);
vt[y - 1].emplace_back(x - 1);
}
dp[0] = 0;
// 按照从小到大的顺序插值,满足绝对值的条件
sort(p, p + n);
// dp[i]代表i表示的位置填充状态的最小值
for(int i = 0; i < (1 << n); ++i){
for(int t = 0; t < n; ++t) if(!(i >> t & 1)){
int cnt = 0;
for(auto &x : vt[t]){
if(i >> x & 1) ++cnt; // 若第x个座位已经被包含,该座位上的值一定小于当前要插的值
else --cnt;
}
dp[i | (1 << t)] = min(dp[i | (1 << t)], dp[i] + 1LL * p[num[i]] * cnt);
}
}
printf("%lld\n", dp[(1 << n) - 1]);
}
return 0;
}
2019牛客国庆集训派对day3 G排列(状压dp)的更多相关文章
- 2019牛客国庆集训派对day3
E. Grid 大意: 给定$n\cdot m$个点的图, 初始无边, $q$个操作, $(1,a,b)$表示第$a$列到第$b$列全连起来, $(2,a,b)$表示把第$a$行到第$b$行全连起来, ...
- 牛客国庆集训派对Day3 G Stones
Stones 思路: sg函数打表找规律 代码: #pragma GCC optimize(2) #pragma GCC optimize(3) #pragma GCC optimize(4) #in ...
- 2019牛客国庆集训派对day3 买一送一
题目链接: 题意:有n个点,n-1条单向边,每个点都销售一类商品 问从点1开始走,买第一样商品类型为x,买第二样商品类型为y,问不同有序对<x,y>的数量 解法: col[i]表示这个点的 ...
- 2019牛客国庆集训派对day5
2019牛客国庆集训派对day5 I.Strange Prime 题意 \(P=1e10+19\),求\(\sum x[i] mod P = 0\)的方案数,其中\(0 \leq x[i] < ...
- 2019 牛客国庆集训派对day1-C Distinct Substrings(exkmp+概率)
链接:https://ac.nowcoder.com/acm/contest/1099/C来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536 ...
- 计算几何板子题【2019牛客国庆集训派对day7——三角形和矩形】【多边形相交的面积】
链接:https://ac.nowcoder.com/acm/contest/1112/J来源:牛客网 题目描述 Bobo 有一个三角形和一个矩形,他想求他们交的面积. 具体地,三角形和矩形由 8 个 ...
- 2019牛客国庆集训派对day7 A 2016
链接:https://ac.nowcoder.com/acm/problem/52800来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536K ...
- 牛客国庆集训派对Day3 I Metropolis
Metropolis 思路: 多源点最短路 只要两个不同源点的最短路相遇,我们就更新两个源点的答案 代码: #pragma GCC optimize(2) #pragma GCC optimize(3 ...
- 牛客国庆集训派对Day3 Solution
A Knight 留坑. B Tree 思路:两次树形DP,但是要考虑0没有逆元 可以用前缀后缀做 #include <bits/stdc++.h> using namespa ...
- 2019牛客国庆集训派对day1
C 存每个值存在的位置,枚举末尾的值,再枚举前面的值,哈希二分出最长相同的,即剩下的为不同的 D \(f_{i,j,k}\)为前i位,最后一个3因子在j,次因子在k G bitset处理有多少位置符合 ...
随机推荐
- .net开发-心情与效率
随着现代科技的不断发展,笔记本电脑已经成为我们日常生活中不可或缺的一部分.然而,在使用笔记本电脑的过程中,我们可能会遇到一些问题,例如显示器闪烁.HDMI接口接触不良等,这些问题不仅会影响我们的工作效 ...
- [nginx]借助nginx实现自动获取本机IP
前言 在用脚本自动化部署应用时,有的应用需要指定本机IP,网上找到的方案大多是过滤ifconfig或者ip命令的结果,这里提供一种通过nginx获取本机ip的方法.大致思路为客户端向nginx发起请求 ...
- 性能监控平台搭建(grafana+telegraf+influxdb) 及 配置 jmeter后端监听
搞性能测试,可以搭建Grafana+Telegraf+InfluxDB 监控平台,监控服务器资源使用率.jmeter性能测试结果等. telegraf: 是一个用 Go 编写的代理程序,可收集系统和服 ...
- 免费拥有自己的 Github 资源加速器
TurboHub 是一个免费的 Github 资源加速下载站点,可以帮助你快速下载 Github 上的资源.其核心逻辑是通过 Azure Static Web Apps 服务和 Azure Funct ...
- 万字长文硬核AQS源码分析
阅读本文前,需要储备的知识点如下,点击链接直接跳转. java线程详解 Java不能操作内存?Unsafe了解一下 一文读懂LockSupport AQS简介 AQS即AbstractQueuedSy ...
- Vuetify使用本地图标资源
Vuetify使用本地图标资源 修改/public/index.html 删除下面两行引用 <link rel="stylesheet" href="https:/ ...
- iOS交叉编译
编译objc程序 ~/toolchain4/pre/bin/arm-apple-darwin9-gcc -arch arm -lobjc -framework CoreFoundation -fram ...
- C# MySqlHelp类 "DbModel.MySql"数据库操作类
以前做易语言/PHP的. 最近刚入门C#, 就简单的封装了一个类库, 边学边玩才容易学到东西嘛, 比起sqlserver, 我还是觉得mysql更加有亲切感; 于是模仿ThinkPHP编写了一个&qu ...
- 解密网络通信的关键技术(上):DNS、ARP、DHCP和NAT,你了解多少?
IP 协议相关技术 在与 IP 协议相关的技术中,有一些重要且常见的技术,其中包括 DNS 域名解析.ARP 协议.DHCP 动态获取 IP 地址以及NAT 网络地址转换.这些技术在网络通信中起着关键 ...
- TTS背后的技术原理——前端和后端系统
就解锁了一个温柔又风趣的「女朋友」萨曼萨.不过,在现实生活中,和语音助手谈恋爱还是一件十分遥远的事情--刨去现阶段的语音助手们双商水平还有限,语音助手的语言表达能力还远远达不到我们理想状态. ...