首页 > 其他分享 >2024.3.29

2024.3.29

时间:2024-03-29 21:56:13浏览次数:16  
标签:itn 2024.3 int sp 29 st

2024.3.29 【人总是贪婪的,就像最开始,我也只是想知道你的名字。】

Friday 二月二十


P2534 AHOI2012 铁盘整理

//2024.3.29
//by white_ice
#include<bits/stdc++.h>
using namespace std;
#define itn int
const int oo = 20;

itn gif(itn x){return x<0?-x:x;}

int n;
itn st[oo],sp[oo];
itn masp;
bool use;

int hope(){
    itn cnt = 0;
    for (itn i=1;i<=n;i++)
        if (gif(st[i]-st[i+1])!=1)
            cnt ++;
    return cnt;
}

void dfs(itn x,itn id,int step){
    if(step == masp){
        if (id == 0)
            use = 1;
        return ;
    }

    itn tmp;
    for (itn i=2;i<=n;i++){
        if (i==x||gif(st[i+1]-st[i])==1)
            continue;

        tmp = id;

        reverse(st+1,st+i+1);
        if (gif(st[i]-st[i+1])==1)
            tmp = id-1;

        if (tmp + step <= masp){
            dfs(i,tmp,step+1);
            if (use)
                return ;
        }

        reverse (st+1,st+i+1);
    }
}

int main(){
    ios::sync_with_stdio(0);
    cin.tie(0),cout.tie(0);

    cin >> n;
    for (int i=1;i<=n;i++){
        cin >> st[i];
        sp[i] = st[i];
    }
    st[n+1] = n+1;

    sort (sp+1,sp+n+1);
    for (itn i=1;i<=n;i++)
        st[i] = lower_bound(sp+1,sp+n+1,st[i])-sp;

    for (;;masp++){
        dfs(1,hope(),0);
        if (use){
            cout << masp;
            return 0;
        }
    }

    return 0;
}

这是一个A*的典型题目,我们不妨来讨论一下A*

A*

我是oiwiki链接

A * 搜索算法(英文:A*search algorithm,A\ * 读作 A-star),简称 A * 算法,是一种在图形平面上,对于有多个节点的路径求出最低通过成本的算法。它属于图遍历(英文:Graph traversal)和最佳优先搜索算法(英文:Best-first search),亦是 BFS 的改进。

A*中最为关键,也是不同于普通bfs的一点,就在于它的期望函数(估价函数

估价函数的定义,首先要确定距离这一抽象概念,如本题中,将盘子大小顺序的差值定义为距离,所以本题中,我们还需要进行一次离散化。

顺便将离散化板子拍在这里:

for (int i=1;i<=n;i++){
    cin >> st[i];
    sp[i] = st[i];
}
st[n+1] = n+1;
sort (sp+1,sp+n+1);
for (itn i=1;i<=n;i++)
    st[i] = lower_bound(sp+1,sp+n+1,st[i])-sp;

通用的距离求解有三角形不等式等,同时A*可以搭配优先队列等实现神奇优化,求解k短路问题。

标签:itn,2024.3,int,sp,29,st
From: https://www.cnblogs.com/white-ice/p/18104681

相关文章

  • 2024-03-29
    2024-03-29LOG对于小于等于\(s\)的数\(x\),最多被选\(x\)次大于\(s\)的数最多被选\(s\)次看所有小于等于\(s\)的数字的和加上\(s\)乘大于\(s\)的数字的个数这个值是不是大于等于\(c\timess\)就行离散化之后权值线段树维护一下离散化之后线段树右边界应该......
  • 2024/3/29
    所花时间:1小时代码行:70行博客量:1篇了解到的知识点:对css文件进行编写,并进行以一些了解和学习.navbar{background-color:#333;overflow:hidden;}.navbara{float:left;display:block;color:#f2f2f2;text-align:center;padding:14px20px;......
  • 20240329
    没想好副标题。上午打了一场NOIP模拟赛,有两道题因为忘了判\(1\)的情况挂了73pts,痛失rk1,最后rk5。然后T4还是把「NOIP2020排水系统」那道题魔改之后的sb题,实际上多打一个DAG上拓扑排序就好了。蚌,下午听线段树与平衡树,但实际上几乎没讲怎么实现,一直在讲题讲题讲......
  • 2024年3月29日-UE5-播放特效、自制特效,发射冰球,销毁actor
    打开特效文件夹 选中要添加的特效,然后切换到蓝色子弹的蓝图里,点添加 然后改名为粒子,再创建一个碰撞球体组件 缩放改为0.2 在碰撞球体里面,添加一个碰撞的查询,会打印出发生碰撞的单位 然后返回到主角的蓝图,在创建子弹里,调整下发射点,让主角本身和子弹不重叠 再把球......
  • KubeSphere 社区双周报|2024.03.15-03.29
    KubeSphere社区双周报主要整理展示新增的贡献者名单和证书、新增的讲师证书以及两周内提交过commit的贡献者,并对近期重要的PR进行解析,同时还包含了线上/线下活动和布道推广等一系列社区动态。本次双周报涵盖时间为:2024.03.15-03.29。贡献者名单新晋KubeSpherecontribut......
  • Acwing 129. 火车进栈
    https://www.acwing.com/problem/content/description/131/输入样例:3输出样例:123132213231321#include<bits/stdc++.h>usingnamespacestd;typedeflonglongLL;typedefpair<int,int>PII;constLLMAXN=1e18,MINN=-MAXN,INF=0x3f3f3f3f;constLLN=......
  • 2024-03-29 js练习之生成多个数组,且每个数组内的值不能重复
    代码:<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"/><metaname="viewport"content="width=device-width,initial-scale=1.0"/><title>doubleBox</t......
  • 深痛教训——3.29
    死亡回放错误的L[++s]=R[s-1]+1;正确的s++;L[s]=R[s-1]+1;分析关于\(L[++s]=R[s-1]+1;\)这一行代码,表示的是将\(R[s-1]+1\)复制给\(L[++s]\),是从右往左执行的,也就是说在\(++s\)之前就已经计算了\(R[s-1]\),也就是说这个\(R[s-1]\)实际上表示\(R[s-2]\)......
  • AI预测福彩3D第21弹【2024年3月29日预测--第4套算法重新开始计算第7次测试】
       今天继续对第4套算法进行测试,测试的目的主要是为了记录统计两套方案的稳定性和命中率,昨天的第一套和第二套方案均已命中。今天是第7次测试,同样测试两个方案。废话不多说,直接上结果。     2024年3月29日福彩3D的七码预测结果如下    第一套:  ......
  • AI预测福彩3D第21弹【2024年3月29日预测--第5套算法开始计算第3次测试】
             今天,咱们继续进行本套算法的测试,今天为第三次测试,仍旧是采用冷温热趋势结合AI模型进行预测。好了,废话不多说了。直接上结果~    仍旧是分为两个方案,1大1小。        经过人工神经网络计算并进行权重赋值打分后,3月29日预测结果如下: ......