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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Grid Coloring(AtCoder-2687)

發布時間:2025/3/17 编程问答 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Grid Coloring(AtCoder-2687) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Problem Description

We have a grid with H rows and W columns of squares. Snuke is painting these squares in colors 1, 2, …, N. Here, the following conditions should be satisfied:

For each i (1≤i≤N), there are exactly ai squares painted in Color i. Here, a1+a2+…+aN=HW.
For each i (1≤i≤N), the squares painted in Color i are 4-connected. That is, every square painted in Color i can be reached from every square painted in Color i by repeatedly traveling to a horizontally or vertically adjacent square painted in Color i.
Find a way to paint the squares so that the conditions are satisfied. It can be shown that a solution always exists.

Constraints

  • 1≤H,W≤100
  • 1≤N≤HW
  • ai≥1
  • a1+a2+…+aN=HW

Input

Input is given from Standard Input in the following format:

H W
N
a1 a2 … aN

Output

Print one way to paint the squares that satisfies the conditions. Output in the following format:

c11 … c1W
:
cH1 … cHW
Here, cij is the color of the square at the i-th row from the top and j-th column from the left.

Example

Sample Input 1

2 2
3
2 1 1

Sample Output 1

1 1
2 3
Below is an example of an invalid solution:

1 2
3 1
This is because the squares painted in Color 1 are not 4-connected.

Sample Input 2

3 5
5
1 2 3 4 5

Sample Output 2

1 4 4 4 3
2 5 4 5 3
2 5 5 5 3

Sample Input 3

1 1
1
1

Sample Output 3

1

題意:有一個?h*w 的區域,要在這些方格上涂 n 種顏色,第 i 種顏色涂 ai 個,對于每一種顏色,其涂得方塊均可以通過上下左右移動到達同種顏色的區域,即相同顏色涂得方塊是連通的,輸出一種涂色方法

思路:由于要求同種顏色是連通的,且任意輸出一種方法,那么從對于 h*w 個方格,從第一個開始從上到下走 S 型涂色即可

Source Program

#include<iostream> #include<cstdio> #include<cstdlib> #include<string> #include<cstring> #include<cmath> #include<ctime> #include<algorithm> #include<utility> #include<stack> #include<queue> #include<vector> #include<set> #include<map> #include<bitset> #define EPS 1e-9 #define PI acos(-1.0) #define INF 0x3f3f3f3f #define LL long long const int MOD = 1E9+7; const int N = 100+5; const int dx[] = {-1,1,0,0,-1,-1,1,1}; const int dy[] = {0,0,-1,1,-1,1,-1,1}; using namespace std;int a[N*N]; int G[N][N]; int main() {int h,w,n;scanf("%d%d",&h,&w);scanf("%d",&n);for(int i=1; i<=n; i++)scanf("%d",&a[i]);int cnt=1;for(int i=1; i<=h; i++) {if(i%2) {for(int j=1; j<=w; j++) {if(a[cnt]==0) {cnt++;G[i][j]=cnt;a[cnt]--;}else if(a[cnt]>0) {G[i][j]=cnt;a[cnt]--;}}}else {for(int j=w; j>=1; j--) {if(a[cnt]==0) {cnt++;G[i][j]=cnt;a[cnt]--;}else if(a[cnt]>0) {G[i][j]=cnt;a[cnt]--;}}}}for(int i=1; i<=h; i++) {for(int j=1; j<=w; j++)printf("%d ",G[i][j]);printf("\n");}return 0; }

?

總結

以上是生活随笔為你收集整理的Grid Coloring(AtCoder-2687)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。