日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

2015北京网络赛 G题 Boxes bfs

發(fā)布時間:2023/12/15 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2015北京网络赛 G题 Boxes bfs 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Boxes

Time Limit: 1 Sec ?

Memory Limit: 256 MB

題目連接

http://hihocoder.com/contest/acmicpc2015beijingonline/problem/7

Description

There is a strange storehouse in PKU. In this storehouse there are n slots for boxes, forming a line. In each slot you can pile up any amount of boxes. The limitation is that you can only pile a smaller one above a bigger one, in order to keep balance. The slots are numbered from 1 to n. The leftmost one is slot 1.

At first there is exactly one box in each slot. The volume of the box in slot i is vi. As a virgo, you decide to sort these boxes by moving some of them. In each move you can choose a slot and move the top box in this slot to an adjacent slot (of course you can only put it on the top). You should ensure that the limitation mentioned above is still satisfied after this move. After the sort operation, there should be exactly one box in each slot, and for each pair of adjacent slots, the box in the left one should be smaller than the box in the right one.

Your task is to calculate the minimum number of moves you need to sort the boxes.

Input

In the first line there’s an integer T(T≤6000), indicating the number of test cases. The following 2T lines describe the test cases.

In each test case, the first line contains an integer n, indicating the number of slots. The second line contains n integers v1,v2…vn, indicating the volume of the boxes. It is guaranteed that all vi?in a test case are different.

Please note that n<8,0≤vi≤104

Output

For each test case, print a line containing one integer indicating the answer. If there are infinity common points, print -1.

Sample Input

4
3
2 1 3
2
7 8
2
10000 1000
3
97 96 95

Sample Output

4
0
-1
20

HINT

?

題意

給你一堆盒子,每個盒子只能仍在旁邊比他大的上面,你每次只能操作當前位置最小的一個

然后問你最少多少次,可以使得盒子擺放有序

題解:

bfs爆搜……

惡心題,太麻煩了= =

代碼:

//qscqesze #include <cstdio> #include <cmath> #include <cstring> #include <ctime> #include <iostream> #include <algorithm> #include <set> #include <vector> #include <sstream> #include <queue> #include <typeinfo> #include <fstream> #include <map> #include <stack> typedef long long ll; using namespace std; //freopen("D.in","r",stdin); //freopen("D.out","w",stdout); #define sspeed ios_base::sync_with_stdio(0);cin.tie(0) #define maxn 2000000 + 500 #define mod 10007 #define eps 1e-9 int Num; char CH[20]; //const int inf=0x7fffffff; //нчоч╢С const int inf=0x3f3f3f3f; //**************************************************************************************int dp7[7][7][7][7][7][7][7]; int vis7[7][7][7][7][7][7][7]; int dp6[7][7][7][7][7][7]; int vis6[7][7][7][7][7][7]; int dp5[7][7][7][7][7]; int vis5[7][7][7][7][7]; int dp4[7][7][7][7]; int vis4[7][7][7][7]; int dp3[7][7][7]; int vis3[7][7][7]; int dp2[7][7]; int vis2[7][7]; int dp1[7]; int vis1[7]; map<int,int> H; int a[10]; int b[10]; int vvv[10]; struct node {int a[7];int step; }; int check(int a[],int num,int step) {if(num==7){if(vis7[a[0]][a[1]][a[2]][a[3]][a[4]][a[5]][a[6]])return 0;dp7[a[0]][a[1]][a[2]][a[3]][a[4]][a[5]][a[6]]=step;vis7[a[0]][a[1]][a[2]][a[3]][a[4]][a[5]][a[6]] = 1;return 1;}if(num==6){if(vis6[a[0]][a[1]][a[2]][a[3]][a[4]][a[5]])return 0;dp6[a[0]][a[1]][a[2]][a[3]][a[4]][a[5]]=step;vis6[a[0]][a[1]][a[2]][a[3]][a[4]][a[5]]= 1;return 1;}if(num==5){if(vis5[a[0]][a[1]][a[2]][a[3]][a[4]])return 0;dp5[a[0]][a[1]][a[2]][a[3]][a[4]]=step;vis5[a[0]][a[1]][a[2]][a[3]][a[4]]= 1;return 1;}if(num==4){if(vis4[a[0]][a[1]][a[2]][a[3]])return 0;dp4[a[0]][a[1]][a[2]][a[3]]=step;vis4[a[0]][a[1]][a[2]][a[3]]= 1;return 1;}if(num==3){if(vis3[a[0]][a[1]][a[2]])return 0;dp3[a[0]][a[1]][a[2]]=step;vis3[a[0]][a[1]][a[2]]= 1;return 1;}if(num==2){if(vis2[a[0]][a[1]])return 0;dp2[a[0]][a[1]]=step;vis2[a[0]][a[1]]= 1;return 1;}if(num==1){if(vis1[a[0]])return 0;dp1[a[0]]=step;vis1[a[0]]= 1;return 1;}return 0; } void solve(int ccc[],int step,int num) {node p;for(int i=0;i<num;i++)p.a[i]=ccc[i];int a[10];check(ccc,num,0);queue<node> Q;p.step = 0;Q.push(p);while(!Q.empty()){node k = Q.front();Q.pop();for(int i=0;i<num;i++)a[i]=k.a[i];for(int i=0;i<num;i++){int temp = a[i];int l = a[i]-1,r = a[i]+1;if(l<0)l=-1;if(r>=num)r=-1;for(int j=0;j<i;j++){if(a[j]==a[i]){l = -1;r = -1;}}for(int j=0;j<i;j++)if(a[j]==a[i]-1)l = -1;for(int j=0;j<i;j++)if(a[j]==a[i]+1)r = -1;if(l!=-1){a[i]=l;for(int i=0;i<num;i++)p.a[i]=a[i];p.step = k.step + 1;if(check(a,num,p.step))Q.push(p);a[i]=temp;}if(r!=-1){a[i]=r;for(int i=0;i<num;i++)p.a[i]=a[i];p.step = k.step + 1;if(check(a,num,p.step))Q.push(p);a[i]=temp;}}} }int main() {int t;scanf("%d",&t);int c[7];memset(dp7,-1,sizeof(dp7));memset(dp6,-1,sizeof(dp6));memset(dp5,-1,sizeof(dp5));memset(dp4,-1,sizeof(dp4));memset(dp3,-1,sizeof(dp3));memset(dp2,-1,sizeof(dp2));memset(dp1,-1,sizeof(dp1));for(int i=0;i<7;i++)c[i]=i;for(int i=0;i<7;i++)solve(c,0,i+1);while(t--){H.clear();vector<int> Q;int n;scanf("%d",&n);for(int i=0;i<n;i++){scanf("%d",&a[i]);Q.push_back(a[i]);}sort(Q.begin(),Q.end());for(int i=0;i<Q.size();i++)H[Q[i]]=i;for(int i=0;i<n;i++)b[H[a[i]]]=i;if(n==1){if(b[0]==0)printf("0\n");elseprintf("%d\n",dp1[b[0]]);}if(n==2){if(b[0]==0&&b[1]==1)printf("0\n");elseprintf("%d\n",dp2[b[0]][b[1]]);}if(n==3){if(b[0]==0&&b[1]==1&&b[2]==2)printf("0\n");elseprintf("%d\n",dp3[b[0]][b[1]][b[2]]);}if(n==4){if(b[0]==0&&b[1]==1&&b[2]==2&&b[3]==3)printf("0\n");elseprintf("%d\n",dp4[b[0]][b[1]][b[2]][b[3]]);}if(n==5){if(b[0]==0&&b[1]==1&&b[2]==2&&b[3]==3&&b[4]==4)printf("0\n");elseprintf("%d\n",dp5[b[0]][b[1]][b[2]][b[3]][b[4]]);}if(n==6){if(b[0]==0&&b[1]==1&&b[2]==2&&b[3]==3&&b[4]==4&&b[5]==5)printf("0\n");elseprintf("%d\n",dp6[b[0]][b[1]][b[2]][b[3]][b[4]][b[5]]);}if(n==7){if(b[0]==0&&b[1]==1&&b[2]==2&&b[3]==3&&b[4]==4&&b[5]==5&&b[6]==6)printf("0\n");elseprintf("%d\n",dp7[b[0]][b[1]][b[2]][b[3]][b[4]][b[5]][b[6]]);}} }

?

總結(jié)

以上是生活随笔為你收集整理的2015北京网络赛 G题 Boxes bfs的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美熟妇交换久久久久久分类 | 久久曰视频 | 九九爱精品视频 | 偷拍综合网 | 国产精品人人妻人人爽 | 久久久久女教师免费一区 | 另类综合网 | 国产精品主播 | 理论片在线观看视频 | 大乳女喂男人吃奶 | 欧美老女人视频 | 成人午夜看片 | 午夜一区在线观看 | 曰本黄色大片 | 亚洲女人18毛片水真多 | 狠狠干2023| 日韩成年视频 | 最新国产拍偷乱偷精品 | 午夜色影院| av网站大全免费 | 原神淫辱系列同人h | 国产噜噜噜 | 日韩亚洲在线 | 国产女人被狂躁到高潮小说 | 欧美日韩四区 | 美女av在线播放 | 最新中文字幕免费 | xxxx18日本| 国产盗摄视频在线观看 | 男人的天堂网在线 | 欧美精品电影一区二区 | 99热国产| 亚洲午夜久久久久久久久 | 国产精视频 | 日本在线网址 | 深夜av| 国产麻豆一区二区 | 77久久| 亚洲激情一区 | 亚洲中文字幕视频一区 | 小妹色播| 色先锋在线 | 中文字幕在线观看免费 | 久久久久夜夜夜精品国产 | 狠狠撸在线观看 | 亚洲精品成人无码毛片 | www.久久国产 | 免费播放毛片精品视频 | 午夜时刻免费入口 | 91亚瑟视频 | 中文字幕乱伦视频 | 久久人妻少妇嫩草av蜜桃 | 日韩成人av免费在线观看 | 又黄又骚又爽 | 黄色69视频 | 岳乳丰满一区二区三区 | 久久免费视频观看 | 亚洲热视频| 黄色在线不卡 | 国产在线观看黄 | 狠狠网| 一区二区在线视频免费观看 | 国产资源一区 | 99久久久无码国产精品性 | 337p亚洲欧洲色噜噜噜 | 最近中文在线观看 | 久久久久久久影视 | 亚洲欧美日韩一区在线观看 | 欧美激情小视频 | 日韩一区二区三区精 | 在线播放国产一区 | 亚洲视频免费在线播放 | 欧美在线一级视频 | 毛片内射久久久一区 | 午夜老司机免费视频 | 色人阁av| 一品毛片 | 日本久久久久久久久 | 日韩精品久久久久久久电影99爱 | 黄色在线播放 | 国产精品久久久久久亚洲 | 亚洲精品乱码久久久久久写真 | 九九午夜 | 欧美在线一二三 | 成人免费区一区二区三区 | 性久久久久久久久 | 国产一级片av | 国产色综合视频 | 69精品久久久久久久 | 国产午夜精品免费一区二区三区视频 | 欧美午夜激情影院 | 无码人妻av一区二区三区波多野 | 韩日午夜在线资源一区二区 | 熟妇人妻久久中文字幕 | 日韩欧美中文在线观看 | 国产一区亚洲二区 | 日本精品在线播放 | 久久女同互慰一区二区三区 | 亚洲精品第三页 |