2017 ACM-ICPC 南宁区比赛 Minimum Distance in a Star Graph

2017-09-25 19:58:04

writer:pprp

题意看上去很难很难,但是耐心看看还是能看懂的,给你n位数字

你可以交换第一位和之后的某一位,问你采用最少的步数可以交换成目标

有五组数据

用BFS进行搜索,并进行剪枝,已经搜索过的点不再搜索

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <string>
#include <set>
#include <queue>

using namespace std;

string sa, sb;

int n;

struct node
{
    string str;
    int times;
    node()
    {
        str = "";
        times = 0;
    }
};

int bfs()
{
    queue<node> q;
    set<string> ss;
    node now , nex;
    now.str = sa;
    q.push(now);
    ss.insert(now.str);
    while(!q.empty())
    {
        now = q.front();
        q.pop();
        if(now.str == sb)
            return now.times;
        for(int i = 1; i < n;i++)
        {
            nex.str = now.str;
            nex.times = now.times+1;
            nex.str[i] = now.str[0];
            nex.str[0] = now.str[i];
            if(ss.count(nex.str) == 0)
            {
                ss.insert(nex.str);
                q.push(nex);
            }
            else
                continue;
        }
    }
}

int main()
{
    cin >> n;
    for(int i = 0 ; i < 5 ;i++)
    {
        cin >> sa >> sb;
        cout << bfs() << endl;
    }

    return 0;
}

现阶段掌握搜索还不是太好,希望以后可以尽快掌握

时间: 2024-11-07 11:39:43

2017 ACM-ICPC 南宁区比赛 Minimum Distance in a Star Graph的相关文章

2017南宁网络赛 Problem J Minimum Distance in a Star Graph ( 模拟 )

题意 : 乱七八糟说了一大堆,实际上就是问你从一个序列到另个序列最少经过多少步的变化,每一次变化只能取序列的任意一个元素去和首元素互换 分析 : 由于只能和第一个元素去互换这种操作,所以没啥最优的特别方法,只要乖乖模拟即可,如果第一个元素不在正确位置则将它和正确位置的元素交换使其回到正确位置,如果第一个元素的位置就是正确的,那么就往后找不在正确位置的元素将它互换到第一个去,然后再对第一个元素进行判断即可,直到序列变成最终满足条件的序列........ #include<bits/stdc++.h

2017 ACM/ICPC Asia Regional Shenyang Online spfa+最长路

transaction transaction transaction Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 132768/132768 K (Java/Others)Total Submission(s): 1496    Accepted Submission(s): 723 Problem Description Kelukin is a businessman. Every day, he travels arou

hdu6206 Apple 2017 ACM/ICPC Asia Regional Qingdao Online

地址:http://acm.split.hdu.edu.cn/showproblem.php?pid=6206 题目: Apple Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total Submission(s): 530    Accepted Submission(s): 172 Problem Description Apple is Taotao's favouri

2017 ACM/ICPC Asia Regional Shenyang Online

cable cable cable Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2084    Accepted Submission(s): 1348 Problem Description Connecting the display screen and signal sources which produce differen

2017 ACM/ICPC(西安)赛后总结

早上8:00的高铁,所以不得不6点前起床,向火车站赶……到达西安后已经是中午,西工大距离西安北站大概3小时车程的距离,只好先解决午饭再赶路了……下午3.30的热身赛,一行人在3.35左右赶到了赛场,坐下后立即开始读题,A题快速幂很快就通过了,B题是一道非常恶心的大模拟,本蒟蒻手敲近两小时wa的生活不能自理,终于在终场前发现一个小bug但是没有提交蛮遗憾(自信AC,捂脸逃~).晚上,回到酒店后,很早就睡觉了,并不像第一次参加区域赛那样紧张的很晚才入睡. 第二天的正式赛开始后,我和队友分别从前中后三

2017 ACM/ICPC(北京)总结

这个季节的,北京真的很冷. 下午的热身赛,我依然先去敲一道搜索题,但是很不幸这道搜索题坑点还是蛮多的,浪费了好长时间后依然没能A掉,期间Codeblocks崩溃一次使得代码完全丢失,在队友的建议下便暂时放弃去做计算几何题目,很庆幸计算几何的题目并不算很难(求二分+两圆相交面积)很快1A,A掉后便继续去做难道搜索题,因为我感觉自己的状态比较差,便让队友去敲,队友实现代码后因为对题意的理解有误,WA了几发之后才过掉,之后的题目是一道网络流,因为中间耽误了一段时间,继续敲网络流时间可能不够,所以我们队

2017 ACM/ICPC Asia Regional Shenyang Online 记录

这场比赛全程心态爆炸…… 开场脑子秀逗签到题WA了一发.之后0贡献. 前期状态全无 H题想复杂了,写了好久样例过不去. 然后这题还是队友过的…… 后期心态炸裂,A题后缀数组理解不深,无法特判k = 1时的情况. 然后也没有心思读题了,心静不下来. 比赛题目链接 Problem B $ans = k(n - k + 1)$ #include <bits/stdc++.h> using namespace std; typedef long long LL; LL n, k; int main()

2017 ACM/ICPC 广西邀请赛 题解

题目链接  Problems HDOJ上的题目顺序可能和现场比赛的题目顺序不一样, 我这里的是按照HDOJ的题目顺序来写的. Problem 1001 签到 #include <bits/stdc++.h> using namespace std; #define rep(i, a, b) for (int i(a); i <= (b); ++i) typedef long long LL; LL n, f[31]; int ans; int main(){ f[1] = 1LL; fo

2017 ACM/ICPC Asia Regional Qingdao Online

The Dominator of Strings Time Limit: 3000/3000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total Submission(s): 6778    Accepted Submission(s): 713 Problem Description Here you have a set of strings. A dominator is a string of the se