T1:问题 A: 楼兰图腾

题目描述

在完成了分配任务之后,西部314来到了楼兰古城的西部。相传很久以前这片土地上(比楼兰古城还早)生活着两个部落,一个部落崇拜尖刀(‘V’),一个部落崇拜铁锹(‘∧’),他们分别用V和∧的形状来代表各自部落的图腾。
西部314在楼兰古城的下面发现了一幅巨大的壁画,壁画上被标记出了N个点,经测量发现这N个点的水平位置和竖直位置是两两不同的。西部314认为这幅壁画所包含的信息与这N个点的相对位置有关,因此不妨设坐标分别为(1,y1),(2,y2),…,(n,yn),其中y1~yn是1到n的一个排列。

西部314打算研究这幅壁画中包含着多少个图腾,其中V图腾的定义如下(注意:图腾的形式只和这三个纵坐标的相对大小排列顺序有关)1<=i<j<k<=n且yi>yj,yj<yk;

而崇拜∧的部落的图腾被定义为1<=i<j<k<=n且yi<yj,yj>yk;

西部314想知道,这n个点中两个部落图腾的数目。因此,你需要编写一个程序来求出V的个数和∧的个数。

输入

第一行一个数n
第二行是n个数,分别代表y1,y2……yn

输出

两个数
中间用空格隔开
依次为V的个数和∧的个数

样例输入

5

1 5 3 2 4

样例输出

3 4

提示

数据范围与约定

10%的数据 n<=600

40%的数据 n<=5000

100%的数据 n<=200000,答案不超过int64

题解

首先注意数据范围,int64和long long一样,表示带符号位一共有2的64次方个数。由于这道题V和^的数量只与3个点的相对大小有关,题目并未要求连续。因此考虑用前缀和,树状数组动态维护前缀和。对于V,我们需要知道前面比它大的有多少个,后面比它大的有多少个,就用query(n)-query(i)就可以得到(考虑普通前缀和转为连续区间和),自然对于^也是一样的做法。因此只需要注意是求query(i)还是求query(n)-query(i),然后分别从1到n和从n到1累计答案就可以了。注意平级不算答案。

参考代码

#include<cstdio>
#include<cstring>
#define LL long long
using namespace std;
int n;LL a[200010],ans1=0,ans2=0;
LL pt1[200010],pt2[200010],c[200010];
void add(int t)
{for(;t<=n;t+=t&-t) c[t]++;
}
int query(int t)
{LL ret=0;for(;t;t-=t&-t) ret+=c[t];return ret;
}
int main()
{scanf("%d",&n);for(int i=1;i<=n;i++) scanf("%lld",&a[i]);for(int i=1;i<=n;i++){pt1[i]+=query(a[i]-1);pt2[i]+=query(n)-query(a[i]);add(a[i]);}memset(c,0,sizeof(c));for(int i=n;i>=1;i--){ans1+=pt1[i]*query(a[i]-1);ans2+=pt2[i]*(query(n)-query(a[i]));add(a[i]);}printf("%lld %lld",ans2,ans1);return 0;
}

T2:问题 B: 队伍调整

题目描述

有n个人(每个人有一个唯一的编号,用1~n之间的整数表示)在一个水龙头前排队准备接水,现在第x个人有特殊情况离开了队伍,求第x个人离开队伍后的排队情况。

输入

第一行1个正整数n,表示有n个人,2<n≤ 100。

第二行包含n个正整数,之间用一个空格隔开,表示排在队伍中的第1个到第n个人的编号。

第三行包含1个正整数x,表示第x个人离开队伍,1≤x≤n。

输出

一行包含n-1个正整数,之间用一个空格隔开,表示第x个人离开队伍后的排队情况。

样例输入

7

7 2 3 4 5 6 1

3

样例输出

7 2 4 5 6 1

题解

这道题……用数组存一下排队序,在从头扫一遍,遇到第x个人就continue不就完了?事实上当我看到水龙头我还吓了半拍……

参考代码

#include<cstdio>
using namespace std;
int n,a[2000],x;
int main()
{scanf("%d",&n);for(int i=1;i<=n;i++) scanf("%d",&a[i]);scanf("%d",&x);for(int i=1;i<=n;i++){if(i!=x) printf("%d ",a[i]);}return 0;
}

T3:问题 C: 铺地毯

题目描述

为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看作是平面直角坐标系的第一象限)铺上一些矩形地毯。一共有n张地毯,编号从1~n。现在将这些地毯按照编号从小到大的顺序平行于坐标轴先后铺设,后铺的地毯覆盖在前面已经铺好的地毯之上。

地毯铺设完成后,组织者想知道覆盖地面某个点的最上面的那张地毯的编号。注意:在矩形地毯边界和4个顶点上的点也算被地毯覆盖。

输入

第1行一个正整数n,表示总共有n张地毯。

接下来的n行中,第i+1行表示编号i的地毯信息,包含4个正整数a、b、g、k,每两个整数之间用一个空格隔开,分别表示铺设地毯的左下角坐标(a,b)以及地毯在x轴和y轴方向的长度。

第n+2行包含两个正整数x和y,表示所求的地面的点的坐标(x,y)。

输出

输出一行一个整数,表示所求的地毯的编号;若此处没有被地毯覆盖,则输出-1。

样例输入

3

1 0 2 3

0 2 3 3

2 1 3 3

2 2

样例输出

3

提示

【样例解释】

如图5.8- 1,1号地毯用实线表示,2号地毯用虚线表示,号用双实线表示,覆盖点(2,2)的最上面一张地毯是3号地毯。

【数据规模】

对于30%的数据满足:n<2。

对于50%的数据满足:0≤a,b,g,k≤100。

对于100%的数据满足:0≤n≤10000,0≤a,b,g,k≤100000。

题解

对于这道题,你觉得简单就简单,觉得难就难。有些人一遍A,有些人(比如我)WA10次。

!!一定要读完题!!题中给的是左下角的坐标和x、y轴方向的扩展长度。因此:拿个结构体保存所有地毯的信息,然后从头开始判断地毯是否覆盖该点,最后也是最重要的一点,输出的不是有多少地毯覆盖,而是最上面的地毯编号(整个人都不好了~)。

参考代码

#include<cstdio>
using namespace std;
struct node
{int x1,x2,y1,y2;
}a[200000];
int n,ans;
int x,y;
int main()
{scanf("%d",&n);for(int i=1;i<=n;i++)scanf("%d%d%d%d",&a[i].x1,&a[i].y1,&a[i].x2,&a[i].y2);scanf("%d%d",&x,&y);ans=-1;for(int i=1;i<=n;i++){if((x>=a[i].x1)&&(x<=a[i].x1+a[i].x2)&&(y>=a[i].y1)&&(y<=a[i].y2+a[i].y1))ans=i;}printf("%d",ans);return 0;
}

T4:问题 D: 赛车

题目描述

有n辆赛车,从各不相同的位置出发,以各种速度开始往右行驶,不断有超车现象发生,如下图所示。

給定n辆赛车的出发位置Xi与速度Vi,请输出超车事件的总数,以及依序列出最早发生的超车事件。

若有两个超车事件同時发生,请先输出超车位置数值较小的。

为了怕危险,测试数据里面不会有两个超车事件同时同地发生。

输入

第一行有一个正整数N (0< N <=250,000)

第二行开始有N行,每列包含两个整数Xi和Vi代表第i辆车的初始位置与速度。(0<=Xi<=1,000,000,0<Vi<=100)

输出

第一行请输出超车事件总数除以1,000,000的余数。

第二行开始请依序输出超车事件。若全体的超车事件超过10,000个,那么只要输出前10,000个超车事件即可。

每一个超车事件可以用两个数字表示i, j,代表i超越j。

样例输入

4
0 2
2 1
3 8
6 3

样例输出

2
3 4
1 2

题解

由于这道题我怎么改都只有75分,所以只分享一下思路。首先是第一小问,求超车数。对于这个我们可以维护一个树状数组,存的是速度。如果有车路程在前面,速度却不及,那么就会被超。因为数据很大,因此注意在树状数组里面也要取模。对于第二问,维护一个优先队列,以时间为关键字。现在来看如何保证能不重不漏。首先按照路程排序,如果两个车位置相邻并且后面那车的速度大于前面的(意味着能超车),那么对于后面那个车而言,前面那个车可能就是它第一个超的车。因此先把所有相邻的满足条件的入队。然后必然第一个超车在队中。现在来看如何更新。如果有2车相遇,那么在宏观上路程的排名会发生变化,然后变化后的后面那个车可能被前面的车再次超,因此把这个过程入队;同理,超了车的车也可能再次超它前面的第一辆车(前提是后面车的速度大于前面车的速度,否则没必要),因此在统计答案的同时加以更新,再记一个数tot,当达到10000或者队列为空时退出即可。

9.16 a.m.小结相关推荐

  1. Linux命令行与shell脚本编程大全:第2版

    <Linux命令行与shell脚本编程大全:第2版> 基本信息 作者: (美)布卢姆(Blum,R.) 布雷斯纳汉(Bresnahan.C.) [作译者介绍] 译者: 武海峰 丛书名: 图 ...

  2. Android开发权威指南(第2版)新书发布

    <Android 开发权威指南(第二版)>是畅销书<Android开发权威指南>的升级版,内容更新超过80%,是一本全面介绍Android应用开发的专著,拥有45 章精彩内容供 ...

  3. python django web典型模块开发实战下载_Django实战 Python Web典型模块与项目开发

    本书结合样例,介绍 Django 的基础知识.主要模块的开发以及权限管理等高级内容,并且通过图书管理系统.博客系统.车费管理系统 3 个项目的开发实战,使读者既能掌握 Django 的重要开发技术,又 ...

  4. 霸榜18年,作者连续20年获得微软MVP,这本SQL书凭什么成为畅销经典

    说到 SQL ,大多数人都不陌生,不管你是 Java .C++ 还是 .NET 开发人员,工作中你都要编写 SQL 查询.由于数据库是现代 Java 或者 Web 应用程序中不可或缺的组成部分,拥有良 ...

  5. 《深入理解Oracle 12c数据库管理(第二版)》PDF

    一:下载获取位置: 二:本书图样: 三:本书目录: 图书目录: 第1章 安装Oracle 1.1 了解OFA 1.1.1 Oracle清单目录 1.1.2 Oracle基础目录 1.1.3 Oracl ...

  6. 赠书:一本书揭开 Spring Boot 技术内幕

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 新书速递 经过几年的发展,Spring Boot几乎已成 ...

  7. mysql猎豹_猎豹网校MySQL数据库

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 猎豹网校MySQL数据库 链接:http://pan.baidu.com/s/1i3wyPjn 密码:qxhm 教程目录 第1章 了解SQL 1.1 数据 ...

  8. python快速入门第3版 数据_Python 快速入门 第3版

    第 一部分 开始篇 第 1章 关于Python 3 1.1 用Python的理由 3 1.2 Python的长处 3 1.2.1 Python易于使用 4 1.2.2 Python富有表现力 4 1. ...

  9. python爬虫教程pdf-《Python爬虫开发与项目实战》pdf完整版

    [实例简介] [实例截图] [核心代码] 目录 前言 基础篇 第1章 回顾Python编程2 1.1 安装Python2 1.1.1 Windows上安装Python2 1.1.2 Ubuntu上的P ...

最新文章

  1. oracle10g- emctl start dbconsole 启动问题
  2. Linux学习之系统编程篇:死锁的情形及其解决
  3. spring配置详解-复杂类型注入
  4. hiveserver或者hive启动出现Expected authority at index 7问题解决
  5. 征服 Ajax 应用程序的安全威胁
  6. 微信小程序,电子商城中快速实现收货地址(包含前端和后台实现)
  7. Thinkpad E40黑苹果驱动
  8. 手机java应用安装失败_解决OPPO手机在Android studio 环境下安装失败问题
  9. windows修改mysql密码
  10. java实现验证码时效,JAVA实现验证码
  11. (1)大数据和应用场景介绍
  12. 运营商精准大数据——主动出击 精准获客_客户_实时数据
  13. 上海亚商投顾:创业板指高开高走 ChatGPT概念卷土重来
  14. 自动化测试面试题及答案大全(5)
  15. 关于LINUX系统netterm终端登陆乱码问题。
  16. 抖音APP缓存提取token
  17. 子盒子在父盒子中水平垂直居中
  18. 电脑与云服务器传输文件,电脑与云服务器传输文件
  19. 菜鸟教程python3 mysql_Python3 MySQL 数据库连接 | 菜鸟教程
  20. GCC后端及汇编发布(8)

热门文章

  1. 图形学(4)多边形的扫描转换(上)
  2. 前端开发的 学php吗,web前端开发难学吗
  3. 如何成为一名合格的Apache项目Committer,参与Apache开源贡献的正确姿势
  4. 烽火华为4.2 亿元联合中标武汉地铁云....
  5. (图)Eee PC 904 HD闪亮登场!
  6. 计算机绩点3.2算什么水平,绩点3.3代表什么水平
  7. SpringBoot Zxing _ Java 生成二维码(可内嵌图片)
  8. 服务器w7系统,w7系统的云服务器
  9. 电路中的 电源 与 接地 的理解
  10. 在计算机找不到资源管理器,XP资源管理器里找不到文件夹选项的解决方法