UVA101积木模拟问题,vector整体擦除和整体插入的使用

来源:互联网 发布:python 替换 16进制 编辑:程序博客网 时间:2024/06/02 04:52

这题先是WA了三发,然后感觉不科学,看了下题解,原来自己把题意完全理解错了,

重新改了下,然后莫名其妙RE一发,然后T了三发,早晨醒来去掉几个if语句竟然过了

3000ms超时瞬间变成了3ms,但是我感觉就去掉了几个if语句而已对于总的时间复杂度应该没有

影响的,队友告诉我去掉几个if语句相当于很大的剪枝,弱渣表示刚刚知道。

看了别人的题解,感觉自己的vector代码比别人简单,思路比别人清晰,而且好理解。

#include<iostream>#include<cstdio>#include<cstring>#include<cstdlib>#include<string>#include<cctype>#include<cmath>#include<map>#include<set>#include<vector>#include<queue>#include<stack>#include<ctime>#define LL __int64using namespace std;vector<int> v[29];int main(){    int n;    while(cin>>n)    {        string s;        for(int i=0;i<n;i++)        {            v[i].clear();            v[i].push_back(i);        }        while(cin>>s&&s!="quit")        {            int a,b;            string s1;            cin>>a>>s1>>b;          // cout<<s<<' '<<a<<' '<<s1<<' '<<b<<endl;            if(a==b)            continue;            int ax=0,bx=0,ay=0,by=0;            for(int i=0;i<n;i++)            {                for(int j=0;j<(int)v[i].size();j++)                {                    if(v[i][j]==a)                    {                        ax=i;                        ay=j;                    }                    else if(v[i][j]==b)                    {                        bx=i;                        by=j;                    }                }            }          //  cout<<ax<<' '<<ay<<' '<<bx<<' '<<by<<endl;            if(ax==bx)            {               // cout<<"sb"<<endl;                continue;            }            if(s[0]=='m')            {                for(int i=ay+1;i<(int)v[ax].size();i++)                {                    int vv=v[ax][i];                    v[vv].insert(v[vv].begin(),vv);                }                v[ax].erase(v[ax].begin()+ay+1,v[ax].end());            }            if(s1[1]=='n')            {                for(int i=by+1;i<(int)v[bx].size();i++)                {                    int vv=v[bx][i];                    v[vv].insert(v[vv].begin(),vv);                }                v[bx].erase(v[bx].begin()+by+1,v[bx].end());            }            v[bx].insert(v[bx].end(),v[ax].begin()+ay,v[ax].end());            v[ax].erase(v[ax].begin()+ay,v[ax].end());        }        for(int i=0;i<n;i++)        {            cout<<i<<':';            for(int j=0;j<(int)v[i].size();j++)                cout<<' '<<v[i][j];            cout<<endl;        }    }    /*vector<int> a;    a.push_back(1);    a.push_back(2);    vector<int> b;    b.push_back(5);    b.push_back(6);    a.insert(a.begin(),b.begin(),b.end());    a.erase(a.begin());    for(int i=0;i<a.size();i++)        cout<<a[i];*/    return 0;}


0 0
原创粉丝点击