题目

搜索 可行性剪枝

虽然这题目是我搜二分图的标签搜到的

但是n比较小

明显可以暴力

然而只有80分

再加上可行性剪纸就行啦

就是记所有运动员他所能匹配到的最大值、

在我们搜索到第i层的时候

如果他后边的运动员的最大值加起来还比当前已经搜到的最优解还小的话

就把他减掉

Code:

//bao li
#include <cstdio>
#include <iostream>
using namespace std;
const int N = ;
int n, a[N][N], b[N][N], maxn[N], ans;
bool vis[N];
int read() {
int s = , w = ;
char ch = getchar();
while(!isdigit(ch)) {if(ch == '-') w = -; ch = getchar();}
while(isdigit(ch)) {s = s * + ch - ''; ch = getchar();}
return s * w;
}
void dfs(int dep, int w) {
if(dep > n) {ans = max(ans, w); return;}
int sum = ;
for(int i = dep; i <= n; i++) sum += maxn[i];
if(w + sum < ans) return;
for(int i = ; i <= n; i++)
if(!vis[i]) {
vis[i] = ;
dfs(dep + , w + a[dep][i] * b[i][dep]);
vis[i] = ;
}
}
int main() {
n = read();
for(int i = ; i <= n; i++)
for(int j = ; j <= n; j++)
a[i][j] = read();
for(int i = ; i <= n; i++)
for(int j = ; j <= n; j++)
b[i][j] = read();
for(int i = ; i <= n; i++)
for(int j = ; j <= n; j++)
maxn[i] = max(maxn[i], a[i][j] * b[j][i]);
dfs(, );
cout << ans << endl;
return ;
}

谢谢收看, 祝身体健康!

最新文章

  1. Adaboost\GBDT\GBRT\组合算法
  2. JS数组求最大值和最小值
  3. SQL 谜题(硬币的组合)
  4. OpenCASCADE Conic to BSpline Curves-Parabola
  5. windows平台整合Apache与tomcat
  6. SQL触发器实例讲解
  7. Vue 子组件向父组件传参
  8. 浅谈Java泛型之&lt;? extends T&gt;和&lt;? super T&gt;的区别
  9. this computer does not support Intel Virtualization Technology (VT-x) .Haxm can&#39;not be installed
  10. Android 屏幕刷新机制
  11. UE4成批处理透明材质
  12. Error:Failed to resolve: :Base:
  13. webapi快速开发框架
  14. Map不同具体实现类的比较和应用场景的分析
  15. 数论卷积公式and莫比乌斯反演
  16. Spring+Struts+Mybatis+Shiro整合配置
  17. css--纵向margin设置auto和百分数真的无效吗?
  18. 通过分析Ajax请求 抓取今日头条街拍图集
  19. JAVA对URL的解码【转】
  20. java-JProfiler(二)-进行本地JVM的性能监控-tomcat

热门文章

  1. 召唤神龙Ladon强化Cobalt Strike
  2. CI/CD之Gitlab集成Jenkins多分支pipeline实现质量检测和自动发布
  3. 【生活现场】从打牌到map-reduce工作原理解析(转)
  4. Notepad++使用护眼便捷小技巧
  5. WPF 高级篇 MVVM 附加属性
  6. 排序算法Java代码实现(三)—— 插入排序 和 希尔排序
  7. Ipfs基础入门
  8. java虚拟机JVM基础
  9. 线程安全---Day23
  10. SpringIOC源码解析(上)