【Codeforces】CF 8 C Looking for Order(状压dp)

时间:2021-12-10 00:33:37

题目

传送门: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 &num;8 C&period; Looking for Order 状压dp

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

  2. codeforces 8C&period; Looking for Order 状压dp

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

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

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

  4. Codeforces Gym 100610 Problem K&period; 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&period; 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&plus;状压 dp&plus;找性质)

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

  7. CF1103D Codeforces Round &num;534 &lpar;Div&period; 1&rpar; 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&num;580 D&period; Kefa and Dishes(状压dp)

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

随机推荐

  1. 分分钟用上C&num;中的委托和事件

    每一个初学C#的程序猿,在刚刚碰到委托和事件的概念时,估计都是望而却步,茫然摸不到头脑的.百度一搜,关于概念介绍的文章大把大把的,当然也不乏深入浅出的好文章.可看完这些文章,大多数新手,估计也只是信心 ...

  2. 【Fine原创】JMeter分布式测试中踩过的那些坑

    最近因为项目需要,研究了性能测试的相关内容,并且最终选用了jmeter这一轻量级开源工具.因为一直使用jmeter的GUI模式进行脚本设计,到测试执行阶段工具本身对资源的过量消耗给性能测试带来了瓶颈, ...

  3. WinCE&bsol;Window Mobile程序桌面化总结

    1.系统API处理 将桌面.移动API分开处理 2.一份代码,两个工程,分别编译 添加已有文件时,使用添加链接,而不是添加附本 3.桌面窗体出现位置不规律,样式不统一问题 首先,在窗体类成员加入两个成 ...

  4. java-一个小练习

    输出自己的姓名: public class test01 { public static void main(String[] args) { System.out.println(" # ...

  5. Java Concurrency In Practice - Chapter 1 Introduction

    1.1. A (Very) Brief History of Concurrency motivating factors for multiple programs to execute simul ...

  6. Java工程转换为Maven工程

    1. 前言 在开发中经常要建立一个Maven的子工程,对于没有模板的同学来说从Java工程来转换也是一个不错的选择.本文就如何从一个Java工程创建一个Maven工程做了一个介绍,相信对于将一个Jav ...

  7. php中计算中文字符串长度、截取中文字符串

    在做PHP开发的时候,由于我国的语言环境问题,所以我们常常需要对中文进行处理.在PHP中,我们都知道有专门的mb_substr和mb_strlen函数,可以对中文进行截取和计算长度,但是,由于这些函数 ...

  8. 乐呵乐呵得了 golang入坑系列

    开场就有料,今天返回去看了看以前的文章,轻松指数有点下降趋势.一琢磨,这不是我的风格呀.一反思,合着是这段时间,脑子里杂七杂八的杂事有点多,事情一多,就忘了快乐.古话说得好:愁也一天,乐也一天,只要还 ...

  9. &lbrack;No0000132&rsqb;正确使用密码加盐散列&lbrack;译&rsqb;

    如果你是一个 web 开发工程师,可能你已经建立了一个用户账户系统.一个用户账户系统最重要的部分是如何保护密码.用户账户数据库经常被黑,如果你的网站曾经被攻击过,你绝对必须做点什么来保护你的用户的密码 ...

  10. LG3898 &lbrack;湖南集训&rsqb;大新闻

    题意 题目描述 **记者弄了个大新闻,这个新闻是一个在 [0,n) 内等概率随机选择的整数,记其为 x.为了尽可能消除这个大新闻对公众造成的不良印象,我们需要在 [0,n)内找到某一个整数 y,使得 ...