noip模擬賽 radius

分析:這道題實在是不好想,一個可以騙分的想法是假定要求的那個點在中心點上,可以騙得不少分.但是在邊上的點要怎么確定呢?理論復雜度O(﹢無窮).答案一定是和端點有關的,涉及到最大值最小,考慮二分最大值,關鍵就是怎么check.如果有一條邊x,還有一個點y,把y到x上的點的距離>mid的點給標記上,這樣就會形成許多個區間,判斷一下x是否被這些區間給完全覆蓋住了,如果沒有被完全覆蓋住,證明這個最大值可以更小.思路非常奇妙,具體實現細節可以參看代碼:

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>using namespace std;const int maxn = 210, maxm = 40010;int n, m, a[maxn][maxn], head[maxn], to[maxm],ans,len,top,nextt[maxm],w[maxm], tot = 1;
struct node
{int x, y, z;
}e[20000];struct node2
{int first, second;
}e2[20000];void add(int x, int y, int z)
{w[tot] = z;to[tot] = y;nextt[tot] = head[x];head[x] = tot++;
}void floyd()
{for (int k = 1; k <= n; k++)for (int i = 1; i <= n; i++)for (int j = 1; j <= n; j++)if (a[i][j] > a[i][k] + a[k][j])a[i][j] = a[i][k] + a[k][j];
}void add2(int x, int y)
{e2[++top].first = x;e2[top].second = y;
}bool cmp(node2 a, node2 b)
{if (a.first == b.first)return a.second < b.second;return a.first < b.first;
}bool can()
{int x = 0;sort(e2 + 1, e2 + 1 + top,cmp); for (int i = 1; i <= top; i++){if (x < e2[i].first)return false;if (x > e2[i].second)continue;x = e2[i].second + 1;}if (x > len)return true;return false;
}bool check(int p)
{bool flag = false;for (int i = 1; i <= m; i++){top = 0;len = e[i].z;for (int j = 1; j <= n; j++){int x = p - a[e[i].x][j];int y = p - a[e[i].y][j];if (x < 0 && y < 0){add2(0, e[i].z);break;}if (x >= e[i].z || y >= e[i].z)continue;if (x + y >= e[i].z)continue;add2(max(0, x + 1), min(e[i].z, e[i].z - y - 1));}if (!can())flag = 1;if (flag)break;}if (flag)return true;return false;
}int main()
{memset(a, 127 / 3, sizeof(a)); scanf("%d%d", &n, &m);for (int i = 1; i <= m; i++){int u, v, z;scanf("%d%d%d", &u, &v, &z);z *= 2;add(u, v, z);add(v, u, z);e[i].x = u;e[i].y = v;e[i].z = z;a[u][v] = a[v][u] = min(a[u][v], z);}for (int i = 1; i <= n; i++)a[i][i] = 0;floyd();int l = 0, r = 10000010;while (l <= r){int mid = (l + r) >> 1;if (check(mid)){ans = mid;r = mid - 1;}elsel = mid + 1;}double temp = ans / 2.0;printf("%.2lf\n", temp);
return 0;
}

?

轉載于:https://www.cnblogs.com/zbtrs/p/7726133.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/454252.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/454252.shtml
英文地址,請注明出處:http://en.pswp.cn/news/454252.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

來自IT公司速查手冊的各大IT公司薪資和待遇內幕

來自IT公司速查手冊的各大IT公司薪資和待遇內幕 &#xff08;轉載于 http://xuchaoyi99.cnblogs.com/ &#xff09; 編號 1. 杭州 諾基亞 2. 南京 趨勢科技 Trend 3. 北京 聯想&#xff08;北京&#xff09;有限公司 4. 深圳 華為 5. 深圳 中興通訊 6. 上海 SAP 7.…

Docker 精通之 Dockerfile

Docker 精通系列 Docker 精通之入門Docker 精通之微服務Docker 精通之常用命令Docker 精通之 Dockerfile 1.基本說明 Dockfile 是一個用于編寫 docker 鏡像生成過程的文件&#xff0c;其有特定的語法。在一個文件夾中&#xff0c;如果有一個名字為 Dockfile 的文件&#xff0c…

c語言中int的取值范圍_c語言入門(1)

c語言入門C語言一經出現就以其功能豐富、表達能力強、靈活方便、應用面廣等特點迅速在全世界普及和推廣。C語言不但執行效率高而且可移植性好&#xff0c;可以用來開發應用軟件、驅動、操作系統等。C語言也是其它眾多高級語言的鼻祖語言&#xff0c;所以說學習C語言是進入編程世…

vue : 無法將“vue”項識別為 cmdlet、函數、腳本文件或可運行程序的名稱。請檢查名稱的拼寫,如果包括路徑,請確保路徑正確, 然后再試一次。

vue : 無法將“vue”項識別為 cmdlet、函數、腳本文件或可運行程序的名稱。請檢查名稱的拼寫&#xff0c;如果包括路徑&#xff0c;請確保路徑正確&#xff0c; 然后再試一次。 報錯原因&#xff1a; 沒有安裝腳手架vue-cli 解決方法&#xff1a;安裝腳手架vue-cli npm inst…

session的生命周期

session的生命周期分為創建、活動、銷毀三個階段 創建一個新的會話不代表舊的會話就銷毀了 session.invalidate()方法可以銷毀當前會話 在page1中寫上這個方法再打開網頁 說明該會話被銷毀了出現了錯誤 我們把這個方法寫在所有代碼段的下面 再打開這個網頁 刷新網頁 這個sessio…

虛擬化與網絡

本文轉自Grodd51CTO博客&#xff0c;原文鏈接&#xff1a;http://blog.51cto.com/juispan/1959791&#xff0c;如需轉載請自行聯系原作者

算法基礎之搜索和經典排序

目錄 簡介 搜索算法 二分法查找 排序算法 冒泡排序&#xff08;Bubble Sort&#xff09; 選擇排序&#xff08;Selection Sort&#xff09; 插入排序&#xff08;Insert Sort&#xff09; 快速排序&#xff08;Quick Sort&#xff09; 歸并排序&#xff08;Merge Sort…

IT人不要一直做技術

發表于&#xff1a;2009-03-04 09:51:44 樓主IT人不要一直做技術 【引子】感覺這篇文章很有深意&#xff0c;正是我所想說的話。希望大家有借鑒。 【原文】 我現在是自己做&#xff0c;但我此前有多年在從事軟件開發工作&#xff0c;當回過頭來想一想自己&#xff0c;覺得特別…

背景寬高隨文本變化_中科大提出ContourNet:更準確的任意形狀場景文本檢測新方法...

點擊上方“CVer”&#xff0c;選擇加"星標"置頂重磅干貨&#xff0c;第一時間送達本文轉載自&#xff1a;CSIG文檔圖像分析與識別專委會本文簡要介紹2020年被CVPR錄用的論文“ContourNet: Taking a Further Step toward Accurate Arbitrary-shaped Scene Text Detect…

python 類、模塊、包的區別

學習python的時候&#xff0c;碰到了import 和 from xx import xx的問題&#xff0c; 為了弄清楚什么是 module 和package &#xff0c;這篇文章講解的不錯&#xff01;&#xff01; 原文&#xff1a; http://www.cnblogs.com/kex1n/p/5977051.html --------------------------…

Hadoop MapReduce概念學習系列之MPI和MapReduce(十三)

在當前最流行的高性能并行體系結構中比較常用的并行編程環境分為兩類:消息傳遞和共享存儲。MPI是基于消息傳遞的經典代表&#xff0c;是消息傳遞井行程序設計的標準&#xff0c;用于構建高可靠的、可伸縮的、靈活的分布式應用程消息傳遞井行處理開銷比較大&#xff0c;適合于大…

算法面試題匯總(更新中)

1、根據數字返回相應位置數字 def get_digit(num, i):# i0 個位 1 十位 2 百位...return num // (10 ** i) % 10# print(get_digit(12345, 6)) 2、列表反轉&#xff0c;不用內置函數 def reverse_list(li):n len(li)for i in range(n // 2):li[i], li[n-i-1] li[n-i-1], …

在python中os_在Python中使用os.execvp

我有一個關于在 Python中使用os.execvp的問題.我有以下用于創建參數列表的代碼&#xff1a; args [ "java" , classpath , "-Djava.library.path" lib_path() , ea , "-Xmx1000m" , "-server" , "code_swarm" , params ] …

WEBGL學習【四】模型視圖矩陣

<html lang"zh-CN"><!--服務器運行地址&#xff1a;http://127.0.0.1:8080/webgl/LearnNeHeWebGL/NeHeWebGL4.html--> <head><title>NeHes WebGL</title><meta charset"UTF-8"/><!--引入需要的庫文件--><scr…

使用Jmeter對mysql進行性能測試入門

使用Jmeter對mysql進行性能測試入門 第一步&#xff1a;測試環境準備&#xff1a; 1&#xff09;、mysql> select version(); ----------- | version() | ----------- | 5.5.13 | ----------- ms數據庫數據&#xff1a; mysql> select count(*) from account; ----------…

算法基礎之數據結構

whats the 數據結構 數據結構是指相互之間存在著一種或多種關系的數據元素的集合和該集合中數據元素之間的關系組成。 簡單來說&#xff0c;數據結構就是設計數據以何種方式組織并存儲在計算機中。 比如&#xff1a;列表、集合與字典等都是一種數據結構。 通常情況下&#xff…

soap接口怎么不返回tuple python_Python 中的接口

Python 是動態類型語言, 只在運行時做 Duck Typing 檢查.利: 靈活, 方便弊: 代碼混亂, 缺少規范標準自帶兩類接口支持: abc 和 typing.Protocol, 有他們協助給天馬行空的程序員套上枷鎖, Python 的大工程才可以"上道"abcabc 就是 Abstract Base Class, 虛基類. 跟 Ja…

java 第11次作業:你能看懂就說明你理解了——this關鍵字

this 代表當前對象 轉載于:https://www.cnblogs.com/qingyundian/p/7736699.html

c#多線程操作界面控件的簡單實現

一個小功能&#xff0c;早有人實現了。自己在一個項目中用到&#xff0c;覺得有必要記錄一下&#xff0c;寫下來。代碼 從上面你可能已經看出如何多線程操作同一個控件的&#xff0c;就是通過一個委托&#xff0c;然后定義委托方法&#xff0c;判斷控件的InvokeRequired屬性&am…

ssh 免密_Linux下配置SSH免密通信 “sshkeygen”的基本用法

利用 SSH 協議可以有效防止遠程管理過程中的信息泄露問題。SSH最初是UNIX系統上的一個程序&#xff0c;后來又迅速擴展到其他操作平臺。1 什么是SSH引用百度百科的說明:SSH 為 Secure Shell的縮寫&#xff0c;由 IETF 的網絡小組(Network Working Group)所制定&#xff1b;它是…