AYIT 2020 609暑假集訓第一周周賽題題解

2021-10-08 12:33:07 字數 3548 閱讀 4555

題意:中文題很好理解;

思路:開個三維陣列來存放地圖,bfs板子,只是在"#"的地方要換下位置就可以了。

ac**:

#include#include#include#include#include#include#include#includeusing namespace std;

#define inf 0x3f3f3f3f

#define ll long long

#define mod 1000000007

#define eps 1e-9

#define pi acos(-1.0)

#define mem(a,b) memset(a,b,sizeof(a))

char s[3][12][12];//三維陣列存圖

int n,m,k,a[10],t;

int book[12][12][12];//三維陣列標記

int to[4][2]= ,,,};//四個方向

struct node

;void bfs()

for(int i=0; i<4; i++)

;int t,n,m;

int book[120][120][119];//標記三個瓶子的狀態

void dfs()

for(int i=0; i<6; i++)//一共六種情況,自己推導一下

else

v.y=u.y;

}if(i==1)//z-->y

else

v.x=u.x;

}if(i==2)//x-->y

else

v.z=u.z;

}if(i==3)//y-->x

else

v.z=u.z;

}if(i==4)//x-->z

if(i==5)//y-->z

if(book[v.z][v.x][v.y]==0)}}

printf("no\n");

}int main()

else

dfs();

}return 0;

}

題意:這個一道簡單的深搜題,並輸出路徑,把所有的情況都輸出出來。

思路:直接用深搜板子寫即可,注意細節我在**中注發布來,不要被它的輸出嚇到了。

ac**:

#include#include#includeusing namespace std;

int s[21][3],d[21];

int n,book[30],l;

void dfs(int x,int y)

printf("%d",d[0]);

printf("\n");

return ;

}for(int j=0; j<=2; j++)

}return ;

}int main()

while(~scanf("%d",&n)&&n!=0)

return 0;

}

題意:三角形的三個點的座標,求出這個三角形的重心。

思路:超級簡單的一道題,套用公式即可:

ac**:

#include#include#includeusing namespace std;

int main()}}

題意:給乙個狀態讓你變成給定狀態12345678x,輸出路徑,如果不行輸出unsolvable;注意:路徑不唯一。

思路:把所有的情況都列出來,例1 2 3 4 5 6 7 x 8,只需將x向右移動一次,並記錄這個路徑。康托展開:詳細介紹:  大家也可以用map容器進行存路徑,也是可以的。

康托展開的**:

for(int i=0; i<9; i++)

ac**:

#include#include#include#includeusing namespace std;

struct node

;int s[5][5],book[400000],jc[11];

char book1[400000];

int to[4][2]= ,,,} ;//方向d,r,u,l;

void bfs()

v.z=sum;

if(book[sum]==-1)//記錄路徑}}

}}int main()

if(book[num]==-1)

printf("unsolvable");

else

while(num!=0)

printf("\n");

}return 0;

}//1 2 3 4 x 5 6 7 8  rdllurdrulldrr

題意:給出魔方六面,每一面標號如上,給出一種排列,你需要把它復原,求最少步數和步驟,不能超過5步。1表示順時針,-1表示逆時針。

思路:用ida*搜尋,因為中心顏色確定,找出每個面與中心顏色不同的數量, 每次旋轉最多改變12個, 當不同數量/12>深度時剪枝。

ac**:

#include#include#include#include#include#include#include#include#include#includeusing namespace std;

#define inf 0x3f3f3f3f

#define ll long long

#define mod 1000000007

#define mem(a,b) memset(a,b,sizeof(a))

#define pi acos(-1.0)

#define eps 1e-8

#define n 1000100

int n,m;

int flag,sum,res[10];

int row[6][8]=

,,, ,,

};int change[12][20]=

, ,,,

,,,,

,,

,};int cen[6]= ;

char s[11],c[60],ct[60];

int lenn(char *tmp)

return (ans+2)/3;

}void idastar(int step, char a, int fa)

char tmp[60];

for(int i=0; i<12; i++)

}int main()

flag=0;

sum=lenn(c);

while(sum<=5)

sum++;

}if(!flag)

printf("-1\n");

}return 0;

}

暑假集訓總結

華信暑假集訓總結 暑假乙個月的總結 第一 就是不夠細心,關於這一點,在前兩次的總結都有提到,但是自己這次還是沒有改正過來,說明自己確實是粗心,不過在以後的學習過程中還是要克服這個問題!第二 自己寫的 結構很亂,模擬較多時,經常都會找不到自己在 定義的,這個又是在 寫的。所以在接下來的過程中,自己還是...

暑假集訓總結

暑假集訓這就結束了,這個暑假算是上學以來最充實的乙個暑假了,乙個暑假除了休息的兩個周之外,都在好好的學習,雖然每天從早坐到晚,一直在電腦面前冥思苦想,一遍遍的問自己 我到底錯在哪了 但還是有好多的收穫,學習到了知識,提高了自己寫 的能力,鍛鍊了思考問題的能力,而且還提前體驗一把碼農的感覺,近乙個月的...

暑假集訓總結

三十五天的集訓生活,伴隨著我們最後一次的個人賽的結束而結束了。這乙個多月的三點一線的生活,讓我再次感受到,為自己目標奮鬥的滿足感!1,集訓,讓我收穫的不僅僅是學習新的知識,還教會了我做人做事的大道理。從剛開始的分組賽到個人賽再到組隊賽,整個暑假集訓經歷了二十幾場比賽,很感激自己能一直遵守比賽規則到最...