计蒜客 31436 - 提高水平 - [状压DP]
题目链接:https://nanti.jisuanke.com/t/31436
作为一名车手,为了提高自身的姿势水平,平时的练习是必不可少的。小 J 每天的训练包含 $N$ 个训练项目,他会按照某个顺序依次练习这些项目。出于一些玄妙的原因,训练的效果跟项目的顺序有着很大关系。当项目 $i$ 被安排在项目 $j$ 之前进行训练,小 J 会获得 $a_{i,j}$ 的熟练度,否则他会获得 $a_{j,i}$ 的熟练度。为了使训练效果尽可能好,小 J 希望这 $\frac{N(N-1)}2$ 对项目的熟练度之和达到最大。请你帮助小 J 确定训练的顺序,使得他获得的总熟练度尽可能大。
输入格式
输入第一行包含一个正整数 $N$。接下来 $N$ 行每行包含 $N$ 个整数,其中第 $i+1$ 行的第 $j$ 个数表示 $a_{i,j}$,保证 $a_{i,i}=0$
输出格式
输出一个整数表示最大总熟练度。
数据规模
对于 40% 的数据:$N \leq 8$;
对于 70% 的数据:$N \leq 15$;
对于 100% 的数据:$N\leq 20,0\leq a_{i,j} \leq 10000$;
输出时每行末尾的多余空格,不影响答案正确性
要求使用「文件输入输出」的方式解题,输入文件为 proficiency.in,输出文件为 proficiency.out
样例输入
3
0 2 4
3 0 2
1 3 0
样例输出
9
题目来源
计蒜客 NOIP 提高组模拟竞赛第一试
题解:
状压DP水题。
时间复杂度 $O(2^N N^2)$
AC代码:
#include<bits/stdc++.h>
using namespace std;
const int maxn=; int n,a[maxn][maxn];
int dp[<<maxn];
int main()
{
freopen("proficiency.in","r",stdin);
freopen("proficiency.out","w",stdout); cin>>n;
for(int i=;i<=n;i++) for(int j=;j<=n;j++) cin>>a[i][j]; memset(dp,,sizeof(dp));
for(int sta=;sta<(<<n);sta++)
{
for(int i=;i<=n;i++)
{
if(sta&(<<(i-))) continue;
int nxt=sta|(<<(i-));
int sum=;
for(int j=;j<=n;j++) if(sta&(<<(j-))) sum+=a[j][i];
dp[nxt]=max(dp[nxt],dp[sta]+sum);
}
}
cout<<dp[(<<n)-]<<endl;
}
计蒜客 31436 - 提高水平 - [状压DP]的更多相关文章
- 计蒜客 30994 - AC Challenge - [状压DP][2018ICPC南京网络预赛E题]
题目链接:https://nanti.jisuanke.com/t/30994 样例输入: 5 5 6 0 4 5 1 1 3 4 1 2 2 3 1 3 1 2 1 4 样例输出: 55 样例输入: ...
- 计蒜客 NOIP 提高组模拟竞赛第一试 补记
计蒜客 NOIP 提高组模拟竞赛第一试 补记 A. 广场车神 题目大意: 一个\(n\times m(n,m\le2000)\)的网格,初始时位于左下角的\((1,1)\)处,终点在右上角的\((n, ...
- 2019计蒜客信息学提高组赛前膜你赛 #2(TooYoung,TooSimple,Sometimes Naive
计蒜客\(2019CSP\)比赛第二场 巧妙爆零这场比赛(我连背包都不会了\(QWQ\) \(T1\) \(Too\) \(Young\) 大学选课真的是一件很苦恼的事呢! \(Marco\):&qu ...
- 计蒜客NOIP2017提高组模拟赛(三)day2-直线的交点
传送门 简单几何+逆序对 发现当两条直线甲乙与平板的交点在上面甲在较左的位置,那么下面甲在较右的位置就可以相交 然后把上面的位置排下序,下面离散化+树状数组即可 #include<cstdio& ...
- 计蒜客NOIP2017提高组模拟赛(五)day1-展览
传送门 发现这题选或不选对状态的优劣程度不会产生影响,如果已经确定了两个数a和b,那么最优的首项和公比也都是唯一确定的, 与对于后面的数x,加进去也好不加进去也好,首项和公比依旧是原来的 于是我们用尺 ...
- 计蒜客NOIP2017提高组模拟赛(五)day1-机智的 AmyZhi
传送门 很水的题目啦QAQ #include<cstdio> #include<cstdlib> #include<algorithm> #include<c ...
- 计蒜客NOIP2017提高组模拟赛(五)day2-蚂蚁搬家
传送门 这题可以用线段树来维护 #include<cstdio> #include<cstdlib> #include<algorithm> #include< ...
- 计蒜客NOIP2017提高组模拟赛(五)day2-成绩统计
传送门 用hash,因为map的复杂度可能在这题中因为多一个log卡掉,但是hash不会 可能因为这个生成的随机数有循环的情况,不是完全均匀的 而且这题hash表的长度也可以开的很大 #include ...
- 计蒜客NOIP2017提高组模拟赛(三)day2-数三角形
传送门 这题有点坑啊 设A为两边颜色不同的角,B为两边颜色相同的角 那么考虑三种三角形:异色,同色,其他 对于任何一个异色三角形,一定会有三个颜色不同的角, 对于任何一个同色三角形,一定会有零个颜色不 ...
随机推荐
- pod update报错(Cocoapods: Failed to connect to GitHub to update the CocoaPods/Specs specs repo)报错解决方案
好长一段时间没动pods,今天偶然需要更新一个库,于是执行了下pod update,然后惊悚的出现了这个报错: [!] Failed to connect to GitHub to update th ...
- 转 qInstallMsgHandler实现日志输出
#include <QtDebug> #include <QFile> #include <QTextStream> #define _TIME_ qPrintab ...
- 复习下C 链表操作(双向循环链表,查找循环节点)
双向循环链表 和 单向循环链表 查找循环节点 思路都是一样. 快慢指针查找法. 理论可参考 c 链表之 快慢指针 查找循环节点 typedef struct Student_Double { ]; ...
- 透彻理解Spring事务设计思想之手写实现
前言 事务,是描述一组操作的抽象,比如对数据库的一组操作,要么全部成功,要么全部失败.事务具有4个特性:Atomicity(原子性),Consistency(一致性),Isolation(隔离性),D ...
- Android Launcher分析和修改5——HotSeat分析
今天主要是分析一下Launcher里面的快捷方式导航条——HotSeat,一般我们使用手机底下都会有这个导航条,但是如果4.0的Launcher放到平板电脑里面运行,默认是没有HotSeat的,刚好我 ...
- 【emWin】例程十八:jpeg图片显示
说明:1.将文件拷入SD卡内即可在指定位置绘制jpeg图片文件,不必加载到储存器. 由于jpeg格式文件显示时需要进行解压缩,耗用动态内存,iCore3所有模块受emwin缓存的限制,jpeg ...
- openCV函数
1.cvInitFont ,, ); font 被初始化的字体结构体. font_face 字体名称标识符.只是Hershey 字体集( http://sources.isc.org/utils/mi ...
- CentOS7主机名修改
1.命令行更改主机名,重启终端即生效. #hostnamectl --static set-hostname k8s-master
- Scala学习笔记(二):object、伴生对象和基本类
object object 是只有一个实例的类.它的定义与Java中的class类似,如: // 单例对象 object AppEntry { def main(args: Array[String] ...
- jenkins 启动slave时,找不到合适的java程序
今天添加slave 又不成功,我用右键,发现随意点了java的那个打开,结果刚弹出来就关闭了窗口,显示未启动成功. 真是小白的想法,不过跟工具打交道久了,多少逻辑上想一下不对. 一定是用了不合适的程序 ...