国庆玩的有点嗨,开学了补题。

A轰炸平面镇魂曲

题目描述

虹村万泰是一位二维世界的替身使者,他的替身 "轰炸平面镇魂曲" 能产生一条直线分割整个平面。

一开始,平面上有一个矩形,其左下顶点坐标为 (a,b)(a,b),右上顶点坐标为 (c,d)(c,d),此矩形已把平面分成两个区域 (矩形内和矩形外)。

现在,虹村万泰对这个平面使用了两次 "轰炸平面",产生的直线分别是 x=0x=0 与 y=0y=0。

万泰想知道现在整个平面一共被分成了几个区域,你能帮帮他吗? (面积严格大于 00 才算是一个区域。)

输入描述

输入第一行包含一个整数 TT,表示输入的询问数量。

接下来 TT 行,每行四个整数,依次表示该组询问的 a,b,c,d意义如题面所示。

  • 1≤T≤10000

  • −109≤a,b,c,d≤109, a < ca<c,b < db<d

输出描述

依序对于每个询问都输出一行包含一个整数,表示该询问的区域的个数。

样例输入 1

3
1 2 3 4
-5 5 10 20
1 0 3 4

样例输出 1

5
6
5

样例解释 1

第一组样例的示意图

第二组样例的示意图

其中红线为x=0x=0的直线,绿线为y=0y=0的直线,蓝色的线为初始平面上的矩形。

解题思路:简单推理已知题意所示两条直线(其实就是数学中平面直角坐标系的x轴y轴)已经将所有区域划分为四个区域。

而题目中又要求a<c,b<d;所以不难想到每次询问中的矩形面积都严格大于0,然后就可以想象一下,一共是有三种情况的,①:

矩形与两条直线都不相交,则有(a*c>=0&&b*d>=0)也即是说所有坐标点都是同号的,②:矩形交于两条直线,此时根据矩形的特征结合直角坐标系来判断,不难知道(a,b)点在坐标系左下角,(c,d)点在坐标系右上角,a*c与b*d两两异号。③:矩形只与一条直线相交且保证不是底边或顶边与直线重合(重合的情况为a*c==0或b*d==0归于第一类情况了),这里的情况比较多,一个个想可能比较复杂,但这是最后一种情况了,可以取个巧,有兴趣的可以自己推理一下。注意一下数据范围。代码如下:

#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
#define inf 1e9
#define rep(i,j,k) for(int i = (j); i <= (k); i++)
#define rep__(i,j,k) for(int i = (j); i < (k); i++)
#define per(i,j,k) for(int i = (j); i >= (k); i--)
#define per__(i,j,k) for(int i = (j); i > (k); i--)
const int N=1e5+10;
int t;
LL a,b,c,d;
int main()
{
scanf("%d",&t);
rep(i,1,t){
scanf("%lld%lld%lld%lld",&a,&b,&c,&d);
if(a*c>=0&&b*d>=0)printf("5\n");
else if(a*c<0&&b*d<0)printf("8\n");
else printf("6\n");
}
return 0;
}

B 卖萌鸡尾酒

题目描述

众所周知,鸡尾酒的群名片叫作 "卖萌鸡尾酒",他认为一个群里的 「有缘人」是群名片与他相近的人。 现在,鸡尾酒想找出群里的 「有缘人」。

首先,他将自己名片拆分成五个字 ""、""、""、""、"",并分别作为关键字进行搜索,每次搜索都会找到所有群名片包含这个字的群友。如:搜索 "" 就能找到所有名片中包含 "" 的人。

如果某个人在至少两次搜索中都被搜索到,则鸡尾酒认为他是一位 「有缘人」。如 "[jwju]鸡尾酒的小迷弟" 以及 "尾酒" 是「有缘人」。 而 "王萌♂萌" 则不是。 现在告诉你鸡尾酒的五次搜索中每一次搜索到的人数,他想知道,群里最多有几位 「有缘人」。

输入描述

输入一行包含五个正整数 a,b,c,d,e分别代表五次搜索中被搜索到的人数。

1≤a,b,c,d,e≤109

输出描述

输出一行一个整数代表群里最多有几位「有缘人」。

样例输入 1

1 1 1 1 1

样例输出 1

2

样例解释 1

如果第一个「有缘人」包含前两个关键字,第二个「有缘人」包含后三个关键字,群里没有其他人的名片包含关键字。则每次搜索都只会有一个人被搜到,满足题意。且没有一种方案可以使得群里具有更多数量的「有缘人」且同时符合样例输入,所以群里最多有两位「有缘人」。

解题思路:这道题仔细想想还是挺有趣的。给定五次查询结果,让判断最多有多少位有缘人。咋一看是没有思路的,可以从查询结果着手,不管怎样,五次查询肯定会有一次查询人数是最多的,而当最多的这次查询比其他四次查询人数总和还多的情况下,最理想的结果莫过于另外四组查询中每个人都是有缘人;反之,则可以用所有查询的总人数除以2作为有缘人的最大结果(即使查询结果两两结合,又判断了不存在某组查询的人数比其他的总和还多,所以是成立的),注意数据范围。代码如下:

#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
#define inf 1e9
#define rep(i,j,k) for(int i = (j); i <= (k); i++)
#define rep__(i,j,k) for(int i = (j); i < (k); i++)
#define per(i,j,k) for(int i = (j); i >= (k); i--)
#define per__(i,j,k) for(int i = (j); i > (k); i--)
const int N=1e5+10;
LL a[5],sum;
int main()
{
rep(i,0,5){
scanf("%lld",&a[i]);
sum+=a[i];
}
sort(a,a+5);
if(a[4]>sum-a[4])cout<<sum-a[4]<<endl;
else cout<<sum/2<<endl;
return 0;
}

Comet OJ-2019国庆欢乐赛的更多相关文章

  1. Comet OJ - 2019国庆欢乐赛 C题 两排房子

    ###题目链接### 题目大意:这里有横着的两排房子,给你每个房子的左端点和右端点.若两排房子中分别有两个房子 x y ,他们在横坐标上有重叠部分(端点重叠也算),则被称为 “对门” 关系. 问你总共 ...

  2. Comet OJ 2019 夏季欢乐赛题解

    Comet OJ 2019 夏季欢乐赛题解 我是来骗访问量的 A 完全k叉树 \(n\)个点的完全k叉树的直径. 直接做 B 距离产生美 直接做 C 烤面包片 \(n!!!\mod p\) 显然\(n ...

  3. Comet OJ - 2019 六一欢乐赛

    传送门 #A: 思路:等差数列求和,看成俩次1+2+…+ n,多加的n减去,所以 ans = n*(n+1) - n. AC代码: #include<iostream> #include& ...

  4. 【题解】Comet OJ 国庆欢乐赛 简要题解

    [题解]Comet OJ 国庆欢乐赛 简要题解 A 直接做 B 直接做,结论: \[ ans=\max([Max\ge \mathrm{sum}] Max,s[n]/2) \] C 考虑这样一个做法: ...

  5. Comet OJ 夏季欢乐赛 篮球校赛

    Comet OJ 夏季欢乐赛 篮球校赛 题目传送门 题目描述 JWJU注重培养学生的"唱,跳,rap,篮球"能力.于是每年JWJU都会举办篮球校赛,来给同学们一个切磋篮球技术的平台 ...

  6. Comet OJ 夏季欢乐赛 Gree的心房

    Comet OJ 夏季欢乐赛 Gree的心房 题目传送门 题目描述 据说每一个走进Gree哥哥心房的小姑娘都没有能够再走出来-- 我们将Gree哥哥的心房抽象成一个n \times mn×m的地图,初 ...

  7. Comet OJ 夏季欢乐赛 分配学号

    Comet OJ 夏季欢乐赛 H 分配学号 题目传送门 题目描述 今天,是JWJU给同学们分配学号的一天!为了让大家尽可能的得到自己想要的学号,鸡尾酒让大家先从 [1,10^{18}][1,1018] ...

  8. Comet OJ - Contest #11 题解&赛后总结

    Solution of Comet OJ - Contest #11 A.eon -Problem designed by Starria- 在模 10 意义下,答案变为最大数的最低位(即原数数位的最 ...

  9. contesthunter CH Round #64 - MFOI杯水题欢乐赛day1 solve

    http://www.contesthunter.org/contest/CH Round %2364 - MFOI杯水题欢乐赛 day1/Solve Solve CH Round #64 - MFO ...

随机推荐

  1. 深浅拷贝的应用-copy、mutableCopy

    ViewController.h #import <UIKit/UIKit.h> @interface ViewController : UIViewController //如果想让li ...

  2. linux修改权限

    修改system目录(包括子目录)的所有者和组 sudo chown -R seven:seven system

  3. Python入门基础学习(环境安装/字符串)

    Python基础学习笔记(一) 编译性语言与解释性语言: 编译性语言:读完代码再执行,一般会生成一个文件,如C语言会生成一个.h的文件给计算机执行 如:C,C++,C#,Java,Go 解释性语言:读 ...

  4. 【error】C++:fatal error LNK1169: 找到一个或多个多重定义的符号

    编译时报错 : fatal error LNK1169: 找到一个或多个多重定义的符号 解答: 发生这种错误就是在一个项目定义了多个main函数的问题. *C++中一个项目即一个程序,多个文件只能有一 ...

  5. 3.Python爬虫入门_正则表达式(简单例子)

    #2019-11-23 import requests import time import re #Python正则表达式库 if __name__=='__main__': #海量爬取图片数据 # ...

  6. Node.js连接数据库取值,简单接口的实现

    第一步:先安装Node.js,这里不做介绍 第二步:新建一个文件夹,打开cmd,进入该文件夹 执行npm init命令生成page.json文件 第三步:安装如下模块,打开cmd,进入第二步的文件夹, ...

  7. luoguP2163 [SHOI2007]园丁的烦恼

    安利系列博文 https://www.cnblogs.com/tyner/p/11565348.html https://www.cnblogs.com/tyner/p/11605073.html 题 ...

  8. SpringCloud学习笔记(四、SpringCloud Netflix Ribbon)

    目录: Ribbon简介 Ribbon的应用 RestTemplate简介 Ribbon负载均衡源码分析 Ribbon简介: 1.负载均衡是什么 负载均衡,根据其字面意思来说就是让集群服务具有共同完成 ...

  9. day82_10_31celery的使用

    1.缓存 当一些数据需要固定地且频繁访问数据库时,需要使用到接口缓存. 以轮播图为例,每个用户都会访问首页,首页的轮播图长时间不会改变,所以可以使用cache,将固定数据保存到缓存中(redis),第 ...

  10. 如何对jmeter设置IP欺骗

    由于服务器出于安全考虑会对同一IP地址做过滤,所以如果想要达到正常的压测效果,我们需要在发请求时伪造出不同的IP地址.主要步骤分为以下3步:第一步:在负载机上绑定IP地址. 第二步:在要欺骗的http ...