文章目录

  • A 蛋糕切割
  • B 膜拜神牛
  • C 矩形统计
  • D 逃亡路径
  • E 矩形反色
  • 希望我们都能像对方一样勇敢。——蒋丞

A 蛋糕切割

Garfield非常喜欢巧克力蛋糕。奇怪的是,她把蛋糕分成了N行M列的网格。馋嘴的她想知道,沿对角线的一刀能切到的网格数。
对于50%的数据,N,M ≤ 10^3,
对于100%的数据,N,M ≤ 10^9。

枚举数据并分析可得,答案即n+m-gcd(m,n)

#include <cstdio>using namespace std;int n,m;int gcd(int a,int b){if (b==0) return a;int k=gcd(b,a%b);return k;
}int main(){scanf("%d%d",&n,&m);if (n>=m) printf("%d",n+m-gcd(n,m));elseprintf("%d",n+m-gcd(m,n));
}

B 膜拜神牛

Garfield听说OI班有N头神牛,每头神牛有两个属性,算法能力和思维能力,分别以Ai和Bi表示。如果神牛i和神牛j满足Ai ≥ Aj且Bi ≤ Bj,那么两位神牛会互相膜拜。Garfield认为膜拜是不和谐的,所以她想知道,最大的不存在膜拜关系的子集大小。
对于40%的数据,N ≤ 10^3,
对于100%的数据,N ≤ 10^5。

以ai为第一关键字,bi为第二关键字排序,ai升序,bi降序
对排序后的bi求最长上升子序列
O(n log n)

#include <cstdio>
#include <algorithm>using namespace std;int n,ans;struct node{int a,b;
}c[100005];
int f[100005];bool comp(node a,node b){if (a.a==b.a) return a.b>b.b;return a.a<b.a;
}int main(){scanf("%d",&n);for (int i=1;i<=n;i++)scanf("%d%d",&c[i].a,&c[i].b);sort(c+1,c+1+n,comp);for (int i=1;i<=n;i++){if (c[i].b>f[ans]){f[++ans]=c[i].b;}else{int l=1,r=ans,k=0;while (l<=r){int mid=(l+r)/2;if (f[mid]>=c[i].b) r=mid-1,k=mid;else l=mid+1;}f[k]=c[i].b;}}printf("%d",ans);
}

C 矩形统计

Garfield小时候数学非常好,这与她喜欢数格子是分不开的。现在她有一张边长为N的方格纸(有若干破损),她想知道这张纸能够裁出多少矩形。
对于50%的数据,N ≤ 20,
对于100%的数据,N ≤ 1000。
将破损表示为1

010
010
000
把这样的一张纸表示为矩形

     0 00 0000

这时就把矩形从左向右加入队列,当后加的矩形比前面的矩形矮时,要弹出高的矩形高出的部分,并加入答案,然后把消掉高出部分的矩形加入后加的矩形,也就是后加的矩形宽度增加。
加入答案时,用矩形的高度*宽度(宽度:对于高度为1的一行格子,可以取多少种矩形)
emm…开long long
矩形的高度用up[i][j]表示,即格子(i,j)向上多少个格子到破损格子

#include <cstdio>
#include <cstring>using namespace std;int n,cw;long long ans;
int up[5003][5003],a[5003][5003];
int w[5003],u[5003],h;
int s[5003];int main(){scanf("%d",&n);for (int i=1;i<=n;i++)for (int k=1;k<=i;k++)s[i]+=i-k+1;for (int i=1;i<=n;i++){char ch[5003];scanf("%s",ch+1);for (int j=1;j<=n;j++) a[i][j]=ch[j]-'0';}for (int i=1;i<=n;i++){for (int j=1;j<=n;j++) if (a[i][j])for (int k=i+1;a[k][j]==0&&k<=n;k++)up[k][j]=k-i;}for (int i=1;i<=n;i++)for (int j=1;j<=n;j++)if (a[i][j]==0&&up[i][j]==0) up[i][j]=i;for (int i=1;i<=n;i++){h=0;for (int j=1;j<=n+1;j++)if (up[i][j]==0){while (h){ans=(long long)ans+s[w[h]]*(u[h]-u[h-1]);w[h-1]+=w[h];h--;}w[0]=0;}else{if (up[i][j]>u[h]) u[++h]=up[i][j],w[h]=1;else{cw=0;while (u[h]>up[i][j]&&u[h-1]>up[i][j]){cw+=w[h];ans=(long long)ans+s[cw]*(u[h]-u[h-1]);h--;}if (u[h]>up[i][j]) cw+=w[h] , ans=(long long)ans+s[cw]*(u[h]-up[i][j]) , h--;w[++h]=cw+1;u[h]=up[i][j];while (u[h-1]==up[i][j]) w[h-1]+=w[h],h--;}}}printf("%lld",ans);
}

D 逃亡路径

由于不能与Garfield和睦相处,Odie决定逃亡。不幸的他逃到了一个矩形湖泊。湖泊的长为N,宽为M,初始时Odie位于位置(1,1)。Garfield想要知道可怜的Odie有到达位置(N,M)的最短路径条数(不能跳出湖泊边界)。另外,神奇的Odie移动方式类似国际象棋的骑士。
对于50%的数据,N ≤ 5,
对于100%的数据,N ≤ 100。
输出一个整数,表示最短路径的条数(模9901输出即可)。

bfs暴搜啦

#include <cstdio>using namespace std;const int dx[10]={-2,-2,-1,1,2,2,1,-1};
const int dy[10]={-1,1,2,2,1,-1,-2,-2};
int n,m,ans;
int a[106][106],f[106][106];
int v[1000000][4],h,t;void bfs(){int flag=0;t=1;v[1][0]=1;v[1][1]=1;v[1][2]=1;a[1][1]=1;f[1][1]=1;while ((h<t)&&(!flag||v[h+1][2]==flag)){int x=v[++h][0],y=v[h][1];for (int i=0;i<8;i++)if (x+dx[i]>0&&x+dx[i]<=n&&y+dy[i]>0&&y+dy[i]<=m){if (a[x+dx[i]][y+dy[i]]==0)   v[++t][0]=x+dx[i],v[t][1]=y+dy[i],v[t][2]=v[h][2]+1,a[x+dx[i]][y+dy[i]]=v[h][2]+1;if (a[x+dx[i]][y+dy[i]]==0||v[h][2]+1==a[x+dx[i]][y+dy[i]])   f[x+dx[i]][y+dy[i]]=(f[x+dx[i]][y+dy[i]]+f[x][y])%9901;if (x+dx[i]==n&&y+dy[i]==m){flag=v[h][2];}}}
}int main(){scanf("%d%d",&n,&m);bfs();printf("%d",f[n][m]%9901);
}

E 矩形反色

gmh77有一个无限大的方格图,由无限个1*1的格子构成,每个格子有黑白两色。初始所有格子都是白色。

现在gmh77会进行n次操作,每次把一个矩形区域反色(即黑变白,白变黑),求n次操作后得出的图形的周长(即边界长)。

边界的定义:定义一条长度为1的线段在边界上,当且仅当这条线段两侧的格子颜色不同。

注:输入中给出的是格子的坐标(不是点的坐标)

希望我们都能像对方一样勇敢。——蒋丞

2019年8月6日本地题库提高组 gcd+LIS+单调队列优化+bfs+?相关推荐

  1. 12月5日计算机考试浙江卷英语答案,英语b级试卷?2019年12月b级真题试卷。

    大学英语应用考试B级是什么? 英语B级考试过关技巧简介英语B级考试过关技巧介绍:[1听力](1--15小题)分数是占15%.在这里我们也应该用时15分钟.一般在这里的听力都是很容易的,(跟初. 英语b ...

  2. 2019全国c语言二级考试题库,2019年全国计算机二级考试试题题库(附答案)【精选】.docx...

    --WORD格式--可编辑-- --- 2019年全国计算机二级考试试题题库(附答案) 一.选择题 ((1)-(40)每小题 1 分, (41)-(50)每小题 2 分,共 60 分 ) 下列各题 A ...

  3. 2019年3月全国计算机二级考试试题,(完整版)2019年全国计算机二级考试试题题库(附答案)...

    2019年全国计算机二级考试试题题库(附答案) 一.选择题((1)-(40)每小题1分,(41)-(50)每小题2分,共60分) 下列各题 A) .B).C).D)四个选项中,只有一个选项是正确的,请 ...

  4. 山东农商行真题计算机类,2019山东农商行招聘考试计算机题库(十六)

    为了大家能够更好的备站2019山东农商行招聘考试,中公教育小编今天给大家带来"2019山东农商行招聘考试计算机题库(十六)",希望可以帮助大家,预祝大家考试顺利! 76.以下有关W ...

  5. 在使用计算机时遇到什么样的问题,2021年1-4月雅思口语题库part23:你在使用电脑时遇到的问题...

    雅思口语又到了换题季啦,相信你肯定很想知道雅思口语都考哪些题,今天新东方在线小编就给大家整理了2021年1-4月雅思口语题库part2&3:你在使用电脑时遇到的问题,希望能给你的雅思口语备考提 ...

  6. 闲情赋计算机考试题目,2015年9月计算机应用基础统考题库-网考计算机应用基础真题六.doc...

    2015年9月计算机应用基础统考题库-网考计算机应用基础真题六.doc 还剩 6页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,喜欢就下载吧,价低环保! 内容要点: (2)第4张幻灯片背景 ...

  7. 山东农商行真题计算机类,2019山东农商行招聘考试计算机题库(七)

    为了大家能够更好的备站2019山东农商行招聘考试,中公教育小编今天给大家带来"2019山东农商行招聘考试计算机题库(七)",希望可以帮助大家,预祝大家考试顺利! 31." ...

  8. 魔众题库系统 v6.4.0 题目导入优化 自动阅卷优化 后台菜单快捷搜索

    魔众题库系统基于PHP开发,可以用于题库管理和试卷生成软件,拥有极简界面和强大的功能,用户遍及全国各行各业. 魔众题库系统发布v6.4.0版本,新功能和Bug修复累计14项,题目导入优化 自动阅卷优化 ...

  9. [USACO18JAN]Lifeguards P 洛谷黑题,单调队列优化DP

    传送门:戳我 这道题有两个版本,S和P,S是K等于1的情况,显然可以用线段树水过. P版本就难了很多,洛谷黑题(NOI/NOI+/CTSC),嘿嘿. 我自己也不是很理解,照着题解写了一遍,然后悟到了一 ...

最新文章

  1. linux普通高速缓存,linux页高速缓存
  2. Qt 学习之路 2(79):QML 组件
  3. 继 承(面向对象特征之二)
  4. windows下使用salt安装软件
  5. centos7安装oracle12c 一
  6. win7 下的 cmdhere 及其他
  7. 377. 组合总和 Ⅳ(JavaScript)
  8. python决策树代码解读_建模分析之机器学习算法(附pythonR代码)
  9. orbslam2+azure kinect DK稠密重建
  10. lopa分析_保护层分析(LOPA)方法简介1.ppt
  11. JAVA利用httpclient登录开心网
  12. 利用zxing生成二维码
  13. 交换机:简述对交换机工作原理的认识
  14. 2021年中国药店行业发展概述及未来发展趋势分析[图]
  15. 后台获取前台传递参数为null和空字符串的区别,以及sql拼接之if判断
  16. Android进阶——Small源码分析之启动流程详解
  17. IBM ThinkPad 笔记本产品系列简介
  18. addons软件下载_addons制作器最新版
  19. STM32F10X CAN+TJA1050发送程序例程,已测试
  20. 事件监听的理解(ActionListener等)

热门文章

  1. 项目开发使用教程和常见问题和解决方法
  2. UXD阶段最后的 华
  3. 一文读懂多元线性回归
  4. 为什么在计算机系统中,数值一律用补码来表示(存储)
  5. 微服务与分布式产生的背景和区别
  6. 【IOS账号分享】《返校》
  7. Struts2框架学习总结
  8. JavaWeb笔记之SSH(Struts2框架)
  9. 常用转义字符例如amp;的含义
  10. 滑动验证码-网易云盾初使用