BZOJ1132: [POI2008]Tro(叉積 排序)

来源:https://www.cnblogs.com/zwfymqz/archive/2018/07/26/9373944.html
-Advertisement-
Play Games

題意 世上最良心題目描述qwq 平面上有N個點. 求出所有以這N個點為頂點的三角形的面積和 N<=3000 Sol 直接模擬是$n^3$的。 考慮先枚舉一個$i$,那麼我們要算的就是$\sum_{j = 1}^n sum_{k = j + 1}^n |Cross((a_j, b_j), (a_k, ...


題意

世上最良心題目描述qwq

平面上有N個點. 求出所有以這N個點為頂點的三角形的面積和 N<=3000

Sol

直接模擬是$n^3$的。

考慮先枚舉一個$i$,那麼我們要算的就是$\sum_{j = 1}^n sum_{k = j + 1}^n |Cross((a_j, b_j), (a_k, b_k))|$

但是在計算相對坐標以及叉積的時候的時候會出現絕對值

前者我們在最開始按照$x$坐標排序,後者在枚舉$i$時重新按照斜率從小到大排序

上面的式子可以化為

$$\sum_{j = 1}^n a_j \sum_{k = j + 1}^n b_k - b_j \sum_{k = j + 1}^n a_k$$

直接對$a,b$做尾碼和即可

#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
const int MAXN = 3001;
int N;
struct Point {
    int a, b;
    Point operator - (const Point &rhs) const {
        return (Point) {a - rhs.a, b - rhs.b};
    }
    bool operator < (const Point &rhs) const {
        return a * rhs.b > rhs.a * b;
    }
}p[MAXN], tmp[MAXN];
bool comp(const Point &aa, const Point &bb) {
    return aa.a == bb.a ? aa.b < bb.b : aa.a < bb.a;
}
int main() {
    N; scanf("%d", &N);
    for(int i = 1; i <= N; i++) 
        scanf("%lf %lf", &p[i].a, &p[i].b);
    sort(p + 1, p + N + 1, comp);
    memcpy(tmp, p , sizeof(p));
    long double ans = 0;
    for(int i = 1; i <= N; i++) {
        for(int j = i + 1; j <= N; j++) p[j] = p[j] - p[i];
        sort(p + i + 1, p + N + 1);
        double suma = 0, sumb = 0;
        for(int j = N; j > i; j--) 
            suma = suma + p[j + 1].a, sumb = sumb + p[j + 1].b,
            ans = ans + p[j].a * sumb - p[j].b * suma;
        memcpy(p, tmp, sizeof(tmp));
    }
    printf("%.1Lf", ans / 2);
    return 0;
}

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • DVWA列出了最流行、危害最大的幾個漏洞中就有命令註入漏洞。這種漏洞利用起來非常的簡單。只要會使用基本的命令就可以利用,入門門檻非常非常的低。以DVWA為靶機,測試一下命令註入漏洞。 ...
  • 1. 學習計劃 1、Solr服務搭建 2、Solrj使用測試 3、把資料庫中的數據導入索引庫 4、搜索功能的實現 2. Solr服務搭建 2.1. Solr的環境 Solr是java開發。 需要安裝jdk。 安裝環境Linux。 需要安裝Tomcat。 2.2. 搭建步驟 第一步:把solr 的壓縮 ...
  • String類的概述 String 類代表字元串。Java 程式中的所有字元串字面值(如 "abc" )都作為此類的實例實現。字元串是常量,一旦被賦值,就不能被改變。 String類的構造方法 * public String():空構造 * public String(byte[] bytes):把 ...
  • 本文來自作者 未聞 在 GitChat 分享的{基於 Docker 的微服務架構實踐} 前言 基於 Docker 的容器技術是在2015年的時候開始接觸的,兩年多的時間,作為一名 Docker 的 DevOps,也見證了 Docker 的技術體系的快速發展。本文主要是結合在公司搭建的微服務架構的實踐 ...
  • ...
  • 由於在C++項目中,經常遇到處理字元方面的問題,故藉此機會整理一下,讓自己對於char , string 等有進一步的瞭解。 基本概念 由單引號括起來的一個字元成為char型字面值。雙引號括起來的零個或多個字元則構成字元串型字面值。 字元串字面值得類型=>由常量字元構成的數組,併在結尾處添加一個空字 ...
  • 進群:125240963 即可獲取數十套PDF哦! 進群:125240963 即可獲取數十套PDF哦! 前面幾天想看一個電影(至於什麼電影就不說了),搜了半天沒有中文字幕。 看日本電影再也不怕看不懂了,6行Python代碼輕鬆實現音頻轉文字 這麼貴! 好在這難道不了一個吃苦耐勞的程式員,在知乎某位大 ...
  • 元組 1.與字元串相同的是元組是一些元素的不可變有序序列。與字元串的區別是元組中的元素不一定是字元,其中的按個元素可以是任意類型,且他們彼此之間的類型也可以不同。 2.元組可以進行的操作: 重覆操作、連接、索引、切片... 3*('a',2) = ('a',2,'a',2,'a',2) ('a',2 ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...