首页 > 其他分享 >b站看到的有意思的问题

b站看到的有意思的问题

时间:2024-05-28 10:13:02浏览次数:10  
标签:1mx 有意思 nn int max 问题 看到 dp

b站看到的有意思的问题

5月11日的时候在 b 站看了一个最长手势密码的问题,觉得挺有意思,恰好当时学了状压 dp 就试着写了写

[ᴠɪᴏʟᴇᴛᴏᴀsᴛ]
看到这个问题的时候dna就动了,刚好最近在学壮压dp,就自己出题试试写了写,可惜这种方法因为空间不能求5以上的方格,最后两张图分别是3和4的时候的答案,回溯输出路径写了好久,以不同起点怎么求也想了半天,到时候我能给新生出题的时候狠狠的折磨他们

psc

#include<bits/stdc++.h>
using namespace std;
const int N=17,M=1<<N;
double f[M][N];
double w[N*3][N*3];
int main()
{
    ios::sync_with_stdio(0),cout.tie(0),cout.tie(0);
    int n;cin>>n;
    int nn=n*n;//点的个数
    for(int i=0;i<n*n;++i)
    {
        for(int j=0;j<n*n;++j)
        {
            w[i][j]=w[i+nn][j]=w[i][j+nn]=sqrt((j%n-i%n)*(j%n-i%n)+(j/n-i/n)*(j/n-i/n));
            //存下每个点为到其他点的距离,不同起点p只需在用的 w 时 w[i+p][j+p]即可
        }
    }
        memset(f,0,sizeof f);
        for(int k=0;k<1<<nn;++k)//枚举状态
        {
            for(int i=0;i<nn;++i)
            {
                if(k>>i&1)
                {
                    for(int j=0;j<nn;++j)
                    {
                        if(i!=j&&(k-(1<<i))>>j&1)
                        {
                            f[k][i]=max(f[k-(1<<i)][j]+w[i][j],f[k][i]);
                        }
                    }
                }
            }
        }
        double mx=0;int p=0;
        for(int i=0;i<nn;++i)
        {
            if(f[(1<<nn)-1][i]>mx)
            {
                mx=f[(1<<nn)-1][i];
                p=i;
            }
        }
        memset(f,0,sizeof f);
        for(int k=0;k<1<<nn;++k)
        {
            for(int i=0;i<nn;++i)
            {
                if(k>>i&1)
                {
                    for(int j=0;j<nn;++j)
                    {
                        if(i!=j&&(k-(1<<i))>>j&1)
                        {
                            f[k][i]=max(f[k-(1<<i)][j]+w[i+p][j+p],f[k][i]);
                        }
                    }
                }
            }
        }
        int pp;mx=0;
        for(int i=0;i<nn;++i)
        {
            if(f[(1<<nn)-1][i]>mx)
            {
                mx=f[(1<<nn)-1][i];
                pp=i;
            }
        }
        cout<<mx<<'\n';
        double res=mx;
        int i=pp;
        int k=(1<<nn)-1;
        while(fabs(res)>1e-6)
        {
            for(int j=nn-1;j>=0;--j)
            {
                if((k-(1<<i))>>j&1 && fabs(res-f[k-(1<<i)][j]-w[i+p][j+p])<1e-6)
                {
                            cout<<(i+p)%nn+1<<' ';
                            res-=w[i+p][j+p];
                            k=k-(1<<i);
                            i=j;
                }
            }
        }
        cout<<(i+p)%nn+1;
}

标签:1mx,有意思,nn,int,max,问题,看到,dp
From: https://www.cnblogs.com/violetoast/p/18217242

相关文章

  • ABPVNext问题集锦-SwaggerUI的配置问题,配置Schema自动展开
    一,ABP框架中,运行的SwaggerUI中,默认情况下,不管Post还是Get等请求接口的Schema默认情况是折叠的,前端接入接口时需要一个个手动点开,如果参数过多比如100个参数 要点100次,使用不是太方便,或那种又有查询、又有新增,并且json里面各种套,对象里面有数组,数组里面套数据,  这种参数就很多了......
  • 《计算机网络微课堂》4-5 静态路由配置及其可能产生的路由环路问题
    ‍本节课我们介绍静态路由配置及其可能产生的路由环路问题,静态路由配置是指用户或网络管理员使用路由器的相关命令,给路由器人工配置路由表,这种人工配置方式简单,开销小,但不能及时适应网络状态(流量、拓扑等)的变化,一般只在小规模网络中。采用使用静态路由配置,可能出现以下导致产生......
  • ios系统上h5页面播放audio标签声音有延迟问题处理
    原文链接https://www.cnblogs.com/yalong/p/18214816背景app内嵌了一个H5页面,页面有个需求是点击某些按钮就触发声音,于是就使用了audio标签,但是有个问题就是在ios上,点击声音会有短时间的延迟,然后才播放声音找了好几种方案总算解决了方案一click事件改为mouseup事件因为移动......
  • 自定义CSS属性(@property)解决自定义CSS变量无法实现过渡效果的问题
    且看下面的代码:<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"/><metaname="viewport"content="width=device-width,initial-scale=1.0"/><title>demot</t......
  • 无法连接阿里云服务器本地mysql问题
    1.登录服务器,进入本地mysql数据库,修改root账号访问权限为:%,表示所有IP都可以连接usemysql;updateusersethost="%"whereuser="root";//刷新权限FLUSHPRIVILEGES; 2. 查看是否修改成功:selectuser,host,pluginfrommysql.user; 3.修改 bind-address......
  • DB Link导致SCN Headroom以及2012年1月的CPU或PSU补丁问题研究
    转自:https://www.cnblogs.com/dc-chen/p/7245290.htmlhttps://www.laoxiong.net/scn-ora-19706-_external_scn_rejection_threshold_hours-parameter.htmlhttps://www.modb.pro/db/4664https://www.iteye.com/blog/tianmaotalk-2437997一、基础概念1、SCN(SystemChangeNumb......
  • 微服务项目的问题
    业务板块:用户模块,商品模块,购物车模块,订单模块,支付模块服务拆分原则创业型项目:先采用单体架构,快速开发,快速试错。随着规模扩大,逐渐拆分。确定的大型项目:资金充足,目标明确,可以直接选择微服务架构,避免后续拆分的麻烦。高内聚:每个微服务的职责要尽量单一,包含的业务相互关......
  • MySQL函数查询目录树问题记录
    DELIMITER//CREATEFUNCTION`getChildXzqhList`(rootIdBIGINT)RETURNSVARCHAR(4000)BEGINSETSESSIONgroup_concat_max_len=1000000;--设置为1MB设置GROUP_CONCAT函数输出的最大长度大小,太小的话整体会被截掉RETURN(WITH......
  • 基于.NET Framework 4.8.1的ASP.NET Web用Gitlab Runner调用MSBuild之后没有bin\rosl
    摘要基于.NETFramework4.8.1的传统ASP.NETWeb程序,使用GitlabRunner自动集成,在发布的网站目录下,没有bin\Roslyn文件夹。这里涉及到容易被忽视的Roslyn编译器的知识点。Roslyn是什么?在我们的ASP.NETWeb项目源代码中有什么体现?1、web.config下有配置节点一般在web.config末......
  • JAVA面试中,面试官最爱问的问题。
     请用wait-notify写一段代码来解决生产者-消费者问题。生产者-消费者问题是一个经典的并发问题,它描述的是两类并发操作的问题:生产者将数据放入缓冲区,消费者从缓冲区取出数据。使用wait()和notify()方法可以在Java中实现这个问题的解决方案。以下是一个简单的示例,其中包含一......