当前位置: 首页 > news >正文

注册网站合集网站建设平台软件

注册网站合集,网站建设平台软件,天津电商网站开发,武汉做网站及logo的公司https://cn.vjudge.net/problem/HDU-4085 给你n,m,k ,分别表示有n个点,m条边,每条边有一个权值,表示修复这条边需要的代价 从前k个点中任取一个使其和后k个点中的某一个点,通过边连接,并且必须是一一对应&a…

https://cn.vjudge.net/problem/HDU-4085

给你n,m,k ,分别表示有n个点,m条边,每条边有一个权值,表示修复这条边需要的代价

从前k个点中任取一个使其和后k个点中的某一个点,通过边连接,并且必须是一一对应,问最小的代价是多少。

先用斯坦纳树模板求出f[i][1<<k]    然后用dp[i]表示所有点为根的情况下连通状态为i的最小花费

这样我们就可以从1dp到1<<k得到答案 注意dp之前要先判总状态是否合法 再判子集是否合法 最后再进行dp更新

#include<bits/stdc++.h>
#define N 6003
#define inf 1000000000
using namespace std;
int n, m, k, tot;
int point[N], next1[N], v[N], len[N];
int f[53][(1 << 11)], mi[20], can[N], dp[(1 << 11)];
queue<int> p;
void add(int x, int y, int z) {tot++;next1[tot] = point[x];point[x] = tot;v[tot] = y;len[tot] = z;tot++;next1[tot] = point[y];point[y] = tot;v[tot] = x;len[tot] = z;
}
void spfa(int sta) {while (!p.empty()) {int now = p.front();p.pop();for (int i = point[now]; i; i = next1[i]) {if (f[v[i]][sta] > f[now][sta] + len[i]) {f[v[i]][sta] = f[now][sta] + len[i];if (!can[v[i]]) {can[v[i]] = 1;p.push(v[i]);}}}can[now] = 0;}
}
bool check(int sta) { //判断当前的状态是否满足一一对应关系int ans = 0;for (int i = 0; i < k; i++) {if (sta & (1 << i))ans++;if (sta & (1 << (i + k)))ans--;}return (ans == 0);
}
int main() {int t;scanf("%d", &t);mi[0] = 1;for (int i = 1; i <= 11; i++)mi[i] = mi[i - 1] * 2;for (int T = 1; T <= t; T++) {scanf("%d%d%d", &n, &m, &k);tot = 0;memset(point, 0, sizeof(point));memset(next1, 0, sizeof(next1));for (int i = 1; i <= m; i++) {int x, y, z;scanf("%d%d%d", &x, &y, &z);add(x, y, z);}for (int i = 1; i <= n; i++)for (int j = 0; j < mi[10]; j++)f[i][j] = inf;for (int i = 1; i <= k; i++)f[i][mi[i - 1]] = 0;int t = k;for (int i = n - k + 1; i <= n; i++)f[i][mi[t]] = 0, t++;for (int sta = 1; sta < mi[t]; sta++) {for (int i = 1; i <= n; i++) {for (int s = sta & (sta - 1); s; s = sta & (s - 1)) {int t = f[i][sta - s] + f[i][s];f[i][sta] = min(f[i][sta], t);}if (f[i][sta] != inf)p.push(i), can[i] = 1;}spfa(sta);}for (int sta = 1; sta < mi[t]; sta++) {dp[sta] = inf;for (int i = 1; i <= n; i++)dp[sta] = min(dp[sta], f[i][sta]);}for (int sta = 1; sta < mi[t]; sta++)if (check(sta))for (int s = sta & (sta - 1); s; s = sta & (s - 1))if (check(s))dp[sta] = min(dp[sta], dp[s] + dp[sta - s]);if (dp[mi[t] - 1] == inf)printf("No solution\n");elseprintf("%d\n", dp[mi[t] - 1]);}
}
View Code

 

转载于:https://www.cnblogs.com/Aragaki/p/10989578.html

http://www.lbrq.cn/news/2345887.html

相关文章:

  • 京东商城商务网站建设目的个人开发app去哪里接广告
  • 怎么做网站的内部链接seo评测论坛
  • 去除wordpress活动及新闻seo的优化步骤
  • php自己写框架做网站seo网站关键词排名快速
  • 西安网站建设设计b2b平台运营模式
  • iis怎么使用来建设一个网站重庆网站seo服务
  • 深圳市律师网站建设怎么样自己做网站设计制作
  • 网站建设方案书的内容管理制度百度移动seo首选帝搜软件
  • 淘宝客建立网站推广怎么做佛山市seo推广联系方式
  • 网站建设的好处有什么用网络营销的企业有哪些
  • 视频直播网站怎么做sem是什么意思中文
  • 建设局入市备案后到哪个网站可查询百度问答优化
  • 数码网站模板关键词你们都搜什么
  • 西安疫情最新消息今天又封了重庆seo优
  • 如何在WordPress添加内容怎样优化网站
  • 网站开发备案需要什么百度移动首页
  • 企业seo推广的绝密诀窍曝光嘉兴seo外包公司
  • wp建站模板广州企业网站seo
  • python做网站性能怎么在百度发布免费广告
  • 建一个鲜花买卖网站多少钱短视频矩阵seo系统源码
  • wordpress 5.0文章编辑教程北京网站优化外包
  • 怎么做自己的网购网站seo线下培训机构
  • 司法局网站开发方案5118营销大数据
  • 惠州网站建设效果深圳网络推广软件
  • 百斯特网站建设百度安全中心
  • 湘潭网站建设公司企业门户网站的设计与实现
  • 网站开发要用到的工具软文营销的定义
  • 中小型网站建设方案输入搜索内容
  • wordpress修改内容广州排前三的seo公司
  • 网站建设维护工作推广网
  • QT——QComboBox组合框控件
  • SSM框架学习DI入门——day2
  • 设计模式(行为型)-迭代器模式
  • 事物生效,订单类内部更新订单
  • Linux(Ubuntu)硬盘使用情况解析(已房子举例)
  • 技嘉UEFI固件SMM漏洞使系统面临固件植入和持久控制风险