数三角形 CH Round #48 - Streaming #3 (NOIP模拟赛Day1)
描述
什么叫三角形?这个应该是每个人都知道的。在本题中,我们不允许三角形出现退化的情况,即每条边的长度与每个角的大小也应大于0。
现在平面上有n个两两不重合的点,第i个点的坐标为(x[i],y[i])。你需要计算,以它们作为顶点,一共能构成的三角形的个数。注意,即使是两个全等的三角形,只要它们的位置是不同的,就认为是不同的三角形,详见样例。
输入格式
第一行为一个正整数n,代表点的个数。
接下来n行,每行一对非负整数x[i],y[i],代表第i个点的坐标。
在此之后可能还会有多余的输入,请无视之。
输出格式
输出一个非负整数,即一共能构成的三角形的个数。
样例输入
5 0 0 1 0 2 0 0 1 1 1 2333 3333
样例输出
9
数据范围与约定
对于20%的数据,n=3。
另有30%的数据,保证任意三个点不在同一直线上。
对于100%的数据,n≤100,保证任意两个点不重合,坐标不会超过10,000。
样例解释
假设五个点依次为A,B,C,D,E。
那么,组成的9个三角形分别为△ABD,△ABE,△ACD,△ACE,△ADE,△BCD,△BCE,△BDE,△CDE。
Solution : 首先,我们可以很直接的想到N^3的做法,但是,当N增大的时候,就要考虑另外的做法,我们可以对这些点排极角序,对于一条直线上的点,算出他们的组合,用总数减去一条直线上的组合就可以了
4和7 CH Round #48 - Streaming #3 (NOIP模拟赛Day1)
描述
萌萌哒doge突然想吃药了!
现在有一排格子,从左向右标号为0到m。doge最初在0号格子中。
一共有n堆药,第i堆药有a[i]粒,被放在b[i]格子里。
每次,萌萌哒doge可以跳到它右边4格或右边7格的位置。求它最多能吃到的药的个数。注意,doge不必跳到格子m,而是可以随时结束游戏。
输入格式
第一行为两个正整数n,m,分别代表药的堆数与格子坐标的最大值。
接下来n行,每行两个正整数a[i],b[i],分别代表某堆药的粒数和位置。
输出格式
输出一个非负整数,最多能吃到的药的个数。
样例输入
3 13 100 4 10 7 1 11
样例输出
101
数据范围与约定
对于20%的数据,n=1,m≤100,000。
对于40%的数据,n≤15,m≤100,000。
对于60%的数据,m≤100,000。
对于100%的数据,n≤100,000,m≤1,000,000,000,a[i]≤10,000,1≤b[i]≤m。
样例解释
第一次跳4格,第二次跳7格,总共能吃到101粒药。
Solution : 60%暴力dp。考虑4和7的特征,4 = 2^2,7 = 2^3 - 1,也就是说,有一个三元组<+2^2,+2^3,-2^0>,当7的个数达到2个,4的个数达到1个时(也就是18),以后的数这个三元组可以等效于一个二元组<2^0,2^1>也就是说18及以后的所有数都可以由若干个4个若干个7组成。那么,对于一个位置,在它18格以前的所有位置都可以达到它,我们可以记录下最大值,然后再和18以内的范围暴力dp的结果取最值,从而得到一个O(n)的DP,常数大约在20左右。
反射镜 CH Round #48 - Streaming #3 (NOIP模拟赛Day1)
描述
注:坐标平面没有边缘,光线不会因为碰到边界而中途停下,m的意义是所有镜子坐标绝对值的最大值不会超过m。
从前有一个坐标网格(其中坐标的绝对值不会超过m)。从左到右x坐标逐渐增加,而从下到上y坐标逐渐增加。
在网格中摆放着n面镜子,第i面镜子的坐标为(x[i],y[i])。镜子均与坐标轴成45°角。所以共有两种类型的镜子:“\”型和“/”型。特殊地,原点处不会有任何镜子,也不会有某个位置有多面镜子。
镜子的两个面都能够反射光线,而中间不透光,例如,对于一个“/”型镜子,从下面射入的光线会被反射到右方向,而从左面射入的光线会被反射到上方向。
现有一条光线从原点所在格子沿x轴正方向射出,求它走过$T$格路程后所在的位置。
输入格式
第一行为三个正整数n,m,T,分别代表镜子的个数与坐标的范围。
接下来n行,每行两个整数和一个字符x[i],y[i],t[i],代表某个镜子的位置和类型。
输出格式
输出两个整数,分别代表走过T格路程后的x坐标和y坐标。
样例输入
5 2 8 0 1 \ 0 2 / 1 0 / 1 1 \ 1 2 \
样例输出
3 1
数据范围与约定
存在10%的数据,n=1。
存在40%的数据,n≤1,000。
存在40%的数据,m≤1,000。
存在40%的数据,T≤1,000,000。
对于100%的数据,n≤100,000,m≤1,000,000,000,T≤10^{18}。
具体地,数据范围如下表所示:
测试点编号 | n | m | T |
---|---|---|---|
1 | =1 | ≤1,000 | ≤100,000 |
2,3 | ≤1,000 | ≤100,000 | |
4,5 | ≤1,000 | ≤100,000 | |
6,7 | ≤1,000 | ≤1,000 | |
8 | =1 | ||
9,10 | ≤1,000 | ||
11,12,13 | ≤1,000 | ||
14,15,16 | ≤100,000 | ||
17,18,19,20 |
样例解释
在8个单位时间的路线是:右上左上右下右右。
Solution : 首先分别按x坐标和y坐标各排一次序,得到对于一个镜子,4个方向离它最近的镜子是哪一个,之后就可以按照时间模拟了。