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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2017南宁网络赛 Problem J Minimum Distance in a Star Graph ( 模拟 )相关的知识,希望对你有一定的参考价值。

题意 : 乱七八糟说了一大堆,实际上就是问你从一个序列到另个序列最少经过多少步的变化,每一次变化只能取序列的任意一个元素去和首元素互换

 

分析 : 由于只能和第一个元素去互换这种操作,所以没啥最优的特别方法,只要乖乖模拟即可,如果第一个元素不在正确位置则将它和正确位置的元素交换使其回到正确位置,如果第一个元素的位置就是正确的,那么就往后找不在正确位置的元素将它互换到第一个去,然后再对第一个元素进行判断即可,直到序列变成最终满足条件的序列........

 

技术分享
#include<bits/stdc++.h>
using namespace std;
map<char, int> pos;
char st[11], en[11];
int n;
bool OK()
{
    for(int i=0; i<n; i++){
        if(st[i] != en[i])
            return false;
    }return true;
}
int main(void)
{
    scanf("%d", &n);
    for(int t=1; t<=5; t++){
        pos.clear();
        scanf("%s %s", st, en);
        for(int i=0; i<n; i++){
            pos[en[i]] = i;///记录每一个数字的正确位置
        }
        int ans = 0;
        int p = 0;
        while(!OK()){///每一次检查一下序列是否已经变成了最终序列
            if(en[0] != st[0]){
                swap(st[0], st[pos[st[0]]]);
                ans++;
            }else{
                for(int i=1; i<n; i++){
                    if(en[i] != st[i]){
                        swap(st[0], st[i]);
                        ans++;
                        break;
                    }
                }
            }
        }
        printf("%d\n", ans);
    }
    return 0;
}
View Code

 

瞎 : 做题经验不够,不能根据通过人数大胆往简单方向想,导致一直在乱七八糟找规律,期间还写了个BFS进行状态图搜索,导致在这个题浪费挺多时间(ノ`Д)ノ

以上是关于2017南宁网络赛 Problem J Minimum Distance in a Star Graph ( 模拟 )的主要内容,如果未能解决你的问题,请参考以下文章

2017acm南宁现场赛 J题 Rearrangement

2017 icpc 南宁网络赛

2017 ACM-ICPC 亚洲区(南宁赛区)网络赛 B题

GSM Base Station Identification 2017南宁网络赛

2017 ACM-ICPC 亚洲区(南宁赛区)网络赛 Overlapping Rectangles 矩形并面积和

2017 ACM-ICPC 亚洲区(南宁赛区)网络赛 GSM Base Station Identification (点在多边形内模板)