搜索:https://www.cnblogs.com/SiriusRen/p/6532506.html?tdsourcetag=s_pctim_aiomsg 來自 SiriusRen

數據範圍小,考慮直接dfs,剪枝:到達此層如果用時更長就不再搜了,

然而我有一個問題就是到達每層手柄的狀態並不一樣,怎麼能直接更新呢?

然而我用二維的寫掛了,T5個點,所以先放上一維的掛著了......

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int n,m,c[],ans=0x7fffffff,p;
int time[];
int abs(int a){return a<?-a:a;}
void dfs(int fl,int t,int pos)
{
if(fl==n)ans=min(ans,t);
for(int i=;i<=m;i++){
int x=fl+c[i];if(x<= || x>n)continue;
int tt=t+abs(pos-i)+*abs(c[i]);
if(time[x]<=tt)continue;
time[x]=tt;
dfs(x,tt,i);
}
}
int main()
{
memset(time,0x3f,sizeof(time));
scanf("%d%d",&n,&m);
for(int i=;i<=m;i++){
scanf("%d",&c[i]);if(c[i]==)p=i;
}
for(int i=;i<=n;i++)time[i]=0x7fffffff;
dfs(,,p);
if(ans!=0x7fffffff)
printf("%d",ans);
else printf("-1");
}

如果考慮最短路,可以跑一次spfa,在隊列裡維護當前樓層和手柄位置,其實相當於廣搜,掛了層最短路的皮而已

然而我考試時竟然最後更新ans時寫的 for(1...m)ans=min(ans,d[n][m]).............狗屎

別忘了判-1......

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<queue>
#include<cstring>
#define mp make_pair
using namespace std;
const int maxn=;
queue<pair<int,int> >q;
int n,m,pos;
int c[];
int d[maxn][],v[maxn][];
int main()
{
freopen("up.in","r",stdin);
freopen("up.out","w",stdout);
scanf("%d%d",&n,&m);
for(int i=;i<=m;i++){
scanf("%d",&c[i]);if(c[i]==)pos=i;
}
memset(d,0x3f,sizeof(d));
q.push(mp(,pos));
v[][pos]=;d[][pos]=;
while(!q.empty()){
int x=q.front().first,y=q.front().second;q.pop();
v[x][y]=;
for(int i=;i<=m;i++){
int yy=x+c[i],dd=(abs(i-y)+*abs(c[i]));
if(yy<= || yy>n)continue;
if(d[yy][i]>d[x][y]+dd){
d[yy][i]=d[x][y]+dd;
if(!v[yy][i])q.push(mp(yy,i)),v[yy][i]=;
}
}
}
int ans=0x3f3f3f3f;
for(int i=;i<=m;i++)
ans=min(ans,d[n][i]);
if(ans!=0x3f3f3f3f)
printf("%d",ans);
else printf("-1"); fclose(stdin);fclose(stdout);
}

[題解]TYVJ_2032(搜索/最短路)的更多相关文章

  1. [題解](搜索)生日蛋糕(NOI1999)

    搜索剪枝, 1.枚舉上下界: 先$R\subset$$(dep,min(\lfloor\sqrt{n-v}\rfloor,lastr-1))$ 后$H\subset$$(dep,min((n-v)/R ...

  2. [題解]luogu_P1120小木棍(搜索)

    好久以前抄的題解,現在重新抄題解做一下 1.對所有木棍從大到小排序,後用小的比較靈活 2.限制加入的木棍單調遞減,因為先/后用長/短木棍等價,反正就是那兩根 3.預處理出重複木棍的位置,防止重複搜索相 ...

  3. [題解](最短路)luogu_P1119災後重建

    一道好題,然而看題解做的...... floyed的實質:只經過前k個點i到j的最短路,原狀態轉移方程為 f [ k ] [ i ] [ j ]=min( f[ k-1 ] [ i ] [ j ],f ...

  4. [題解](水/數學)luogu_P1147連續自然數和

    尺取法a掉 然而數學解法為 等差數列求和公式: sum(L,R)=(L+R)(R-L+1)/2=M 即(L+R)(R-L+1)=2M 可以把2M分解成两个数之积,假设分成了两个数K1,K2,且K1&l ...

  5. [題解](單調隊列dp)【2016noip福建夏令營】探險

    P1917 -- 探险 时间限制:1000MS      内存限制:131072KB 题目描述(explore.cpp) π+e去遗迹探险,遗迹里有 N 个宝箱,有的装满了珠宝,有的装着废品. π+e ...

  6. [題解](最小生成樹/LCA)luogu_P1967貨車運輸

    一道好題不出所料又抄的題解 1.首先對於這張圖肯定要考慮走哪些邊不走哪些邊,發現我們想要的肯定那些邊權最大的邊,所以想到最大生成樹 這樣能保證選到盡量大的邊 2.跑完最大生成樹后每兩點之間就有唯一路徑 ...

  7. [題解](最小生成樹)luogu_P1265

    首先考虑最小生成树的模型,唯一不同的是第二种情形. 即“三个或三个以上的城市申请修建的公路成环” 考虑该情形,因为修路的申请是申请离它最近的城市,所以上述条件实质上为 “存在三个或三个以上的城市,他们 ...

  8. [題解](二分答案/單調隊列)luogu_P1419尋找段落

    果然又抄的題解... 顯然答案具有單調性,而對于平均數計算的式子我們移一下項, 若s[l..r]>mid*(r-l+1)无解, 於是我們把每個數都減去一個mid,看和的正負即可,如果為正就可能有 ...

  9. [題解]luogu_P1854 花店櫥窗佈置

    來源:題解 一開始看不懂題目,一萬年了終於看懂 f [ i ] [ j ] 表示第i朵花放在第j個花瓶中最大美學值,(花是必須用完嗎?) 顯然放i-1朵花至少要放到前i-1個瓶子里,最多放到前j-1個 ...

随机推荐

  1. APP上线审核注意事项

    基本要点 ·         不能导致手机故障(比如崩溃或屏幕问题) ·         长时间/过度使用之后反应仍然很快 ·         应用内的所有价格信息中不能用固定值代替可变变量 ·    ...

  2. RTP/RTCP学习笔记 -- RFC 3550

    The MTU of RTP package payload is (IP) - (UDP) - = 1472   #define DEFAULT_MAX_PACKET_SIZE 1200 video ...

  3. git使用笔记(四)错误报告 Git push rejected error: fatal: refusing to merge unrelated histories

    Reason: The reason is because I created repo in Github with initiated README.md file, and I tried to ...

  4. C++中map容器的说明和使用技巧

    C++中map容器提供一个键值对容器,map与multimap差别仅仅在于multiple允许一个键对应多个值. 一.map的说明 1 头文件 #include <map> 2 定义 ma ...

  5. 【转】澄清P问题、NP问题、NPC问题

    首先,原文链接.(这篇文章让我第一次有了感谢腾讯,感谢微信,感谢微信公众号的冲动.总之,非常感谢作者的分享.) 然后:结论图如下 担心万一哪天原网站把这篇文章下线,所以原文内容复制过来. 澄清P问题. ...

  6. Linux 命令行 Tricks

    区分文件和目录: ls -F ls -F -R:递归显示目录 仅改变文件的修改时间,而不修改文件的内容: touch filename: 使用 file 命令查看文件类型: ASCII text di ...

  7. maven的常用构建命令

    mvn clean:删除项目根目录中的target目录

  8. ubuntu 16.04 apt-get 出现The package 'xxx' needs to be reinstalled, but I can't find an archive for it.

    参考网址:http://www.ihaveapc.com/2011/10/fix-annoying-the-package-needs-to-be-reinstalled-but-i-cant-fin ...

  9. WinDbg 调试工具的使用

    概述 项目接近尾声了,可是在运行时会有memory leak(内存泄露) bug.产品在运行一天后,内存增长致1.4G,而我们产品的初始内存才有70M,问题很严重,决定采用WinDbg工具来分析代码问 ...

  10. tyvj1940创世纪——贪心(基环树)

    题目:http://www.joyoi.cn/problem/tyvj-1940 基环树的样子,看了书上的讲解,准备写树上DP,然后挂了: #include<iostream> #incl ...