Description

Input

Output

Sample Input

5
4 5 0 2
1 3 7
2 0
4

Sample Output

4

Data Constraint

Solution

这题真是一道“神神奇奇”的暴力题,我的做法理论时间复杂度 O(2N),N≤300O(2^N),N\leq300 。

  • 你一定会惊讶,这都能过?没错,神奇的优化能使程序跑得飞快!

  • 设递归到第 xx 种心块,两瓣心的陌生度分别为 v1,v2v1,v2 ,当前最优答案为 ansans 。

  • 那么显然有优化①:当 v1+v2>=ansv1+v2>=ans 时退出(因为之后答案只会更大,不会更优了)。

  • 其实对于递归心块的顺序,应该产生陌生度越多的越先加入,因为更快执行优化①,剪枝很多。

-于是我们对于加入的边的大小从大到小排一遍序,使较大边的两端点先加入——优化②。

  • 这样结合优化①和优化②,在随机数据下表现优良,实测 20ms20ms ,秒过本题。

Code

#include<cstdio>
#include<algorithm>
using namespace std;
const int N=301;
struct data
{int x,y,z;
}a[N*N];
int n,tot,ans=2e9;
int f[N],g[N],h[N],d[N][N];
bool bz[N];
inline int read()
{int X=0,w=1; char ch=0;while(ch<'0' || ch>'9') {if(ch=='-') w=-1;ch=getchar();}while(ch>='0' && ch<='9') X=(X<<3)+(X<<1)+ch-'0',ch=getchar();return X*w;
}
inline bool cmp(data x,data y)
{return x.z>y.z;
}
inline int max(int x,int y)
{return x>y?x:y;
}
inline void dfs(int x,int v1,int v2)
{if(v1+v2>=ans) return;if(x>n){ans=v1+v2;return;}int mx=v1;for(int i=1;i<=f[0];i++) mx=max(mx,d[f[i]][h[x]]);f[++f[0]]=h[x];dfs(x+1,mx,v2);f[f[0]--]=0;mx=v2;for(int i=1;i<=g[0];i++) mx=max(mx,d[g[i]][h[x]]);g[++g[0]]=h[x];dfs(x+1,v1,mx);g[g[0]--]=0;
}
int main()
{n=read();for(int i=1;i<=n;i++)for(int j=1;j<=n-i;j++){d[i][i+j]=d[i+j][i]=a[++tot].z=read();a[tot].x=i,a[tot].y=i+j;}sort(a+1,a+1+tot,cmp);for(int i=1;i<=tot;i++){if(!bz[a[i].x]) bz[h[++h[0]]=a[i].x]=true;if(!bz[a[i].y]) bz[h[++h[0]]=a[i].y]=true;}dfs(1,0,0);printf("%d",ans);return 0;
}

JZOJ 5386. 【NOIP2017提高A组模拟9.23】碎相关推荐

  1. JZOJ 5385. 【NOIP2017提高A组模拟9.23】Carry

    Description Input Output Sample Input 7 7 155 2 1 260 3 2 904 4 2 360 5 2 230 6 5 247 7 5 501 1 3 6 ...

  2. JZOJ 5384. 【NOIP2017提高A组模拟9.23】四维世界

    Description 众所周知,我们常感受的世界是三维的. Polycarp突然对四维空间产生了兴趣,他想对四维空间进行一些研究.但是在此之前,他必须先对三维世界了解透彻. 于是Polycarp决定 ...

  3. 5331. 【NOIP2017提高A组模拟8.23】壕游戏 费用流 动态连边

    题意:n个点m条边,每条边有一个经过次数限制ci,假设经过了x次,第x次费用为ai*x+bi,有s个终点,要跑k次,问最小总费用多少. 巨鬼畜,连边只按照第一次的连,然后费用流的时候每流一条边然后再连 ...

  4. jzoj5331 【NOIP2017提高A组模拟8.23】壕游戏

    题面 分析 这题面tmd太有迷惑性了,比赛的时候完全没有想到费用流. 考虑到k只有200,尝试费用流(思想类似可撤销贪心? ) 一次一次增广,每次spfa能跑过去. 每走过一条边,给他的边更新一下贡献 ...

  5. JZOJ 5372. 【NOIP2017提高A组模拟9.17】猫

    Description 信息组最近猫成灾了!隔壁物理组也拿猫没办法.信息组组长只好去请神刀手来帮他们消灭猫.信息组现在共有n 只猫(n 为正整数),编号为1 到n,站成了一个环,第i 只猫的左边是第i ...

  6. JZOJ 5392. 【NOIP2017提高A组模拟10.5】Lucky Transformation

    Description Input Output Sample Input 7 2 2343223 4 1 2234 Sample Output 2243233 2334 Data Constrain ...

  7. JZOJ 5371. 【NOIP2017提高A组模拟9.17】组合数问题

    Description 定义"组合数"S(n,m)代表将n 个不同的元素拆分成m 个非空集合的方案数.举个例子,将{1,2,3}拆分成2 个集合有({1},{2,3}),({2},{1,3}),({3 ...

  8. JZOJ 100047. 【NOIP2017提高A组模拟7.14】基因变异

    Description 21 世纪是生物学的世纪,以遗传与进化为代表的现代生物理论越来越多的 进入了我们的视野. 如同大家所熟知的,基因是遗传因子,它记录了生命的基本构造和性能. 因此生物进化与基因的 ...

  9. JZOJ 100041. 【NOIP2017提高A组模拟7.12】列车调度

    Description Input Output Sample Input Sample1: 3 1 2 3 Sample2: 9 1 3 2 4 8 6 9 5 7 Sample Output Sa ...

最新文章

  1. Sublime Text 菜单栏消失问题
  2. leetcode刷题之树(1)
  3. 冲压模板自动标注LISP_干货满满!超实用冲压模具资料,加薪必看!
  4. 简单博弈论总结加例题解析
  5. 小米不加入鸿蒙,是华为不给小米用鸿蒙,还是小米拒绝使用鸿蒙?
  6. python中file和open_Python中的file和open简述
  7. java线程wait_Java 并发编程:线程间的协作(wait/notify/sleep/yield/join)
  8. mysql innodb_data_file_path_应急预案:专有云V3环境中RDS MySQL5.7实例修改innodb_temp_data_file_path参数的方法...
  9. LaTeX插入图片时,图总是置顶的解决办法
  10. python数字右对齐_python怎么让数字右对齐?
  11. c语言大作业宿舍管理系统,数据库大作业——学生宿舍管理系统
  12. 头条小程序服务器设置,今日头条小程序如何注册申请
  13. 超声波测距 c语言程序流程图,超声波测距单片机C程序+原理图+PCB源文件
  14. 回文数例子,在10000以内每求出5个回文数,就进行换行操作.
  15. Synopsys系列工具的基本概念
  16. Vue的计算属性computed和监听属性watch
  17. L2-016 愿天下有情人都是失散多年的兄妹 (25 分)(C语言)(并查集)(dfs)(测试点坑)
  18. 【自然语言处理】ChatGPT 相关核心算法
  19. 系统架构师考试-案例
  20. sip pbx_PBX免费CRM

热门文章

  1. R:ggplot2可视化(1)
  2. 众核多计算模式系统的构建 - 全文
  3. 关于栈的理解(读书笔记)
  4. [转]FFT倒序算法—雷德算法
  5. mysql 优化300例_PHP+MySQL实现对一段时间内每天数据统计优化操作实例
  6. 云炬创业政策学习笔记20210113
  7. 基于暗通道优先算法的去雾应用Matlab
  8. Warning: Link to vtkInteractionStyle for default style selection的解决办法
  9. VTK修炼之道19:图像基本操作_图像像素值的访问与修改
  10. C/C++中Static的作用详述 在C语言中,static的字面意思很容易把我们导入歧途,其实它的作用有三条。