Description

对于csuxushu来说,能够在CSU(California State University)组织2017年的ACM暑期集训让他感到十分荣幸。 csuxushu是一名充满梦想的程序员,因此他也希望来参加暑期集训的ACM萌新们和他一样怀揣着书写CSU-ACM历史的梦想。 一个偶然的机会,他在机房的某个角落得到了一本来自远古神犇的药水配方秘籍。秘籍上记载了许多AC药水配方,每一种药水都需要用两种原料 <勤奋,聪明> 按一定的比例配置而成。

“只要萌新喝下这些药水,他们的实力将有质的提升!”​

​                                                                                        ——《远古AC药水秘籍》

此刻萌新们正在机房内和题目奋战,耳边的WA声不绝于耳。此情此景,csuxushu下定决心要为萌新们配置这些药水。 但是这两种原料市面上并不出售,因此只能由一些已有药水混合而成。为此他四处搜寻,机房不时放进新的药水和运出药水,并且在机房内的每种药水量都保证足够多。作为全CSU最聪明的程序员,对于每一个神奇药水配方,你能告诉他能否配成吗?

Input

多组数据。

对于每组数据,第一行一个整数N(1 < =N < =105),代表操作数。
接下来N行,每行一个三元组(K, X, Y) ,XX 和 YY 分别代表勤奋和聪明两种原料在药水中的浓度,其中 XX% + YY% = 100% 。

K = 0 :询问是否可以配置神奇药水(X, Y) ;

K = 1 :新增一种原料药水(X, Y) ;

K = −1 :删除所有原料药水(X, Y) ,如果没有这种药水则忽略此操作;

Output

对于每个K = 0 的询问输出一行,Yes或No。

Sample Input

6
1 65.00 35.00
0 93.58 6.42
1 44.64 55.36
1 68.27 31.73
0 54.36 45.64
0 46.04 53.96

Sample Output

No
Yes
Yes

Hint

Source

2017年7月月赛

官方题解:

对于给出的询问(X, Y) ,判断集合中能否找到 (X1, Y1), (X2, Y2) ,并且∃k1, k2 ∈ R+ ∪ 0

s.t.k1k1+k2∗(X1,Y1)+k2k1+k2∗(X2,Y2)=(X,Y)s.t.k1k1+k2∗(X1,Y1)+k2k1+k2∗(X2,Y2)=(X,Y)

​容易知道最多有10001种药水。将(X, Y) 视为平面上的向量,能否配置当且仅当(X, Y) 集合中存在或夹在向量(X1, Y1), (X2, Y2) 之间。由于存在约束条件 XX + Y = 100 ,实际上这些点在一条直线上,因此只要判断横坐标的位置关系即可。

​使用STL中的set维护插入和删除操作O(logn),并且利用set的有序性找到横坐标的最大和最小值判断即可O(1)。总的复杂度:O(nlogn)

​注意判断集合是否为空以及横坐标的边界情况。

只用记录其中一个X就OK。

向量共线定理:  c = (x)a + (1-x)b。

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <set> using namespace std; int main()
{
int n;
while(scanf("%d",&n)!=EOF) {
set<double> s;
set<double> ::iterator p;
for(int i=;i<n;i++) {
double a,b;
int f;
scanf("%d%lf%lf",&f,&a,&b);
if(f==) {
if(s.count(a)==)
s.insert(a);
}
else if(f==-) {
if(s.count(a))
s.erase(a);
}
else if(f==) {
if(s.empty()) {
puts("No");
continue;
}
p = s.begin();
double l = *p;
p = s.end();
p--;
double r = *p;
if(l<=a&&r>=a)
puts("Yes");
else puts("No"); }
}
}
return ;
}

CSU 1974的更多相关文章

  1. csu 1812: 三角形和矩形 凸包

    传送门:csu 1812: 三角形和矩形 思路:首先,求出三角形的在矩形区域的顶点,矩形在三角形区域的顶点.然后求出所有的交点.这些点构成一个凸包,求凸包面积就OK了. /************** ...

  2. CSU 1503 点到圆弧的距离(2014湖南省程序设计竞赛A题)

    题目链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1503 解题报告:分两种情况就可以了,第一种是那个点跟圆心的连线在那段扇形的圆弧范围内,这 ...

  3. CSU 1120 病毒(DP)

    题目链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1120 解题报告:dp,用一个串去更新另一个串,递推方程是: if(b[i] > a ...

  4. CSU 1116 Kingdoms(枚举最小生成树)

    题目链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1116 解题报告:一个国家有n个城市,有m条路可以修,修每条路要一定的金币,现在这个国家只 ...

  5. CSU 1113 Updating a Dictionary(map容器应用)

    题目链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1113 解题报告:输入两个字符串,第一个是原来的字典,第二个是新字典,字典中的元素的格式为 ...

  6. CSU 1333 Funny Car Racing (最短路)

    题目链接: http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1333 解题报告:一个图里面有n个点和m条单向边,注意是单向边,然后每条路开a秒关闭b秒 ...

  7. CSU 1337 搞笑版费马大定理(2013湖南省程序设计竞赛J题)

    题目链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1337 解题报告:虽然x和y的范围都是10^8,但是如果a 是大于1000的话,那么a^3 ...

  8. CSU 1328 近似回文词(2013湖南省程序设计竞赛A题)

    题目链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1328 解题报告:中文题题意就不说了.还好数据不大,只有1000,枚举回文串的中心位置,然 ...

  9. 三分 --- CSU 1548: Design road

    Design road Problem's Link:   http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1548 Mean: 目的:从(0,0)到 ...

随机推荐

  1. mysql GPID学习

    1.为什么引入GPID? 解决主备复制的延时问题 单线程太慢, 多线程复制的问题是:最终数据可能不一致 MySQL主从延时这么长,要怎么优化? 2. 引入后有哪些缺点 不支持create table ...

  2. logrtate 切割详解

    Logrotate是Linux下一款日志管理工具,可用于日志文件的转储(即删除旧日志文件,创建新日志文件).可以根据日志大小或者按照某时段间隔来转储,内部使用cron程序来执行.Logrotate还可 ...

  3. 【卷土重来之C#学习笔记】(三) 类的基本概念

    1.类的概述   程序的数据和功能被组织为逻辑上相关的数据项和函数的封装集合,并被称为类.   类是一个能存储数据并执行代码的数据结构. 它包含数据成员和函数成员: 数据成员:存储与类或类的实例相关数 ...

  4. 【linux】netstat 详解

    Linux netstat命令用于显示网络状态. 利用netstat指令可让你得知整个Linux系统的网络情况. 在Internet RFC标准中,Netstat的定义是: Netstat是在内核中访 ...

  5. CSS 专业的技巧

    目录 专业的技巧 支持情况 贡献准则   专业的技巧 使用CSS复位 继承 box-sizing 使用 :not() 选择器来决定表单是否显示边框 为 body 元素添加行高 垂直居中任何元素 逗号分 ...

  6. SpringSecurity 3.2入门(3)单用户登录

    1.增加web.xml文件配置如下 <!-- 获取Spring Security session的生命周期,这个监听器会在 session 创建和销毁的时候通知 Spring Security ...

  7. dubbo-admin网页管理控制台

    由于近段时间在看dubbo,网上找到的这个war包发布到tomcat报错,故从git(https://github.com/apache/incubator-dubbo-ops)上重新下载编译了版本 ...

  8. Bash 终端快捷键

    在终端下输大量的命令,有些快捷键还是挺有帮助的. 跳跃 跳到最后 ctrl + e (end) 跳到最前 ctrl + a (abcde....) 向后跳一个单词 alt + 右方向键 向前跳一个单词 ...

  9. Ubuntu Cloud Image in Openstack

    Ubuntu出的云环境镜像(http://uec-images.ubuntu.com/trusty/current/trusty-server-cloudimg-amd64-disk1.img),已经 ...

  10. jQuery之检测分析纠错------地狱的镰刀

    1. 答: 或者: $(selector).eq(0).hide(); 解答:get() 方法获得由选择器指定的 DOM 元素. 2. 答: 3, 答1: 答2: 4. slideDown()方法格式 ...