题意是说用k重颜色填充n*m的方格,第i种颜色要用ci次,保证ci(i属于1..k)的和为n"m,问是否有可行解,若有,输出任意一种。
第一感觉是dfs.。。而且数据范围还那么小。但是鉴于我上次dfs写成汪的经历....嗯 不过群里有学长说似乎剪枝不太好想?
我一开始分了四类,o行o列,e行e列,e行o列,o行e列,(o是odd,e是even)然后将c[i]排序,先填大的C[I],感觉这样应该更容易找到解。交了一发,WA掉了。。发现当k较小的时候,也就是c[i]都相对较大的时候,先填大的C[I]的策略会出现错误。于是我换了下....按c[i]的大小从两边往中间...然后我还发现其实o行o列和e行e列可以归为一类,同理,后两种也可以归为一类。又交,又WA2333333  然后想了好久。。。 发现对于上面说的两类的处理顺序不同会得到不同的结果.......只有一种是对的。于是加了个judge函数判断冲突...如果冲突就换个顺序.....再交,A了。

过程中出现了两个语法上的错误....一个是=写成了==(从来都是把==写成=。。。) 
                            另一个是无参数的函数依然要写()。。。。。。

确实不难....的确是我生疏了。

C++语言: 高亮代码由发芽网提供
001 #include <iostream>
002 #include <algorithm>
003 #include <cstring>
004 
005 using namespace std;
006 
007     int c[100],cc[100];
008     int ans[10][10];
009     int colorid[100];
010     int n,m,k;
011     void look();
012 bool judge();
013 
014 
015 int main()
016 {
017     int tt;
018     int t;
019     int kk;
020 
021     cin>>t;
022     tt=t;
023 
024 
025     int i,j;
026     int head;
027     int flag;
028    while (t--)
029     {  head=1;
030     flag=1;
031          memset(ans,0,sizeof(ans));
032         cin>>n>>m>>k;
033         kk=k;
034         for (i=1;i<=k;i++)
035             cin>>c[i];
036 
037         for (i=1;i<=k;i++)
038             colorid[i]=i;
039         for (i=1;i<k;i++)
040             for (j=i+1;j<=k;j++)
041             if (c[i]>c[j])
042             {
043               swap(c[i],c[j]);
044               swap(colorid[i],colorid[j]);
045             }
046              for (i=1;i<=k;i++)
047                 cc[i]=c[i];
048 
049 
050 
051         if (c[k]>(n*m+1)/2)  { cout<<"Case #"<<tt-t<<":"<<endl;cout<<"NO"<<endl;continue;}
052 
053         for (i=1;i<=n;i++)
054             for (j=1;j<=m;j++)
055                 if ((i%2+j%2)%2==1)
056                 {
057                   if (flag%2==1)
058                   {
059 
060 
061                      ans[i][j]=colorid[k];
062                     // cout<<"i:"<<i<<"j:"<<j<<" "<<colorid[k]<<endl;
063 
064                      c[k]--;
065                      if (c[k]==0)
066                         {
067                             k--;
068                             flag++;
069 
070                         }
071                   }
072                   else
073                     {
074                         ans[i][j]=colorid[head];
075 
076                     //    cout<<"i:"<<i<<"j:"<<j<<"  "<<colorid[head]<<endl;
077                         c[head]--;
078                         if (c[head]==0)
079                         {
080                             head++;
081                             flag++;
082 
083                         }
084                     }
085                   //  look();
086                 }
087 
088 
089                 for (i=1;i<=n;i++)
090             for (j=1;j<=m;j++)
091                 if ((i%2+j%2)%2==0)
092                 {
093 
094 
095                     if (flag%2==1)
096                   {
097 
098 
099                      ans[i][j]=colorid[k];
100                   //   cout<<"i:"<<i<<"j:"<<j<<" "<<colorid[k]<<endl;
101                      c[k]--;
102                      if (c[k]==0)
103                         {
104                             k--;
105                               flag++;
106                         }
107                   }
108                   else
109                     {
110                         ans[i][j]=colorid[head];
111                       // cout<<"i:"<<i<<"j:"<<j<<"  "<<colorid[head]<<endl;
112                         c[head]--;
113                         if (c[head]==0)
114                         {
115                             head++;
116                            flag++;
117                         }
118                     }
119                  //   look();
120                 }
121                cout<<"Case #"<<tt-t<<":"<<endl;
122                cout<<"YES"<<endl;
123 
124                 if (!judge())
125                      look();
126                else
127                {
128 
129 
130                    k=kk;
131                    head=1;
132                    flag=1;
133                    for (i=1;i<=k;i++)
134                        c[i]=cc[i];
135                    memset(ans,0,sizeof(ans));
136 
137                    for (i=1;i<=n;i++)
138                     for (j=1;j<=m;j++)
139                         if ((i%2+j%2)%2==0)
140                     {
141                         if (flag%2==1)
142                         {
143                      ans[i][j]=colorid[k];
144                    //  cout<<"i:"<<i<<"j:"<<j<<" "<<colorid[k]<<endl;
145 
146                      c[k]--;
147                      if (c[k]==0)
148                         {
149                             k--;
150                             flag++;
151 
152                         }
153                   }
154                   else
155                     {
156                         ans[i][j]=colorid[head];
157 
158                      //   cout<<"i:"<<i<<"j:"<<j<<"  "<<colorid[head]<<endl;
159                         c[head]--;
160                         if (c[head]==0)
161                         {
162                             head++;
163                             flag++;
164 
165                         }
166                     }
167                   //  look();
168                 }
169                 for (i=1;i<=n;i++)
170             for (j=1;j<=m;j++)
171                 if ((i%2+j%2)%2==1)
172                 {
173 
174 
175                     if (flag%2==1)
176                   {
177 
178 
179                      ans[i][j]=colorid[k];
180                     // cout<<"i:"<<i<<"j:"<<j<<" "<<colorid[k]<<endl;
181                      c[k]--;
182                      if (c[k]==0)
183                         {
184                             k--;
185                               flag++;
186                         }
187                   }
188                   else
189                     {
190                         ans[i][j]=colorid[head];
191                      //  cout<<"i:"<<i<<"j:"<<j<<"  "<<colorid[head]<<endl;
192                         c[head]--;
193                         if (c[head]==0)
194                         {
195                             head++;
196                            flag++;
197                         }
198                     }
199                  //   look();
200                 }
201                   look();
202 
203                }
204 
205 
206 
207     }
208     return 0;
209 }
210 
211 
212 void look()
213 {
214     //  cout<<"lookkkkkkkkkkkkkkkkkkkkk"<<endl;
215     int i,j;
216     for (i=1;i<=n;i++)
217         for (j=1;j<=m;j++)
218             if (j!=m)
219           cout<<ans[i][j]<<" ";
220          else cout<<ans[i][j]<<endl;
221 
222 }
223 bool judge()
224 {
225     int i,j;
226     for (i=1;i<=n;i++)
227         for (j=1;j<m;j++)
228          if (ans[i][j]==ans[i][j+1])
229            return true;
230     for (i=1;i<n;i++)
231         for (j=1;j<=m;j++)
232         if (ans[i][j]==ans[i+1][j])
233           return true;
234       return false;
235 }

转载于:https://www.cnblogs.com/111qqz/p/4295350.html

hustwinter1-A - Black And White相关推荐

  1. iOS开发系列--通讯录、蓝牙、内购、GameCenter、iCloud、Passbook系统服务等等

    --系统应用与系统服务 iOS开发过程中有时候难免会使用iOS内置的一些应用软件和服务,例如QQ通讯录.微信电话本会使用iOS的通讯录,一些第三方软件会在应用内发送短信等.今天将和大家一起学习如何使用 ...

  2. UI自动化测试工具White简介以及使用经验总结(一)

    一.White简介 White是微软开发的一个开源工具,它提供了一套主要用于UI测试的框架.它适用于WinForm, WPF, Win32 以及SWT(java)的测试. White是用C#开发的,但 ...

  3. 使用TestStack.White进行Windows UI的自动化测试 (1) 基础篇

    参考  https://www.dazhuanlan.com/2019/09/04/8c18f8874287/ 本文章将简单介绍TestStack.White这个Windows UI自动化测试的套件, ...

  4. TestStack.White安装详解

    参考: http://teststack.azurewebsites.net/White/GettingStarted.html 1. 使用VS2010以上版本 因为TestStack.White是通 ...

  5. UCL葡萄酒(red white wine quality)数据集字段解释、数据导入实战

    UCL葡萄酒(red white wine quality)数据集字段解释.数据导入实战 目录 UCL葡萄酒(red white wine quality)数据集字段解释.数据导入实战 #数据字段说明 ...

  6. R语言White’s检验实战:检验回归模型中是否存在异方差性(heteroscedasticity)、发生了异常差(heteroscedasticity)问题如何解决

    R语言White's检验实战:检验回归模型中是否存在异方差性(heteroscedasticity).发生了异常差(heteroscedasticity)问题如何解决 目录

  7. Snow White,摘自iOS应用Snow White and more stories

    Once upon a time, there was a land. 从前,有个国度. It was ruled by an evil queen. 它被一位邪恶的女王统治. Every day t ...

  8. BZOJ3336: Uva10572 Black and White(插头Dp)

    解题思路: 分类讨论即可. 代码(懒得删Debug了): 1 #include<map> 2 #include<cstdio> 3 #include<vector> ...

  9. Simulink模块之Band-Limited White Noise

    Simulink模块之Band-Limited White Noise - 尽数空 - 博客园

  10. 牛客多校三 B Black and white

    牛客多校三 B Black and white 在n*m的棋盘上,每个格子有一个数,初始可以选一定的格子标记为黑色,在任意四个形如(i1, j1)(i1, j2)(i2, j1)(i2, j2)的格子 ...

最新文章

  1. [.Net跨平台]部署DTCMS到Jexus遇到的问题及解决思路---Linux环境搭建
  2. C#(WPF)去除事件中注册的事件处理方法!
  3. three.js 背景图片
  4. C#中自定义PictureBox控件
  5. IOS开发之UI手势
  6. 阿里巴巴开源项目: 基于mysql数据库binlog的增量订阅消费
  7. python求解方程组
  8. Robust 源代码分析之gradle-plugin
  9. echarts瀑布图_ECharts · Example
  10. P1297 [国家集训队]单选错位 期望
  11. 重磅!百度飞桨开源语音基础模型库|中英文语音识别、语音翻译、语音合成、声音分类通通一行代码轻松搞定...
  12. 虚拟机linux下git clone 报SSL connect error错误
  13. 统计学中sp_用excel和sp和ss学统计学.doc
  14. 物联网开发笔记(29)- 使用Micropython开发ESP32开发板之控制240x240的oled屏幕显示动态图片GIF(ST7789芯片)
  15. navicat 执行sql文件
  16. c语言解除键盘锁定,解除键盘锁定,详细教您笔记本解除键盘锁定
  17. 从前慢-Shiro和JWT
  18. 如何快速查找下载外文文献,哪个文献下载网站好用
  19. RTSP协议网络摄像头如何实现内网到公网的无插件直播,同时支持微信扫码直播观看?
  20. 这个扯淡的世界!一个80后眼中的中国经济

热门文章

  1. php做网站购物车 你搞懂了吗?
  2. python和c++哪个好-Scratch和Python与C++三种编程语言选哪个好
  3. 关于正交变换和正交矩阵
  4. “十四五”地表水水质国控断面坐标位置数据(共3613个点位,含断面名称、所在流域、所在水体、水体类型、经度、纬度、断面属性、所在省份、所在地市)
  5. 初中计算机应用教案,初中计算机教案
  6. C# Socket之UDP通信
  7. 2018年数学建模国赛B题
  8. ps磨皮插件Portraiture分享
  9. AD绘图中遇到的问题(集)
  10. 网吧专用Ros软路由+Winbox教程