题意:给定一个完全图,现在要求将这个图划分成两个部分,求两个部分的点做笛卡尔积之后的点对的距离和最大值是多少。

解法一:由于给定的点最多只有20个,所以直接2^N*O(n)的时间复杂度枚举即可。

解法二:采用随机化算法,枚举某一个点,将这个点所属于的集合进行翻滚。

代码如下:

#include <cstdlib>
#include <cstring>
#include <cstdio>
#include <iostream>
using namespace std;int N, G[25][25];int cal(int x) {int A[25], B[25], ca = 0, cb = 0, ret = 0;for (int i = 0; i < N; ++i) {if (x & (1 << i)) {A[ca++] = i + 1;} else {B[cb++] = i + 1;    }}for (int i = 0; i < ca; ++i) {for (int j = 0; j < cb; ++j) {ret += G[A[i]][B[j]];}    }return ret;
}int main() {int ret;while (scanf("%d", &N) == 1) {ret = 0;for (int i = 1; i <= N; ++i) {for (int j = 1; j <= N; ++j) {scanf("%d", &G[i][j]);}} // 对给定信息进行存储int mask = (1 << N) - 1;for (int i = 1; i < mask; ++i) {ret = max(ret, cal(i));}printf("%d\n", ret);}return 0;
}

下面这个随机化代码G++过不了,不知道为什么。

#include <cstdlib>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <ctime>
#include <map>
using namespace std;
// 由于问题的规模相对较小
// 可以使用随机化算法来解决这个问题 int N, G[30][30];int randtime = 200000;int A[30];void MoveAToB(int x, int &t) {A[x] = 0;for (int i = 1; i <= N; ++i) {if (A[i]) t += G[x][i];else t -= G[x][i];}
}void MoveBToA(int x, int &t) {A[x] = 1;for (int i = 1; i <= N; ++i) {if (!A[i]) t += G[x][i];else t -= G[x][i];}
}int randpro() {int rd, ret = 0, t = 0;for (int i = 0; i < randtime; ++i) {rd = rand() % N + 1; // 得到一个点,这个点被if (A[rd]) { // 说明在A集合
            MoveAToB(rd, t);} else {  // 说明在B集合
            MoveBToA(rd, t);}ret = max(ret, t);}return ret;
}int main() {srand(time(NULL));while (scanf("%d", &N) == 1) {for (int i = 1; i <= N; ++i) {for (int j = 1; j <= N; ++j) {scanf("%d", &G[i][j]);}}for (int i = 1; i <= N; ++i) {A[i] = 1; // 先假设所有的元素都是属于第一个集合
        }printf("%d\n", randpro());}    return 0;
}

转载于:https://www.cnblogs.com/Lyush/archive/2012/11/19/2777998.html

POJ-2531 Network Saboteur 枚举||随机化相关推荐

  1. 【割边缩点】解题报告:POJ - 3694 - Network(Tarjan割边缩点 + LCA + 并查集优化)

    POJ - 3694 - Network 给定一张N个点M条边的无向连通图,然后执行Q次操作,每次向图中添加一条边,并且询问当前无向图中"桥"的数量.N≤105,M≤2∗105,Q ...

  2. POJ 1236 Network of Schools(强连通 Tarjan+缩点)

    POJ 1236 Network of Schools(强连通 Tarjan+缩点) ACM 题目地址:POJ 1236 题意:  给定一张有向图,问最少选择几个点能遍历全图,以及最少加入�几条边使得 ...

  3. poj 2531(dfs)

    题目链接:http://poj.org/problem?id=2531 思路:由于N才20,可以dfs爆搞,枚举所有的情况,复杂度为2^(n). 1 #include<iostream> ...

  4. [tarjan] poj 1236 Network of Schools

    主题链接: http://poj.org/problem?id=1236 Network of Schools Time Limit: 1000MS   Memory Limit: 10000K To ...

  5. POJ 1753 位运算+枚举

    题意: 给出4*4的棋盘,只有黑棋和白棋,问你最少几步可以使棋子的颜色一样. 游戏规则是:如果翻动一个棋子,则该棋子上下左右的棋子也会翻一面,棋子正反面颜色相反. 思路: 都是暴搜枚举. 第一种方法: ...

  6. poj 3369 Grocery store 枚举

    题意: 求a,b,c,d满足a+b+c+d==a*b*c*d<=20 a,b,c,d要求的精度是小数点后2位. 分析: 本地打表后可以适当减小枚举范围,否则超时. 代码: //poj 3369 ...

  7. POJ 1236 Network of Schools(tarjan)

    Network of Schools Description A number of schools are connected to a computer network. Agreements h ...

  8. POJ - 1236 Network of Schools

    A number of schools are connected to a computer network. Agreements have been developed among those ...

  9. POJ 1144 Network(无向图连通分量求割点)

    题目地址:POJ 1144 求割点.推断一个点是否是割点有两种推断情况: 假设u为割点,当且仅当满足以下的1条 1.假设u为树根,那么u必须有多于1棵子树 2.假设u不为树根.那么(u,v)为树枝边. ...

最新文章

  1. Android之LinearLayout布局下怎么让按钮固定在底部
  2. python websocket例程_python 实现websocket
  3. 搭建Qt 5.3.1 for Windows Phone 8开发环境
  4. SAP系统中在发布了webservice,获得了WSDN地址后,外部系统怎么传数据到SAP?
  5. tdd java_Java TDD简介–第1部分
  6. mysql5建函数报1064错误,MySQL存储函数创建错误ERROR 1064和1327
  7. CentOS下Composer的安装和使用
  8. webbrowser 访问iframe拒绝访问_Win10系统下Documents and Settings系统文件夹拒绝访问解决方法...
  9. RabbitMQ消费端自定义监听器DefaultConsumer
  10. win10初始化这台电脑——找不到恢复环境
  11. wps指定路径不存在怎么办_wps临时目录不存在提示该如何解决?
  12. 研发大局观(15.8.25 )
  13. 【前端前沿看点】React和Vue深度对比
  14. 未知USB设备(设备描述符请求失败)解决方法之一
  15. electron之坑addon
  16. 亚马逊云计算服务将支持甲骨文数据库
  17. 30天打造专业红客四
  18. 用于清理系统垃圾的batch文件
  19. 《Linux运维总结:内网服务器通过代理访问外网服务器(方法一)》
  20. [opencv] BF匹配器和Flann匹配器

热门文章

  1. mxonline实战3,编写首页及用户登录页面1
  2. RX学习笔记:正则表达式
  3. break 与continue 语句
  4. uestc 250 windy数(数位dp)
  5. 应用化学:顺式丁烯醛与反式丁烯醛的网络
  6. 用于计算机视觉领域的python第三方库是什么_大量Python开源第三方库资源分类整理,含菜鸟教程章节级别链接...
  7. html 屏蔽蓝色电话,html – 在Chrome扩展程序中停用文字字段蓝色突出显示?
  8. php oauth 服务端,OAuth 2.0 PHP客户端和服务器示例
  9. 【STM32】窗口看门狗 WWDG 实验代码详解
  10. java各种包的用途