CodeForces 26C Parquet 構造題

來源:互聯網
上載者:User

標籤:blog   http   os   2014   for   io   

題目連結:點擊開啟連結

#include <stdio.h>#include <string.h>#include <iostream>#include <algorithm>#include <math.h>#include <set>using namespace std;#define N 105int n,m,a,b,c;char s[N][N];set<char>myset;bool inmap(int x,int y){return 0<=x&&x<n&&0<=y&&y<m;}int step[4][2] = {0,1,0,-1,1,0,-1,0};void hehe(int x,int y){for(int i = 0; i < 4; i++) {int nowx = step[i][0]+x,nowy = step[i][1]+y;if(!inmap(nowx,nowy)||!s[nowx][nowy])continue;myset.insert(s[nowx][nowy]);}}char find(int x1,int y1, int x2, int y2){myset.clear();for(int i = x1; i <= x2; i++)for(int j = y1; j <= y2; j++)hehe(i,j);for(int i = 0; i < 26; i++)if(myset.find(i+'a')==myset.end())return i+'a';}bool work(){if((n&1)&&(m&1))return false;if(n*m > (2*a+2*b+4*c))return false;memset(s, 0, sizeof s);int h = 0, l = 0;if(n&1) {for(int i = 0; i < m; i+=2)s[0][i]=s[0][i+1]= find(0,i,0,i+1),a--;if(a<0)return false;h = 1;}if(m&1){for(int i = 0; i < n; i+=2)s[i][0]=s[i+1][0]=find(i,0,i+1,0),b--;if(b<0)return false;l = 1;}a-=(a&1);b-=(b&1);if((n-h)*(m-l)>(2*a+2*b+4*c))return false;int i;for(i = h; i < n; i+=2) {int j = l;while(a>=2&&j<m) {s[i][j] = s[i][j+1] = find(i,j,i,j+1);s[i+1][j] = s[i+1][j+1] = find(i+1,j,i+1,j+1);j+=2;a-=2;}while(b>=2&&j<m) {s[i][j] = s[i+1][j] = find(i,j,i+1,j);s[i][j+1] = s[i+1][j+1] = find(i,j+1,i+1,j+1);j+=2;b-=2;}while(c&&j<m) {s[i][j] = s[i][j+1] = s[i+1][j] = s[i+1][j+1] = find(i,j,i+1,j+1);j+=2;c--;}if(j<m)return false;}if(i<n)return false;return true;}int main(){while(~scanf("%d %d %d %d %d",&n,&m,&a,&b,&c)){bool ans = work();if(ans){for(int i=0;i<n;i++)puts(s[i]);}else puts("IMPOSSIBLE");}return 0;}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.