Codeforces Beta Round #8 C. Looking for Order 状压DP,路径记录

从源码编译CesiumForUnreal 从源码编译CesiumForUnreal插件 阅读详情

题目链接:http://codeforces.com/contest/8/problem/C
题意:平面上有n个物品,这个小朋友会去拿这些物品,然后拿到返回包的位置。但是这个小朋友一次最多拿两个物品,问你怎么去拿,才能使得把所有物品都拿到包的位置,且走的距离和最小
解法: 比较显然的状压,状压中有一个剪枝,显然拿的顺序是随意的,我先拿和后拿都是一样的。所以可以直接return就好了。这题质量感觉蛮高的。。

//CF 8C 状压DP

#include <bits/stdc++.h>
using namespace std;
const int maxn = 24;
int dp[1<<maxn], pre[1<<maxn];
int n, d[maxn+2][maxn+2], x[maxn+2], y[maxn+2];
int dfs1(int x)
{
    if(dp[x]!=-1) return dp[x];
    dp[x] = 1e9;
    for(int i = 0; i < n; i++){
        if(x&(1<<i)){
            int nxt = dfs1(x^(1<<i));
            if(dp[x] > nxt+d[n][i]+d[i][n]){
                dp[x] = nxt+d[n][i]+d[i][n];
                pre[x]=x^(1<<i);
            }
            for(int j = i+1; j < n; j++){
                if(x&(1<<j)){
                    int nxt = dfs1(x^(1<<i)^(1<<j));
                    if(dp[x]>nxt+d[n][i]+d[i][j]+d[j][n]){
                        dp[x] = nxt+d[n][i]+d[i][j]+d[j][n];
                        pre[x]=x^(1<<i)^(1<<j);
                    }
                }
            }
            break;//这个剪枝超级重要,不加会T
        }
    }
    return dp[x];
}
void dfs2(int x){
    if(x){
        for(int i = 0; i < n; i++){
            if((x^pre[x])&(1<<i)){
                printf("%d ",i+1);
            }
        }
        printf("0 ");
        dfs2(pre[x]);
    }
}
int main()
{
    scanf("%d%d", &x[0], &y[0]);
    scanf("%d", &n);
    x[n] = x[0], y[n] = y[0];
    for(int i = 0; i < n; i++){
        scanf("%d%d", &x[i], &y[i]);
    }
    for(int i = 0; i <= n; i++){
        for(int j = 0; j <= n; j++){
            d[i][j] = (x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]);
        }
    }
    memset(dp, -1, sizeof(dp));
    dp[0] = 0;
    int mask = (1<<n)-1;
    int ans = dfs1(mask);
    printf("%d\n", ans);
    printf("0 ");
    dfs2(mask);
    printf("\n");
    return 0;
}
【OpenCV实战】简洁易懂的车牌号识别Python+OpenCV实现“超详解”(含代码) 简洁易懂的车牌号识别Python实现(含代码)1、整体思路2、代码详解 1、整体思路 2、代码详解 阅读详情

相关推荐

NIDS——suricata(一)

NIDS——suricata环境安装和规则编写

weixin_58666006的博客 1273

Codeforces 8C

题目大意:给出包的坐标和n个物品的坐标,你初始从包出发,每次可以最多拿两个物品,问怎么走使路程最短,输出方案。 题解:状压dp,开始我想状态一直没有想出来。容易知道只要你拿包的配对方案是一定的,那么不管按什么顺序拿,都是可以的。 那么我们设dp[i]表示i这个二进制状态,也就是说当前状态选了i这些物品的答案。然后进来一个物品(当前没被选的物品中下标最靠前的一个),我们先更新把这个物品单独拿的后继

Sakai_Masato的博客 773

EndNote全文检索实战:如何快速配置学校图书馆资源并精准查找文献

本文详细介绍了EndNote全文检索功能的实战配置方法,核心在于通过正确设置OpenURL链接解析器,无缝对接学校图书馆资源,实现一键精准获取文献全文。文章提供了从理解机制、四步配置法到进阶技巧的完整指南,帮助科研人员高效管理海量PDF,构建个人知识体系,大幅提升文献调研与写作效率。

weixin_29228781的博客 280

Codeforces Beta Round 8 C. Looking for Order 【状压DP】

个人练习记录

m0_73500785的博客 986

monocle3-单细胞轨迹分析在疾病研究中的应用

本文深入探讨了monocle3在单细胞轨迹分析中的核心应用,特别是在疾病研究领域。通过实战案例,详细讲解了如何利用monocle3进行轨迹推断,构建细胞状态演变的“路线图”,并结合伪时间分析定位疾病进展阶段。文章还介绍了如何挖掘驱动疾病发展的关键基因,并分享了数据整合、根节点选择等进阶技巧与避坑指南,旨在帮助研究者利用这一强大工具揭示肿瘤异质性、免疫治疗耐药等复杂生物学过程的动态机制。

a3b4c5的博客 639

给排水工程师的SWMM初体验:从软件界面到第一个简单模型的保姆级上手教程

本文为给排水工程师提供SWMM软件的保姆级上手教程,从界面解析到创建第一个简单模型,详细介绍了SWMM的核心功能和操作步骤。通过30分钟的实践指导,帮助新手快速掌握雨水管网建模的基本技能,提升工作效率。

weixin_28736355的博客 323

Codeforces 8C 状压DP

题意:有个人想收拾行李,而n个物品散落在房间的各个角落里(n < 24)。现在给你旅行箱的坐标(人初始在旅行箱处),以及n个物品的坐标,你一次只能拿最多两个物品,并且拿了物品就必须放回旅行箱,不能暂时放在地上。问最小的花费是多少?花费是笛卡尔距离的平方。 思路一看n 只有24,应该很容易想到要用状压DP. 那么dp[i]表示i状态并且回到原点的最小花费。那么就暴力枚举拿1个或两个物品放回原...

weixin_30555753的博客 96

WSL2安装(详细过程)

适用于 Linux 的 windows 子系统允许开发人员直接在 Windows 上运行 GNU/Linux 环境 -- 包括大多数命令行工具、实用程序和应用程序,无需修改,而无需传统虚拟机或dualbot设置的开销。

qq_43636384的博客 3万+

codeforces 8C 状压DP

codeforces 8C 题意: 给定n个物品,第i个物品的坐标为(xi,yi),你的起点坐标为(xs,ys)。给定n个物品,第i个物品的坐标为(x_i,y_i),你的起点坐标为(x_s,y_s)。给定n个物品,第i个物品的坐标为(xi​,yi​),你的起点坐标为(xs​,ys​)。 现在要将所有物品全部放回起点,每次手中拿的物品数量不能超过2个。现在要将所有物品全部放回起点,每次手中拿的物品...

Welcome to csdn_PatrickStar's blog 464

单目视觉定位:深入解析PNP算法在机器人导航中的实战应用

本文深入解析了PNP算法在机器人单目视觉定位中的核心原理与实战应用。通过拆解坐标变换四步,详细阐述了如何从二维图像点反求相机三维位姿。文章结合OpenCV的solvePnP函数,提供了算法选择、参数调优及结果后处理的实用指南,并针对机器人导航中的特征匹配、尺度不确定性等挑战,给出了鲁棒性优化与实时性平衡的解决方案。

weixin_29083649的博客 419

LS-DYNA壳单元冲击仿真中的5个关键设置:以方管碰撞为例(含沙漏控制参数)

本文以方管碰撞为例,深入解析了LS-DYNA壳单元冲击仿真中的五个关键设置。重点探讨了沙漏控制参数(如IHQ=4)的选择逻辑、自接触算法优化、能量监控方法、材料模型(MAT_24)的真实应力-应变曲线与应变率效应设置,以及单元公式的选取。这些核心设置共同决定了仿真的精度与效率,是确保方管冲击仿真结果可靠性的基石。

salt的博客 626

Codeforces8C(状压dp)

题意: 一个人在起点,有许多物品散落在各个地方,现在给出人起点的坐标和物品的坐标,然后给出一个要求,每次最多只能拿两个物品拿完物品必须回到原点装到包里面,求最短路程的方案,答案和路径都要输出。 这题如果是超级暴力即状态和两个点都全部枚举会超时,稍微优化下,因为先去哪个都是一样的,因为都 要回到原点,这样相当于每次是从原地出发找出然后回去,所以首先枚举状态,然后枚举第一个点,这时候先转移这个点的

ACM之梦 756

【Python LeetCode 专题】面试经典 150 题

面试经典 150 题

一杯水果茶!足矣~ 1173

Codeforces Beta Round #8 C. Looking for Order CF8C

就是个记录路径的dp 但是每次枚举走1个点和走2个点会超时可以注意到明显每次尽量拿2个是比只拿1个更优的 考虑一个三角形 两边之和大于第三边因此对每个状态枚举拿2个 固定一个和枚举一个 这样就能枚举到所有情况#include <iostream> #include <algorithm> #include <sstream> #include <string> #include <queue

sb的博客 374

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

codeforces 8C(非原创)

C. Looking for Order time limit per test 4 seconds memory limit per test 512 megabytes input standard input output standard output Girl Lena likes it when everything i...

weixin_30488085的博客 254

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

CodeForces - 8C Looking for Order (两种方法的实现:状压DP,DFS)

Girl Lena likes it when everything is in order, and looks for order everywhere. Once she was getting ready for the University and noticed that the room was in a mess — all the objects from her handbag...

bibibi724 494

CodeForces - 8C Looking for Order【状态压缩dp】

【题目描述】 Girl Lena likes it when everything is in order, and looks for order everywhere. Once she was getting ready for the University and noticed that the room was in a mess — all the objects from her ...

inv0ker的博客 234

CodeForces 8 C.Looking for Order(状压DP)

Description 给出nnn个物品的二维坐标以及起点坐标,每次要从起点出去拿一件或两件物品回到起点,两点之间距离定义为欧氏距离的平方,问把所有物品拿回起点所走最短距离以及对应最短距离下拿物品的顺序 Input 首先输入两个整数sx,sysx,sysx,sy表示起点坐标,之后输入一整数nnn表示物品数量,最后nnn行每行两个整数xi,yixi,yix_i,y_i表示第iii个物品的坐标(...

ZSQ 473

Codeforces 8C Looking for Order(状压DP)

C. Looking for Order time limit per test 4 seconds memory limit per test 512 megabytes input standard input output standard output Girl Lena likes it when everything is

yasolx的博客 859

CF 8C Looking for Order(状压dp)

C. Looking for Order time limit per test 4 seconds memory limit per test 512 megabytes input standard input output standard output Girl Lena likes it when everything is

记录成长的点点滴滴. . . . . 1163

codeforces 8C - Looking for Order 状态DP

一个女孩整理箱子,箱子的位置不可以改变,她一次可以拿两个或者是一个行李,女孩移动时间花费是她移动距离的平方。 int dist[maxn][maxn] ; int dp[1<<maxn] , father[1<<maxn] ; pair pt[maxn] , p ; int gtd(int i , int j){ return (pt[i].fir

老李2009 704

Codeforces Beta Round #8 A. Train and Peter(kmp)

A. Train and Peter time limit per test1 second memory limit per test64 megabytes inputstandard input outputstandard output Peter likes to travel by train. He likes it so much that on the train he...

a670531899的博客 399

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

C. Looking for Order 题目连接: http://www.codeforces.com/contest/8/problem/C Description Girl Lena likes it when everything is in order, and looks for order everywhere. Once she was getting ready for the ...

weixin_30663471的博客 133

2018.07.23 codeforces 438D. The Child and Sequence(线段树)

传送门 线段树维护区间取模,单点修改,区间求和。 这题老套路了,对一个数来说,每次取模至少让它减少一半,这样每次单点修改对时间复杂度的贡献就是一个loglog,所以维护区间最大值剪枝,然后每次单点暴力取模,这样的话时间复杂度为O(nlogn)O(nlogn)。 代码如下: #include<bits/stdc++.h> #de...

weixin_30843605的博客 199

Codeforces 815A-Karen and Game

Karen and Game time limit per test 2 seconds memory limit per test 512 megabytes input standard input output standard output On the way to school, Karen became fixated o

wang_128的博客 617

Codeforces Beta Round #8

点击打开链接 A 思路:正反字符串各自判断一次是否有对应的两个子串 分析: 1 题目给定一个字符串str,然后给定两个不同时间段内看到的子串s1 , s2,判断是哪一种情况。 2 我们知道两个时间段内那么看到的字符串是有间隔的,那么如果我们怎么知道是否是“向前”“向后”“都有”“没有”这四种答案中的哪一种呢?其实我们知道如果给定的两个子串都是给定的字符串str的子串,那么我们就必须正...

我是传奇 172

Codeforces Beta Round #8 E. Beads(数位DP)

One Martian boy called Zorg wants to present a string of beads to his friend from the Earth — Masha. He knows that Masha likes two colours: blue and red, — and right in the shop where he has come, the

WZJRJ28 962
上一篇: Codeforces Beta Round #9 (Div. 2 Only) D. How many trees? dp
下一篇: CDOJ 1307 ABCDE dp, 前缀和优化
just_sort
博客等级 码龄11年 2357粉丝 1667原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值