题目

传送门:QWQ

分析

这种题不会做 吃枣药丸。。。。。

想到状压已经经过的点。

然后更新时枚举两个点加进去。

复杂度$  {O(2^n \times n^2)}$。

凉凉。

真正的做法是每一个状态只要找到一组解就break。这样可以省掉一层n。

大致上就像lrj紫书的dp例题一样,反正这个点都要选,那就先选了他。

还不是很懂这个神奇的break。。。。。

代码

 #include <bits/stdc++.h>
using namespace std;
const int maxn=, INF=1e9; int dp[<<maxn], dis[maxn][maxn], pre[<<maxn];
int x[maxn], y[maxn]; int sqr(int x){ return x*x; } int main(){
scanf("%d%d",&x[],&y[]);
int n; scanf("%d",&n);
for(int i=;i<=n;i++) {
scanf("%d%d",&x[i],&y[i]);
}
for(int i=;i<=n;i++){
for(int j=;j<=n;j++){
dis[i][j]=dis[j][i]=sqr(x[i]-x[j])+sqr(y[i]-y[j]);
}
} memset(dp,,sizeof(dp)); dp[]=;
for(int S=;S<(<<n);S++){
if(dp[S]>INF) continue;
for(int i=;i<=n;i++){
if(S&(<<i-)) continue;
for(int j=;j<=n;j++){
if(S&(<<j-)) continue; int prenum=dp[S|<<(i-)|<<(j-)];
dp[S|<<(i-)|<<(j-)]=min(dp[S|<<(i-)|<<(j-)], dp[S]+dis[][i]+dis[][j]+dis[i][j]);
if(prenum>dp[S|<<(i-)|<<(j-)]){
pre[S|<<(i-)|<<(j-)]=S;
}
}
break;
}
} printf("%d\n",dp[(<<n)-]);
int now=(<<n)-; //从所有都齐的状态开始逆推
while ( now!= )
{
printf( "0 " );
int update=now^pre[now];
for ( int i=; i<=n; i++ )
if ( update&<<i- )
printf( "%d ", i ); //输出本次拿的哪些物品
now=pre[now];
}
puts("");
}

【Codeforces】CF 8 C Looking for Order(状压dp)的更多相关文章

  1. Codeforces Beta Round #8 C. Looking for Order 状压dp

    题目链接: http://codeforces.com/problemset/problem/8/C C. Looking for Order time limit per test:4 second ...

  2. codeforces 8C. Looking for Order 状压dp

    题目链接 给n个物品的坐标, 和一个包裹的位置, 包裹不能移动. 每次最多可以拿两个物品, 然后将它们放到包里, 求将所有物品放到包里所需走的最小路程. 直接状压dp就好了. #include < ...

  3. 【题解】codeforces 8c Looking for Order 状压dp

    题目描述 Lena喜欢秩序井然的生活.一天,她要去上大学了.突然,她发现整个房间乱糟糟的--她的手提包里的物品都散落在了地上.她想把所有的物品都放回她的手提包.但是,这里有一点问题:她一次最多只能拿两 ...

  4. Codeforces Gym 100610 Problem K. Kitchen Robot 状压DP

    Problem K. Kitchen Robot Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/10061 ...

  5. Educational Codeforces Round 13 E. Another Sith Tournament 状压dp

    E. Another Sith Tournament 题目连接: http://www.codeforces.com/contest/678/problem/E Description The rul ...

  6. Codeforces 1225G - To Make 1(bitset+状压 dp+找性质)

    Codeforces 题目传送门 & 洛谷题目传送门 还是做题做太少了啊--碰到这种题一点感觉都没有-- 首先我们来证明一件事情,那就是存在一种合并方式 \(\Leftrightarrow\) ...

  7. CF1103D Codeforces Round #534 (Div. 1) Professional layer 状压 DP

    题目传送门 https://codeforces.com/contest/1103/problem/D 题解 失去信仰的低水平选手的看题解的心路历程. 一开始看题目以为是选出一些数,每个数可以除掉一个 ...

  8. 【Codeforces】CF 165 E Compatible Numbers(状压dp)

    题目 传送门:QWQ 分析 很难想到方向,但有方向了就很easy了. 我们如何减少不必要的计算? 如果我们知道了$ 100111 $的相容的数,$ 100101 $的相容数和他是完全一样的. 我们就靠 ...

  9. Codeforces 279D The Minimum Number of Variables 状压dp

    The Minimum Number of Variables 我们定义dp[ i ][ mask ]表示是否存在 处理完前 i 个a, b中存者 a存在的状态是mask 的情况. 然后用sosdp处 ...

  10. codeforces#580 D. Kefa and Dishes(状压dp)

    题意:有n个菜,每个菜有个兴奋值,并且如果吃饭第i个菜立即吃第j个菜,那么兴奋值加ma[i][j],求吃m个菜的最大兴奋值,(n<=18) 分析:定义dp[status][last],statu ...

随机推荐

  1. JDK安装和环境变量配置-成功经验

    JDK安装和环境变量配置1.下载安装软件 2.安装JDK--开发环境,路径 3.之后打开安装路径下的bin文件夹路径,我的是默认安装C:\Program Files\Java\jdk1.6.0_10\ ...

  2. Android PopupWindow中EditText获取焦点自动弹出软键盘

    公司的项目中要求在点击搜索的时候弹出一个搜索框,搜索框中有一个EditText,用于数据搜索关键字,要求在弹出PopupWindow的时候自动弹出软键盘,原以为只要写上着两行代码可以搞的问题: Inp ...

  3. OK335xS Ubuntu 12.04.1 版本 Android 开发环境搭建

    /******************************************************************************************** * OK33 ...

  4. SpringMVC开发小结

    1. 自动封装返回对象为JSON 1).在spring配置文件中添加如下配置: <mvc:annotation-driven> <mvc:message-converters> ...

  5. 51Nod 1009:1009 数字1的数量 (思维)

    1009 数字1的数量  基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题  收藏  关注 给定一个十进制正整数N,写下从1开始,到N的所有正数,计算出其中出现所有1的 ...

  6. 什么是PHP无限级分类

    注:兄弟连PHP项目视频18讲有详细讲解.PHP和mysql(或是各种数据库)有较深的依奈关系,比如这里就是通过数据库的设 计,id,pid(parent id),path(所有父id构成的路径,如W ...

  7. P·C·L 了解

    因为PCL是开源的,所以无论是商用还是研究都是免费的: 赞助商有Open Perception, Willow Garage, NVIDIA, Google, Toyota, Trimble, Urb ...

  8. Linux 性能工具安装部署

    docker 一.运行docker Linux内核版本需要在3.8以上,针对centos6.5 内核为2.6的系统需要先升级内核.不然会特别卡 在yum的ELRepo源中,有mainline(4.5) ...

  9. Centos下zookeeper的安装配置

    下载安装包,下载地址 http://zookeeper.apache.org/releases.html,我下载的版本是zookeeper-3.4.9.tar.gz. # tar xvzf zooke ...

  10. TCC(Tiny C Compiler)介绍

    TCC是一个超小.超快的标准C语言编译器.她可以从这里(http://bellard.org/tcc/)下载到:注意,要下载http://download.savannah.nongnu.org/re ...