T1

给定\(n\)个点的坐标(\(0 \leq xi,yi \leq 10000\))求选出任意三个点能组成的三角形的总面积。

Input

第一行\(n\)表示点数。接下来每行两个数\(x_i\),\(y_i\)表示点的坐标。

Output

一行一个浮点数保留一位小数表示面积和。

前置知识

  1. 卡常
  2. 向量

解法

众所周知\(S_{\delta}ABC = |\vec{AB} \times \vec{AC}|\)

枚举两个三角形的顶点\(A, B\), 为了避免重复我们只讨论三角形的第三个顶点在\(\vec{AB}\)右侧的情形

所求面积即为

\[\begin{align*}
Ans &= \sum_{C} \vec{AB} \times \vec{AC} \\
&= \vec{AB} \times \sum_{C} \vec{AC}
\end{align*}
\]

维护一波前缀和即可

代码

/*code by tyqtyq*/
#pragma GCC optimize(2)
#pragma GCC optimize(3)
#include<bits/stdc++.h>
#define f(i,x,y) for(register int i=x, i##end=y; i<=i##end; ++i)
#define d(i,x,y) for(register int i=y, i##end=x; i>=i##end; --i)
#define FO(x) {freopen(#x".in","r",stdin);freopen(#x".out","w",stdout);}
using namespace std;
int read(int& x){x=0; int f=1, ch=getchar(); while(!isdigit(ch)) f=ch=='-'?-1:f, ch=getchar(); while(isdigit(ch)) x=x*10+ch-'0', ch=getchar(); return x*=f;}
int read(){int x=0, f=1, ch=getchar(); while(!isdigit(ch)) f=ch=='-'?-1:f, ch=getchar(); while(isdigit(ch)) x=x*10+ch-'0', ch=getchar(); return x*f;}
int max(int x, int y){return x>y?x:y;} int min(int x, int y){return x<y?x:y;}
int n, rnk[3005];
double _[3005];
long long ans;
struct rec{
int x, y;
}a[3005], dot[3005] ;
struct recc{
long long x, y;
}sum;
int cmp2(rec a, rec b){
return a.y > b.y;
}
int cmp3(int x, int y){
return _[x] < _[y];
}
int main(){
//FO(triangle5);
read(n); f(i,1,n) read(a[i].x), read(a[i].y); sort(a+1, a+1+n, cmp2);
f(i,3,n) {
f(j,1,i-1) dot[j].x = a[j].x-a[i].x, dot[j].y = a[j].y-a[i].y, rnk[j]=j, _[j] = atan2(dot[j].y, dot[j].x);
sort(rnk+1, rnk+i, cmp3) ;
sum.x = dot[rnk[1]].x; sum.y = dot[rnk[1]].y;
f(j,2,i-1){
ans += sum.x*dot[rnk[j]].y - sum.y*dot[rnk[j]].x;
sum.x += dot[rnk[j]].x; sum.y += dot[rnk[j]].y;
}
}
printf("%lld.%c\n", ans/2, "01"[ans%2]);
return 0; //拜拜程序~
}

T2

表箱关有一个房间非常可怕,它由\(n\)个变异天启组成。

每个天启都会在进入房间后吐出绿弹并炸向某一个位置且范围内只有一个天启。若该位置的天启已经死亡则没有事情发生,否则该位置的天启会死亡。每个天启只能且必须吐一次绿弹(除非在它吐弹以前他就挂了)。

绿弹的飞行速度很快,在某个绿弹落地之前不会有新的绿弹被吐出。

虽然房间的天启位置和吐弹位置固定,但是吐弹顺序是随机的,所以ZCC不能很好地制定策略。

现在ZCC想知道,最少和最多有几个天启被干掉。

Input

第一行\(n\)表示天启个数。

第二行\(n\)个数\(a_i\)表示\(i\)号天启的目标是\(a_i\)。

注意:行末有一个空格。

Output

一行两个数表示最少和最多有几个天启被干掉。

解法

考虑贪心最小值

循环执行:

  1. 入度为0的点\(x\)开火
  2. \(ver[x]\)被消灭
  3. \(ver[ver[x]]\)的入度减少\(1\)

若如此做最后必然只剩下一个环, 否则必有入度为\(0\)的点, 而环上答案为\(\lfloor \frac{Len+1} \rfloor\)

又因为开火次数最少, 所以贪心正确

T3

求最大的\(T \leq \frac{|S|}{2}\), 使得串\(S\)的长度为\(T\)的前后缀循环同构

解法

定有\(最长前缀={A, B}, 最长后缀={B, A}\)

枚举分支点\(i = |A|\), 记\(f(i) = |B|\), 用\(i + f(i)\)更新答案

则有\(f(i) \leq f(i+1) + 2\), 否则不符合\(A, B\)的定义

所以每次计算\(f(i)\)时, 从\(f(i+1)+2\)向下枚举第一个可行解即可

JZOJ-2019-11-8 A组的更多相关文章

  1. JZOJ 【NOIP2016提高A组集训第16场11.15】兔子

    JZOJ [NOIP2016提高A组集训第16场11.15]兔子 题目 Description 在一片草原上有N个兔子窝,每个窝里住着一只兔子,有M条路径连接这些窝.更特殊地是,至多只有一个兔子窝有3 ...

  2. JZOJ 【NOIP2016提高A组集训第16场11.15】SJR的直线

    JZOJ [NOIP2016提高A组集训第16场11.15]SJR的直线 题目 Description Input Output Sample Input 6 0 1 0 -5 3 0 -5 -2 2 ...

  3. 2019.11.9 csp-s 考前模拟

    2019.11.9 csp-s 考前模拟 是自闭少女lz /lb(泪奔 T1 我可能(呸,一定是唯一一个把这个题写炸了的人 题外话: 我可能是一个面向数据编程选手 作为一个唯一一个写炸T1的人,成功通 ...

  4. EOJ Monthly 2019.11 E. 数学题(莫比乌斯反演+杜教筛+拉格朗日插值)

    传送门 题意: 统计\(k\)元组个数\((a_1,a_2,\cdots,a_n),1\leq a_i\leq n\)使得\(gcd(a_1,a_2,\cdots,a_k,n)=1\). 定义\(f( ...

  5. [New!!!]欢迎大佬光临本蒟蒻的博客(2019.11.27更新)

    更新于2019.12.22 本蒟蒻在博客园安家啦!!! 本蒟蒻的博客园主页 为更好管理博客,本蒟蒻从今天开始,正式转入博客园. 因为一些原因,我的CSDN博客将彻底不会使用!!!(带来不便,敬请谅解) ...

  6. JZOJ2020年8月11日提高组T4 景点中心

    JZOJ2020年8月11日提高组T4 景点中心 题目 Description 话说宁波市的中小学生在镇海中学参加计算机程序设计比赛,比赛之余,他们在镇海中学的各个景点参观.镇海中学共有n个景点,每个 ...

  7. JZOJ2020年8月11日提高组T3 页

    JZOJ2020年8月11日提高组T3 页 题目 Description 战神阿瑞斯听说2008年在中华大地上,将举行一届规模盛大的奥林匹克运动会,心中顿觉异常兴奋,他想让天马在广阔的天空上,举行一场 ...

  8. JZOJ2020年8月11日提高组T2 宝石

    JZOJ2020年8月11日提高组T2 宝石 题目 Description 见上帝动了恻隐之心,天后也想显示一下慈悲之怀,随即从口袋中取出一块魔术方巾,让身边的美神维纳斯拿到后堂的屏风上去试试,屏风是 ...

  9. JZOJ2020年8月11日提高组T1 密码

    JZOJ2020年8月11日提高组T1 密码 题目 Description 在浩浩茫茫的苍穹深处,住着上帝和他的神仆们,他们闲谈着下界的凡人俗事,对人世间表现的聪明智慧,大加赞赏.今天他们正在观赏大地 ...

  10. JZOJ2020年8月11日提高组反思

    JZOJ2020年8月11日提高组反思 T1 看到题 啊这?! 我看错了吗??? 我理解错题了吗?? 好吧没有-- 高精度模板题,不用多说 T2 看到这种矩阵的问题 以为是前缀和搞事情 结果呢 扫描线 ...

随机推荐

  1. bootstrap点击下拉菜单没反应

    出现这个问题一般就涉及 网页脚本的问题 好好看看自己网页 scripts 编写是否正确 也可以通过浏览器的 F12 进入console 控制台看看是什么问题 总的来说 该错误要从网页脚本编写的问题出发 ...

  2. jmeter抓取cnode网站token值

    前置条件:已经登录 1.线程组下面先添加HTTP信息头管理器 1.1 jmeter向服务器发送http请求时,需要验证 cookie的等设置信息给到服务器去识别,因此,在发送请求前,我们一般会把相关需 ...

  3. 云时代架构阅读笔记十一——数据库SQL优化

    网上关于SQL优化的教程很多,但是比较杂乱.近日有空整理了一下,写出来跟大家分享一下,其中有错误和不足的地方,还请大家纠正补充. 1.对查询进行优化,要尽量避免全表扫描,首先应考虑在 where 及 ...

  4. 图片上传--base64

    <?php defined('BASEPATH') OR exit('No direct script access allowed'); include_once (APPPATH . &qu ...

  5. 016、Java中使用小数

    01.代码如下: package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public ...

  6. excel 两列值匹配取另外一列值 INDEX MATCH 函数

    =INDEX($D:$D,MATCH(K68,$C:$C,0))

  7. SQL——左连接(Left join)右连接(Right join)内连接(Inner join)

    概念(定义) ​首先还是介绍一下这三个的定义 ​Left join:即左连接,是以左表为基础,根据ON后给出的两表的条件将两表连接起来.结果会将左表所有的查询信息列出,而右表只列出ON后条件与左表满足 ...

  8. Phoenix5.0的部署

    官网下载编译好的二进制包 http://phoenix.apache.org/download.html2 上传并解压到指定目录, 再修改目录名称 tar -zxvf apache-phoenix-5 ...

  9. python scipy样条插值函数大全(interpolate里interpld函数)

    scipy样条插值 scipy样条插值1.样条插值法是一种以可变样条来作出一条经过一系列点的光滑曲线的数学方法.插值样条是由一些多项式组成的,每一个多项式都是由相邻的两个数据点决定的,这样,任意的两个 ...

  10. [强网杯 2019]Upload

    0x00 知识点 代码审计,PHP 反序列化. 0x01 解题 先注册一个账号,再登陆 上传 简单测试一下: 只能上传能被正常查看的 png. F12看到文件上传路径 扫扫敏感文件 存在:/www.t ...