题目链接

题目描述

Rabbit和xxx获得了一个很大的蛋糕,这个蛋糕实际上是由N个点组成的凸多边形(点从1到N编号,保证没有三点共线)。
接着两个人开始分蛋糕,他们准备沿着蛋糕上两点连成的直线把蛋糕切成两份,由于Rabbit是女生,xxx总会把大的那一份分给Rabbit。现在有Q种切的方案,xxx可以选择任意一种,问xxx最多能分得多少蛋糕?

输入描述:

第一行两个整数N,Q。
接下来N行,每行两个数xi,yi表示第i个点的坐标(点按逆时针顺序给出)。
接下来Q行,每行两个整数S,T表示切的两个点。

输出描述:

输出xxx最多能分得多少面积的蛋糕。

输入

4 2
0.5 0.5
10.5 0.5
10.5 10.5
0.5 10.5
1 3
4 2

输出

50.00

思路

  • 暴力枚举TLE

  • 记录从起点到每个点的面积,这样任意平分的面积就可以表示:

    S3 = S - S1 - S2

  • 叉积求面积:

#include <bits/stdc++.h>
#define LL  long long
#define P pair<int, int>
#define lowbit(x) (x & -x)
#define mem(a, b) memset(a, b, sizeof(a))
#define REP(i, n) for (int i = 1; i <= (n); ++i)
#define rep(i, n) for (int i = 0; i < (n); ++i)
#define maxn 100005
using namespace std;
struct ac{double x, y;friend double operator * (const ac t1, const ac t2) {double sum = t1.x * t2.y - t1.y * t2.x;return abs(sum);}friend ac operator - (const ac t1, const ac t2) {return {t1.x - t2.x, t1.y - t2.y};}
}a[maxn];
int N, Q;
double pre[maxn];int main() {#ifndef ONLINE_JUDGEfreopen("in.txt", "r", stdin);// freopen("out.txt", "w", stdout);
#endifscanf("%d %d", &N, &Q);pre[1] = pre[2] = 0;REP (i, N) {scanf("%lf %lf", &a[i].x, &a[i].y);if (i >= 3) {pre[i] = pre[i-1] + (a[1] - a[i-1]) * (a[1] - a[i]);}}double ans = 0.0;rep (i, Q) {int S, T;scanf("%d %d", &S, &T);if (S > T)  swap(S, T);double sum = pre[T] - pre[S] - (a[1] - a[S]) * (a[1] - a[T]);sum = min(sum, pre[N] - sum);ans = max(sum, ans);}printf("%.10lf\n", ans / 2);return 0;
}

牛客练习赛36 F-Rabbit的蛋糕 (叉积求面积, 记录前缀)相关推荐

  1. 【牛客网】牛客练习赛19 F 算式子【数学--递推 、前缀、数字】

    传送门:算式子 花了一些时间理解AC的代码,震惊,代码真的是短小精悍,推理能力很强亦或者是做题多,见的多. 能够理解里面的逻辑真的挺难的 题意 给定n,m,\(1\le x\le m\),求\(\su ...

  2. 解题报告(一)C、(牛客练习赛41 F)简单数学题(数论 + FWT)(3.5)

    繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量题解和代码,题目难度不一定按照题号排序,我会在每道题后面加上题目难度指数(1∼51 \sim 51∼5),以模板题难度 11 ...

  3. 牛客练习赛29: F. 算式子

    链接:https://www.nowcoder.com/acm/contest/211/F 来源:牛客网 题目描述 给定  个整数  .保证  . 对于每个  ,求出 .为了避免过量输出,你只需要将所 ...

  4. 牛客练习赛50 F tokitsukaze and Another Protoss and Zerg(分治NTT)

    一些废话: 写完上一题(分治FFT)之后记起之前牛客写的这道题,题解是用启发式NTT,每次选两个项数最小的合并,当时没有整理NTT的模板所以就先mark了,今天受到分治FFT的启发,想用分治NTT来解 ...

  5. 牛客练习赛 43 F Tachibana Kanade Loves Game 容斥原理(Java版ac)

    链接:https://ac.nowcoder.com/acm/contest/548/F 来源:牛客网 题目描述 立华奏是一个天天打比赛的萌新. 省选将至,萌新立华奏深知自己没有希望进入省队,因此开始 ...

  6. 牛客练习赛63 F 牛牛的树行棋 (SG函数+树差分)

    链接:https://ac.nowcoder.com/acm/contest/5531/F 来源:牛客网 牛牛的树行棋 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 524288K, ...

  7. 牛客练习赛51 C、勾股定理 只一边求另外两边 结论

    链接:https://ac.nowcoder.com/acm/contest/1083/C 来源:牛客网 勾股定理 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语 ...

  8. 牛客练习赛 4 A-Laptop (线段树,思维/GTMD普通前缀和也能求)

    链接:https://ac.nowcoder.com/acm/contest/16/A?&headNav=www 来源:牛客网 题目描述 FST是一名可怜的小朋友,他很强,但是经常fst,所以 ...

  9. 牛客练习赛36 Rabbit的字符串(最小表示法)

    题目链接 题目描述 Rabbit得到了一个字符串,她的好朋友xxx可以给这个字符串施加一次魔法. 魔法可以选择字符串的任一位置,并将该位置后面的所有字符水平拼接到串首. 例如:对于字符串abcde,可 ...

最新文章

  1. 3分钟掌握支持向量机-机器学习面试必备
  2. 基础 —— ip地址与子网掩码的认识
  3. microsoft .net framework专题汇总
  4. 四川2020年三月计算机等级考试报名时间,四川2020年3月计算机等级考试报名时间...
  5. java.lang.ClassNotFoundException: org.jaxen.JaxenException
  6. qq代理服务器哪里获取_哪里可以下载小学英语课件?这3个渠道,英语老师得赶快收藏...
  7. wpf 自动完成comboxBox
  8. 如何制作bt种子文件
  9. Windows XP 下载与安装-怀念过去
  10. [前端案例]百行代码实现炫酷时钟
  11. 1083 Windy数(数位dp)
  12. 数组里的字符串转换成数字或者把数字转换成字符串
  13. 电脑连接热点无internet访问权限_电脑连接无线网,显示无网络访问权限
  14. 【java】Deepin 解决JDK出现Picked up _JAVA_OPTIONS: -awt.useSystemAAFontSettings=gasp的问题
  15. springboot是如何实现配置文件自动加载的呢
  16. 根据xml配置地图服务
  17. NLP学院网:李斌NLP关键执行:由谁去给猫挂铃铛?
  18. 1.什么是Docker
  19. 土壤湿度传感器YL69使用
  20. uboot启动时间优化

热门文章

  1. JS 数字左补零函数
  2. 已超过了锁请求超时时段。 (Microsoft SQL Server,错误: 1222)
  3. 关于 【通过代理访问】 的研究,【突破 IP ,“无限制”投票】
  4. nokia : Booklet 3G
  5. .NET C/S(WinForm)开发技巧点滴(转)
  6. Gridview行随鼠标变色
  7. 给定一个数组,求如果排序之后,相邻两数的最大差值,要求时间复杂度O(N),且要求不能用非基于比较的排序。
  8. Georgia and Bob POJ - 1704
  9. 机器学习 —— python库 —— 使用array创建
  10. 大数据 互联网架构阶段 Nginx的使用