题目链接:http://codeforces.com/contest/431/problem/B

题目意思:给出5 * 5 的矩阵。从这个矩阵中选出合理的安排次序,使得happiness之和最大。当第i个人和第j个人talk 的时候,第i个人获得的happiness是g[i][j],第j 个人获得的happiness是g[j][i]。

好简单的一道题目,不知道昨晚徘徊好久都不敢打,五个for循环即可!数据量这么小......今天一次就过了...

谨以此来纪念自己的怯懦....

方法一:直接暴力枚举

 #include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
using namespace std; #define LL long long
int g[][];
LL ans; int main()
{
for (int i = ; i <= ; i++)
{
for (int j = ; j <= ; j++)
scanf("%d", &g[i][j]);
}
ans = ;
for (int i = ; i <= ; i++)
{
for (int j = ; j <= ; j++)
{
if (i != j)
{
for (int k = ; k <= ; k++)
{
if (k != j && k != i)
{
for (int l = ; l <= ; l++)
{
if (l != k && l != i && l != j)
{
for (int p = ; p <= ; p++)
{
if (p != l && p != i && p != j && p != k)
{
// printf("i = %d, j = %d, k = %d, l = %d, p = %d\n", i, j, k, l, p);
LL sum = g[i][j] + g[j][i] + g[j][k] + g[k][j] + * (g[l][p] + g[p][l] + g[k][l] + g[l][k]);
ans = max(ans, sum);
}
}
}
}
}
}
}
}
}
printf("%lld\n", ans);
return ;
}

方法二:利用next_permutation (学人家代码写的)

 #include <iostream>
#include <cstdio>
#include <cstdlib>
#include <algorithm>
using namespace std; #define LL long long
const int maxn = ;
int grid[maxn+][maxn+];
int t[maxn];
LL ans, tmp; int main()
{
for (int i = ; i < maxn; i++)
{
for (int j = ; j < maxn; j++)
scanf("%d", &grid[i][j]);
}
for (int i = ; i < maxn; i++)
t[i] = i;
ans = ;
do
{
//0123: 01 talk 23 talk
tmp = grid[t[]][t[]] + grid[t[]][t[]];
tmp += grid[t[]][t[]] + grid[t[]][t[]];
//1234: 12 talk 34 talk
tmp += grid[t[]][t[]] + grid[t[]][t[]];
tmp += grid[t[]][t[]] + grid[t[]][t[]];
//23: 23 talk
tmp += grid[t[]][t[]] + grid[t[]][t[]];
//34: 34 talk
tmp += grid[t[]][t[]] + grid[t[]][t[]]; ans = max(ans, tmp);
}while (next_permutation(t, t+maxn));
printf("%lld\n", ans);
return ;
}

最新文章

  1. webapp图片懒加载实现
  2. Jquery实现AJAX拦截
  3. JDBC的增删改写成一个方法,调用一个工具类
  4. LGLAlertView 提示框
  5. iOS学习笔记之Category
  6. [Design Pattern] Proxy Pattern 简单案例
  7. 用CALayer实现聚光灯效果
  8. openNebula rgister img instance vms error collections
  9. Xcode自带iOS测试方法
  10. Linux - crontab的创建以及注意事项
  11. Android studio 2 版本升级 Android studio 3 版本注意事项
  12. C++入门笔记(一)零碎基础知识
  13. java 括号匹配 成对
  14. c/c++ 标准顺序容器 容器的访问,删除 操作
  15. TortoiseGit使用笔记
  16. React 设计思想
  17. json的循环
  18. 设计模式--责任链模式C++实现
  19. onerror=&quot;javascript:this.src=&#39;images/defaultUpload.png&#39;;&quot;引发的死循环错误
  20. DBDB的维护和管理

热门文章

  1. ajaxpro实现无刷新更新数据库【简单方法】
  2. msp430入门学习43
  3. linux下eth0 lo wlan0
  4. 解密优秀博士成长史 ——微软亚洲研究院首届博士生学术论坛Panel讨论经验总结
  5. 【Todo】git的fast forward &amp; git命令学习 &amp; no-ff
  6. 【Todo】ES6学习
  7. Linux驱动基础开发
  8. C/C++中static关键字作用总结 &amp;&amp; 指针与引用的比较
  9. 零基础学python-5.9 集合set
  10. 安卓2.3 js解析问题 split()