第四题:恺撒的规划(NOIP2009测试试题12.08)
来源:互联网 发布:名片设计软件免费下载 编辑:程序博客网 时间:2024/05/18 03:30
恺撒的规划
亚特兰蒂斯是一块富饶美丽的土地。恺撒大帝率领他的大军,经过了一整年的浴血奋战,
终于将它纳入了罗马帝国的版图。然而,长期的战火彻底抹去了这里的繁华,昔日的富庶之地如今一片荒芜。恺撒大帝作为一位有着雄才大略的君主,决心在战争的废墟上建起一座更为宏伟的城市。所以,在建城之前,他需要对整个城市进行规划。
亚特兰蒂斯是一块矩形平原,恺撒准备在上面修建一些建筑。为了规划方便,他将矩形划分成N*M格。棘手的是,部分古老的神庙残存下来,散布在某些格子内。亚特兰蒂斯的原住民原本就十分信奉神灵,而这些经过战火洗礼的神庙更是被他们视为圣物,是万万不能拆除的,否则将激起民愤,甚至引发暴动。恺撒深知这一点,因此,他的新建筑在选址时要避开这些神庙。
假设新的建筑物有P种规格,每种建筑物都是正方形的,占地为Ti *Ti格 (1<=i<=P)。恺撒想知道对于每种规格的建筑,有多少种不同的合适选址方案(一种合适的选址方案指的是在该建筑所占的正方形区域内不存在神庙)。作为他的内务部长,这个光荣而艰巨的任务自然交给你来完成。
输入:
输入文件第一行包含三个数,分别代表N,M,P (1<=N,M<=2000,1<=P<=1000)。随后的n行,每行有m个0或1(1表示该格为废墟,0表示该格有神庙)。接下来的P行每行有一个整数 (1< <=max(M,N)),代表的第i种建筑物的边长。
输出:
输出文件有P行,每行一个整数,第i行的数代表边长为Ti 的建筑物选址方案数。
【样例输入】(squares.in):
4 4 2
1011
1111
1110
1110
2
3
【样例输出】(squares.out):
5
1
测试结果如下:
/****************************************************************************************************** ** Copyright (C) 2011.07.01-2013.07.01 ** Author: famousDT <13730828587@163.com> ** Edit date: 2011-10-21******************************************************************************************************/#include <stdio.h>#include <stdlib.h>//abs,atof(string to float),atoi,atol,atoll#include <math.h>//atan,acos,asin,atan2(a,b)(a/b atan),ceil,floor,cos,exp(x)(e^x),fabs,log(for E),log10#include <vector>#include <queue>#include <map>#include <time.h>#include <set>#include <list>#include <stack> #include <string>#include <iostream>#include <assert.h>#include <string.h>//memcpy(to,from,count#include <ctype.h>//character process:isalpha,isdigit,islower,tolower,isblank,iscntrl,isprll#include <algorithm>using namespace std;typedef long long ll;#define MY_PI acos(-1)#define MY_MAX(a, b) ((a) > (b) ? (a) : (b))#define MY_MIN(a, b) ((a) < (b) ? (a) : (b))#define MY_MALLOC(n, type) ((type *)malloc((n) * sizeof(type)))#define MY_ABS(a) (((a) >= 0) ? (a) : (-(a)))#define MY_INT_MAX 0x7fffffff/*==========================================================*\| \*==========================================================*/#define N 2000 + 1int d[N][N];int main(){ FILE *in,*out; in = fopen("squares.in","rt"); out = fopen("squares.out","wt"); int m, n, p; int i, j; char c; while (fscanf(in, "%d%d%d%c", &m, &n, &p, &c) == 4) { for (i = 0; i <= N; ++i) d[0][i] = d[i][0] = 0; for (i = 1; i <= m; ++i) { for (j = 1; j <= n; ++j) { fscanf(in, "%c", &c); d[i][j] = d[i - 1][j] + d[i][j - 1] - d[i - 1][j - 1] + c - '0'; } fscanf(in, "%c", &c); } while (p--) { int x, t; int ans = 0; fscanf(in, "%d", &x); t = x * x; for (i = x; i <= m; ++i) { for (j = x; j <= n; ++j) { if (d[i][j] - d[i - x][j] - d[i][j - x] + d[i - x][j - x] == t) ++ans; } } fprintf(out, "%d\n", ans); } } fclose(in); fclose(out); return 0;}/*4 4 2101111111110111023*/
- 第四题:恺撒的规划(NOIP2009测试试题12.08)
- 第三题:教授的测试(NOIP2009测试试题12.08)
- 第一题:装箱问题(NOIP2009测试试题12.08)
- 第二题:一元三次方程求解(NOIP2009测试试题12.08)
- 第三题:反素数(我的模板)(NOIP2009模拟测试题)
- 第一题:染色问题(NOIP2009模拟测试题)
- 第二题:钓鱼计划(NOIP2009模拟测试题)
- NOIP2009 Hankson的趣味题
- NOIP2009 Hankson 的趣味题
- 【noip2009】HackSon的趣味题
- NOIP2009 Hankson的趣味题
- NOIp2009 Hankson的趣味题
- 【Noip2009】hankson的趣味题
- 【noip2009提高组】 Hankson 的趣味题 欧几里得(数论)
- noip2009 道路游戏 (单调队列优化动态规划)
- Hankson的趣味题[NOIP2009]解题报告
- 【NOIP2009】洛谷1072 Hankson的趣味题
- NOIP2009 Hankson的趣味题 [数论]
- EMBED AUDIO
- 第三题:教授的测试(NOIP2009测试试题12.08)
- Java容器学习笔记(二) Set接口及其实现类的相关知识总结
- 【推荐书籍】软件性能测试过程详解与案例剖析
- 嵌入式Linux学习计划
- 第四题:恺撒的规划(NOIP2009测试试题12.08)
- to prevent a memory leak,the jdbc driver has been forcibly unregisterded
- MakeFile 经典简洁范例
- TreeView目录树递归数据源代码
- android一:开发环境搭建
- Organizing Ideas Into Common Themes
- 重新认识excel(3):合并的单元格
- 探讨APP分析过程
- PHP实现复选框全选,反选,批量删除