【普组模拟赛】马农(farmer.pas/cpp)

题目描述:

 在观看完战马检阅之后,来自大草原的两兄弟决心成为超级“马农”,专门饲养战马。
兄弟两回到草原,将可以养马的区域,分为 N*N 的单位面积的正方形, 并实地进行考察,归纳出了每个单位面积可以养马所获得的收益。接下来就要开始规划他们各自的马场了。首先,两人的马场都必须是矩形区域。同时,为了方便两人互相照应,也为了防止马匹互相走散,规定两个马场的矩形区域相邻,且只有一个交点。最后,互不认输的两人希望两个马场的收益相当,这样才不会影响他们兄弟的感情。现在,兄弟两找到你这位设计师,希望你给他们设计马场,问共有多少种设计方案。

输入

 第一行一个整数 N,表示整个草原的大小为 N*N。
接下来 N 行,每行 N 个整数 A(i,j),表示第 i 行第 j 列的单位草地的收成。
(注意:收益可能是负数,养马也不是包赚的,马匹也可能出现生病死亡等意外。)

输出

输出符合两人要求的草原分配方案数。

样例输入

3
1 2 3
4 5 6
7 8 9

样例输出

2

【样例解释】

数据范围限制

【数据范围】
40%的数据, N<=10。
100%的数据, N<=50, -1000<A(i,j)<1000。

分析:这道题其实我也没想到很好的方法,看了大佬的题解后,瞬间崩溃,还是好好做暴力吧!
暴力?暴力能过?
*其实我也不知道,可能是JZOJ的数据太水了,数据大,I don’t know! QWQ *
进入正题,我们每次去枚举一个交点即(i,j)因为题目规定只能有一个交点,然后去暴力交点的四个方向(左上,右上,左下,右下)

因为题目规定只能有一个交点,所以我们每次暴力是,只需要对角暴力即可,
(1和4),(2和3);

怎样去判断它们有多少块田收益相同呢?
其实并没有那么难,我们只需在读入时做前缀和的操作就行了。

这公式是怎么得到的?
如果我们要求出这块田的收益是多少,跟他同行的前一块田的收益(绿色部分, b[i][j-1])
和它同一列的上一行的田地收益(红色部分,b[i-1][j]),最后加上我们输入的当前的小田的收益(棕色部分,a),当我们加完后,可以明显的看到,田地有重复的地方(粉色部分b[i-1][j-1]),管他三七二十一,减掉就行了。

又到了激动人心的时刻
上AC代码

#include<cstdio>
using namespace std;
int n,s,a,b[1005][1005],c[10000005];
int main()
{//freopen("farmer.in","r",stdin);//freopen("farmer.out","w",stdout);cin>>n;for(int i=1;i<=n;i++)for(int j=1;j<=n;j++){cin>>a;b[i][j]=b[i-1][j]+b[i][j-1]-b[i-1][j-1]+a;//前缀和,都懂 }for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)//枚举交点的位置 {//下面是第一种情况://其中一个兄弟的牧场在左上方//另外一个兄弟的牧场在右下方for(int x=1;x<=i;x++)//左上方 for(int y=1;y<=j;y++)c[b[i][j]-b[x-1][j]-b[i][y-1]+b[x-1][y-1]]++;//统计每个收益出现的个数  for(int x=i+1;x<=n;x++)//右下方 for(int y=j+1;y<=n;y++)if(c[b[x][y]-b[i][y]-b[x][j]+b[i][j]]!=0)s+=c[b[x][y]-b[i][y]-b[x][j]+b[i][j]];//如果这个收益在上面出现过,就说明这两个兄弟的收益相等//就加这个收益出现的个数       for(int x=1;x<=i;x++)for(int y=1;y<=j;y++)c[b[i][j]-b[x-1][j]-b[i][y-1]+b[x-1][y-1]]=0;//下面是第二种情况: //其中一个兄弟的牧场在左下方//另外一个兄弟的牧场在右上方   //(下面我就不解释了,同上) for(int x=i+1;x<=n;x++)for(int y=1;y<=j;y++)c[b[x][j]-b[i][j]-b[x][y-1]+b[i][y-1]]++;for(int x=1;x<=i;x++)for(int y=j+1;y<=n;y++)if(c[b[i][y]-b[x-1][y]-b[i][j]+b[x-1][j]]!=0)s+=c[b[i][y]-b[x-1][y]-b[i][j]+b[x-1][j]];for(int x=i+1;x<=n;x++)for(int y=1;y<=j;y++)c[b[x][j]-b[i][j]-b[x][y-1]+b[i][y-1]]=0;}  cout<<s<<endl;return 0;
}

谢谢

【普组模拟赛】马农(farmer.pas/cpp)相关推荐

  1. 【普组模拟赛】马球比赛(polo.pas/cpp

    File IO): input:polo.in output:polo.out 时间限制: 1000 ms 空间限制: 128000 KB 具体限制 Goto ProblemSet 题目描述 在解决了 ...

  2. 【jzoj1965】【递推】【普组模拟赛】马球比赛

    题目描述 在解决了马语翻译问题后,马匹数量越来越多,不少乡镇都有了数量可观的马匹,开始出现马球比赛.乡镇之间决定进行马球联赛. 联赛的赛制,主要是比赛双方的马匹数量,成了一个急需解决的问题.首先,所有 ...

  3. 2020.02.07普及C组模拟赛4

    普及C组模拟赛4 **1.权势二进制 ** 题目描述 一个十进制整数被叫做权势二进制,当他的十进制表示的时候只由0或1组成.例如0,1,101,110011都是权势二进制而2,12,900不是. 当给 ...

  4. NOIP2017提高组模拟赛4 (总结)

    NOIP2017提高组模拟赛4 (总结) 第一题 约数 设K是一个正整数,设X是K的约数,且X不等于1也不等于K. 加了X后,K的值就变大了,你可以重复上面的步骤.例如K= 4,我们可以用上面的规则产 ...

  5. 十四届蓝桥青少组模拟赛Python-20221108

    十四届蓝桥青少组模拟赛Python-20221108 T1.二进制位数 十进制整数2在十进制中是1位数,在二进制中对应10,是2位数. 十进制整数22在十进制中是2位数,在二进制中对应10110,是5 ...

  6. 计蒜客信息学3月普及组模拟赛

    A. 断幺九 题目链接 分值:100 时间限制:1000ms 测试点数目:10 B. 锈湖 题目链接 分值:100 时间限制:2000ms 测试点数目:10 C. 图  题目链接 分值:100 时间限 ...

  7. 第一届『Citric杯』NOIP提高组模拟赛 题解

    [官方题解]第一届『Citric杯』NOIP提高组模拟赛 题解 第一题 柠檬超市 这题是本次模拟赛的送分题.做法显然. 但是注意此题有一个陷阱: 注意W和C的规模都是10^9,所以如果直接用doubl ...

  8. 2019 蓝桥杯省赛 B 组模拟赛(一)蒜厂年会

    2019 蓝桥杯省赛 B 组模拟赛(一)蒜厂年会 这题有两种情况 1.最大的和是在0~n-1 2.最大的和越过了首尾 这时候只要用n个数的和 - 0~n-1 的连续的最小和 这是求连续子集最大.最小 ...

  9. DD 摆磁铁(计蒜客信息学8月普及组模拟赛)

    DD 摆磁铁 这道题来自 计蒜客信息学8月普及组模拟赛 普及组!! 把我一个TG选手看懵了 看来我要回去打普及了 题目大意 给出一个n个节点的树,要把树上给定的2*m个节点两两配对,两个节点配对的产生 ...

最新文章

  1. BZOJ - 3631 松鼠的新家 (树链剖分)
  2. zabbix历史数据mysql_处理Zabbix历史数据库办法一
  3. [MATLAB]MATLAB中SIMULINK常用命令表
  4. Wireshark实战分析值ICMP协议(一)
  5. 根据拼音首字母查询人名【转】
  6. LeetCode热门100之 无重复字符的最长子串
  7. 细说大话西游中的经典元素
  8. Windows 系统添加 VirtIO 驱动(Windows ISO 安装镜像添加驱动)
  9. 解决Mac系统更新后,SVN无法使用的问题
  10. 断点续传的原理(转)
  11. Linux shell的简单学习
  12. Drools Accumulate 语法解析及使用
  13. 2022技术趋势预测,Python、Java占主导,Rust、Go增长迅速,元宇宙成为关注焦点
  14. python批量自动订票_python+splinter实现12306网站刷票并自动购票流程
  15. 前端 报错! 总结:
  16. [转]这个新闻故事也太神奇了,很吸引人,都不像是新闻了
  17. k8s 发布项目实现 nginx 和 tomcat 动静分离(2)
  18. Heartbleed第一篇:“心脏流血”高危漏洞情况通报(4月9日结果)
  19. 2022-2028年中国柚子行业市场分析预测及发展战略研究报告
  20. MapRecuce 词频统计案例

热门文章

  1. sheng的学习笔记-内部类
  2. 代码随想录30——回溯:332重新安排行程、51N皇后、37解数独
  3. matlab凯塞窗低通fir滤波器,基于Matlab的FIR滤波器设计与实现
  4. 家用智能投影推荐 五千元档的当贝F5和当贝X3有哪些区别?
  5. 办公室绿植租赁布置方案
  6. 多卡聚合智能融合通信设备在智慧房车上的应用
  7. 学计算机u盘多少g合适,装系统的u盘需要多大-大白菜装win7的系统一般要多少G的U?大 – 手机爱问...
  8. 电力电子技术的matlab实践 pdf,MATLAB 在电力电子技术中的应用.pdf
  9. R语言|散点图 ———R语言数据可视化系列(一)
  10. 论文结论与摘要的区别