【链接】 我是链接,点我呀:)

【题意】

在这里输入题意

【题解】

写两个dfs模拟就好。
注意每12个数字输出一个换行。。

【代码】

/*
1.Shoud it use long long ?
2.Have you ever test several sample(at least therr) yourself?
3.Can you promise that the solution is right? At least,the main ideal
4.use the puts("") or putchar() or printf and such things?
5.init the used array or any value?
6.use error MAX_VALUE?
7.use scanf instead of cin/cout?
*/
#include <bits/stdc++.h>
using namespace std; const int N = 100; int n;
char s[N][N];
vector <long long> v; int numberblack(int x1,int y1,int x2,int y2){
int cnt = 0;
for (int i = x1;i <= x2;i++)
for (int j = y1;j<= y2;j++)
if (s[i][j]=='1')
cnt++;
return cnt;
} void dfs(int x1,int y1,int x2,int y2,int now,int xishu){
int temp1 = numberblack(x1,y1,x2,y2);
if (temp1==0) return;
int should = (x2-x1+1)*(y2-y1+1);
if (temp1==should){
v.push_back(now);
return;
}
int midx = (x1+x2)/2,midy = (y1+y2)/2;
dfs(x1,y1,midx,midy,now + 1*xishu,xishu*5);
dfs(x1,midy+1,midx,y2,now + 2*xishu,xishu*5);
dfs(midx+1,y1,x2,midy,now + 3*xishu,xishu*5);
dfs(midx+1,midy+1,x2,y2,now + 4*xishu,xishu*5);
} void fugai(int x1,int y1,int x2,int y2){
for (int i = x1;i <= x2;i++)
for (int j = y1;j <= y2;j++)
s[i][j] = '*';
} void dfs2(int x1,int y1,int x2,int y2,int rest){
if (rest==0){
fugai(x1,y1,x2,y2);
return;
}
int ope = rest%5; int midx = (x1+x2)/2,midy = (y1+y2)/2;
switch (ope){
case 1: dfs2(x1,y1,midx,midy,rest/5);break;
case 2: dfs2(x1,midy+1,midx,y2,rest/5);break;
case 3: dfs2(midx+1,y1,x2,midy,rest/5);break;
case 4: dfs2(midx+1,midy+1,x2,y2,rest/5);break;
}
} int main(){
#ifdef LOCAL_DEFINE
freopen("F:\\c++source\\rush_in.txt", "r", stdin);
freopen("F:\\c++source\\rush_out.txt", "w", stdout);
#endif
ios::sync_with_stdio(0),cin.tie(0);
int kase = 0;
while (cin >>n && n!=0){
if (kase>0) cout << endl;
kase++;
cout <<"Image "<<kase<<endl;
if (n>0){
v.clear();
for (int i = 1;i <= n;i++) cin >> (s[i]+1);
dfs(1,1,n,n,0,1);
sort(v.begin(),v.end());
for (int i = 0;i < (int) v.size();i++){
cout << v[i];
if ((i+1)%12==0 || i==(int) v.size()-1) cout << endl;else cout <<' ';
}
cout <<"Total number of black nodes = "<<(int) v.size()<<endl;
}else{
n = -n;
for (int i = 1;i <= n;i++)
for (int j =1 ;j <= n;j++) s[i][j] = '.';
int x;
for (cin >>x;x!=-1;cin>>x){
dfs2(1,1,n,n,x);
} for (int i = 1;i <= n;i++){
for (int j =1 ;j <= n;j++) cout <<s[i][j];
cout << endl;
}
}
}
return 0;
}

【习题 6-8 UVA - 806】Spatial Structures的更多相关文章

  1. UVA 806 Spatial Structures

    题意: 如果某一大区域所有色块颜色是相同的,那么这一个大区域就算作一块,如果不同,则将其划分成四个小区域,然后重复上述步骤递归进行直到所有区域的颜色相同为止.然后根据上面划分的区域建树,小区域作为大区 ...

  2. [刷题]算法竞赛入门经典(第2版) 6-8/UVa806 - Spatial Structures

    题意:黑白图像的路径表示法 代码:(Accepted,0.120s) //UVa806 - Spatial Structures //Accepted 0.120s //#define _XIENAO ...

  3. UVA-806 Spatial Structures (四分树)

    题目大意:将一块图像上的黑点在两种表示法之间转换. 题目分析:递归下去... 注意:输出时要注意细节!!! 代码如下: # include<iostream> # include<c ...

  4. UVa 806 四分树

    题意: 分析: 类似UVa 297, 模拟四分树四分的过程, 就是记录一个左上角, 记录宽度wideth, 然后每次w/2这样递归下去. 注意全黑是输出0, 不是输出1234. #include &l ...

  5. uva806 Spatial Structures 空间结构 (黑白图像的四分树表示)

    input 8 00000000 00000000 00001111 00001111 00011111 00111111 00111100 00111000 -8 9 14 17 22 23 44 ...

  6. ACM训练计划建议(写给本校acmer,欢迎围观和指正)

    ACM训练计划建议 From:freecode#  Date:2015/5/20 前言: 老师要我们整理一份训练计划给下一届的学弟学妹们,整理出来了,费了不少笔墨,就也将它放到博客园上供大家参考. 菜 ...

  7. ACM训练计划建议(转)

    ACM训练计划建议 From:freecode#  Date:2015/5/20 前言: 老师要我们整理一份训练计划给下一届的学弟学妹们,整理出来了,费了不少笔墨,就也将它放到博客园上供大家参考. 菜 ...

  8. 动态规划 Dynamic Programming 学习笔记

    文章以 CC-BY-SA 方式共享,此说明高于本站内其他说明. 本文尚未完工,但内容足够丰富,故提前发布. 内容包含大量 \(\LaTeX\) 公式,渲染可能需要一些时间,请耐心等待渲染(约 5s). ...

  9. UVa第五章STL应用 习题((解题报告))具体!

    例题5--9 数据库 Database UVa 1592 #include<iostream> #include<stdio.h> #include<string.h&g ...

随机推荐

  1. DELL T110 II 系统安装总结

    DELL T110 II  系统安装总结 1.RAID制作:https://jingyan.baidu.com/article/a3aad71ac4ce98b1fb0096bc.html 2.系统安装 ...

  2. js中split,splice,slice方法之间的差异。

    首先我们先来林格斯双击翻译一下: split  劈开, 使分裂: splice   接合; 使结合: slice  切成薄片, 切: 我先是这么区分的:这三个方法最后一个字母是t的是字符串方法,是e的 ...

  3. CentOS桥接网卡配置

    网桥方式配置步骤 1.增加网桥设备br0 vi /etc/sysconfig/network-scripts/ifcfg-br0 DEVICE=br0 ONBOOT=yes TYPE=Bridge B ...

  4. Python的主要库

    本文在Creative Commons许可证下发布 市面上的分析工具大致分为两大类,菜单式的工具和命令行式的工具.前者适合于初学入门,类似于跟团旅游,提供了固定的路线.分析套路比较固定化,点几下鼠标就 ...

  5. 视图中使用ROWNUM要注意

    昨天晚上帮一位兄弟优化一个ebs的sql. sql有好几百行. SQL的样子是select .... from 视图 where ....过滤条件 视图的代码贴出来就不给大家看了,比較长.另外设计保密 ...

  6. jquery2.0.3 全部源码

    /*! * Includes Sizzle.js 选择器,独立的库 * http://sizzlejs.com/ */ (function( window, undefined ) { //" ...

  7. js---16原型链

    var p = {name:"sss"}; var c2 = Object.create(p,{age:32,salar:"eee"});//c2就继承了p的属 ...

  8. Tools-->SQL Server Profiler监视数据库

    http://www.cnblogs.com/lorking/p/4062787.html https://docs.microsoft.com/en-us/sql/tools/sql-server- ...

  9. 误操作 rpm -e --nodeps zlib

    误删缘由:目的是要升级ssh版本,结果好像是冥冥之中有股力量在作祟迫使我粘了一条致死的命令rpm -e --nodeps  zlib就执行了,奇怪的是执行之后根本就全然不知.最后在敲rpm命令时居然报 ...

  10. Typedef和#define之间的区别

    Typedef和define都可以用来给对象取一个别名,但是两者却有着很大不同. 1. 首先,二者执行时间不同 关键字typedef在编译阶段有效,由于是在编译阶段,因此typedef有类型检查的功能 ...