题目描述:

有一个蛋糕,从上方看是一个正方形,中心有一个正方形区域为空。

两个正方形的中心都在(0,0)位置,并且它们的边都与某条坐标轴平行。

P将竖直或水平地切蛋糕,每一刀都将经过整个蛋糕(即不会因为中心的洞而中断)。

给定他切蛋糕的位置,请求出蛋糕总共被切成了多少份。

输入:

输出:

对于每组数据,依次输出一行答案,表示蛋糕最终切成的块数。

算法标签:思维模拟

思路:

一眼看觉得蛮简单的,但是写了好久还是不对...气..最终解是n*m枚举每一个方块,倘若你两个维度都切在分割处贡献为0,倘若一维在分割处,另一维两条线位于中间小块两侧,此时贡献为2,其他时候贡献都为1,可以手动模拟一下。

以下代码:

#include<bits/stdc++.h>
#define il inline
#define _(d) while(d(isdigit(ch=getchar())))
using namespace std;
const int N=5003;int n,m,a[N],b[N],ans;bool pd;
il int read(){int x,f=1;char ch;_(!)ch=='-'?f=-1:f;x=ch^48;_()x=(x<<1)+(x<<3)+(ch^48);return f*x;}
il bool pd1(int x){if(a[x]<=m&&a[x]>=-m)return 1;return 0;}
il bool pd2(int x){if(b[x]<=m&&b[x]>=-m)return 1;return 0;}
int main()
{int T=read();while(T--){n=read();m=read();a[0]=read();b[0]=read();ans=0;for(int i=1;i<=a[0];i++)a[i]=read();a[++a[0]]=-n;a[++a[0]]=n;for(int i=1;i<=b[0];i++)b[i]=read();b[++b[0]]=-n;b[++b[0]]=n;sort(a+1,a+1+a[0]);sort(b+1,b+1+b[0]);for(int i=1;i<a[0];i++){if(a[i]<-n||a[i+1]>n)continue;if(pd1(i)&&pd1(i+1))pd=1;else pd=0;for(int j=1;j<b[0];j++){if(b[j]<-n||b[j+1]>n)continue;if(pd2(j)&&pd2(j+1)&&pd)continue;if(pd&&b[j]<-m&&b[j+1]>m)ans+=2;else if(pd2(j)&&pd2(j+1)&&a[i]<-m&&a[i+1]>m)ans+=2;else ans++;}}printf("%d\n",ans);}return 0;
}

View Code

转载于:https://www.cnblogs.com/Jessie-/p/9853001.html

2018.10.25-dtoj-2903-蛋糕(cake)相关推荐

  1. 10天精读掌握:计算机组成与设计(COAD:Patterson and Hennessy) (第2天 2018/10.25)

    十天精读掌握计算机组成与设计:第2天 2018/10.25 1. 第4次周计划概览 2. 今日学习成果 今日成果简述 完成如下目录学习 今日笔记 3. 今日时间表 4. 今日反思 5. 明日目标 今天 ...

  2. 2018.10.25【NOIP练习】最大疯子树(树形DP)

    传送门 解析: 其实简单推一下我们发现一个疯子树内部任何一条路径上点权都是单峰下凸的. 证明也很简单,不过请记住一点,考场上没有必要去想证明,除非你时间真的很充裕. 必要性:如果不是单峰下凸,则不是疯 ...

  3. CCSP 2018,杭州电子科技大学,2018/10/25

    前言 杭州东站到杭电蛮近的.支付宝真是个好东西. 10月是杭州的旅游旺季,真的很难找到还不错的酒店住,建议提前3个月预定. 比赛 竞赛前相关:https://www.ccf.org.cn/c/2018 ...

  4. 基于openFrameworks 三维重建 2018.10.25

    一.环境配置 1.ubuntu16.04系统  下载地址:https://www.ubuntu.com/download/desktop 2.opencv2.4.9第三方依赖库  下载网站:http: ...

  5. 2018.10.20 NOIP模拟 蛋糕(线段树+贪心/lis)

    传送门 听说是最长反链衍生出的对偶定理就能秒了. 本蒟蒻直接用线段树模拟维护的. 对于第一维排序. 维护第二维的偏序关系可以借助线段树/树状数组维护逆序对的思想建立权值线段树贪心求解. 代码 转载于: ...

  6. [2018.10.25]高通QFIL刷机:高通sdm845_la2.0用QFIL软件meta_build和flat_build刷机

    [1 代码准备] (i)amss_standard_oem:高通源码 (ii)test_device:amss_standard_oem对应的二进制文件(高通已经编译) (iii)caf:高通源码对应 ...

  7. RAD Studio破解补丁合集(2018.12.25)

    免责申明: 所有破解补丁均来自于网络,本人只负责收集整理,供大家测试研究之用.不提供相应的产品技术支持和服务. 本破解补丁合集只可用于个人测试研究之用,切勿用于商业用途,请在使用后的24小时内删除本破 ...

  8. c语言程序设计实验指导交大答案,C语言程序设计实验指导_上交大_课前练习-改错-完善程序-课后练习参考答案--2018.10修改.doc...

    C语言程序设计实验指导_上交大_课前练习-改错-完善程序-课后练习参考答案--2018.10修改.doc 实验一 Visual C集成环境实验内容(一)程序改错1.(1)无法运行(2)将第二个C程序重 ...

  9. lol12月25服务器维护,lol12月10日维护到几点 英雄联盟12月10日10.25版本更新维护时间...

    lol12月10日维护到几点?2020年12月10日英雄联盟全区停机维护更新10.25版本的内容,大家需要等待至维护结束才能登录游戏体验新版本.不知道本次更新时长的玩家,下面小编带来了英雄联盟12月1 ...

  10. 2018.10.17考试

    2018.10.17考试总结 1.咒语 (curse.pas/c/cpp) [题目描述] 亮亮梦到自己来到了魔法城堡, 但一扇巨大的石门阻拦了他通向城堡内的路.正当他沮丧之际,突然发现门上有一处机关, ...

最新文章

  1. SQL SERVER中求上月、本月和下月的第一天和最后一天[转]
  2. SQL SERVER 2005无法远程连接的问题
  3. CPU方案简介ATS3609D - 智能故事机
  4. java java.doc_使用 javadoc 自动生成 Java 文档
  5. android 启动多个进程,Android开启多进程
  6. dell 重装linux系统_U盘装系统开机按哪个键
  7. go 时间格式风格详解
  8. semantic ui中文文档_一起学Vue:UI框架(element-ui)
  9. 用友U8库存管理软件,用友U8
  10. android五线谱播放器,口袋五线谱app下载
  11. 中科磐云 综合渗透测试
  12. ps排版html,排版教程,超详细适合初学者的排版教程(二)
  13. Qt 学习之路 2(15):标准对话框 QMessageBox
  14. Linux--JVM内存设置
  15. 计算机与数学交融的教学设计,信息技术与小学数学学科的整合 小学数学教案...
  16. Windows10 输入法 Microsoft IME占用CPU过高,而且无法切换输入法,只能输入英文
  17. 嵌入式linux汽车仪表,基于ARM和嵌入式Linux的汽车仪表盘研制
  18. 组态王与mysql数据库通过ODBC连接
  19. C++ 第九节——map/set(用法+底层原理+模拟实现)
  20. 快速获取雪碧图的图标样式插件 - gulp-css-spriter教程

热门文章

  1. 水晶报表设置FiledObject支持HTML格式的数据
  2. PowerDesigner打开设计文件后提示failed to read the fileXXX的解决办法
  3. 使用javascript oop开发滑动(slide) 菜单控件
  4. CentOS 6.5+Nagios4.0.2+Msmtp+Mutt邮箱报警
  5. Android 对BaseAdapter做优化处理
  6. linux系统未来或应用广泛
  7. boost 线程、互斥体、条件变量
  8. 结对编程--------四则运算 实验总结2
  9. 从@property说起(四)深入成员变量
  10. explicit关键字