Список вопросов
Как зайти в Даркнет?!
25th January, 01:11
4
0
Как в tkinter из поля ввода Entry получить значение в одну переменную и обновить строку кнопкой, затем получить ещё одно введённое значение и затем сложить их. Ниже пример кода
21st July, 19:00
891
0
Программа, которая создает фейковые сервера в поиске игровых серверов CS 1.6 Steam
21st March, 17:43
946
0
Очень долго работает Update запрос Oracle
27th January, 09:58
912
0
не могу запустить сервер на tomcat HTTP Status 404 – Not Found
21st January, 18:02
905
0
Где можно найти фрилансера для выполнения поступающих задач, на постоянной основе?
2nd December, 09:48
936
0
Разработка мобильной кроссплатформенной военной игры
16th July, 17:57
1723
0
период по дням
25th October, 10:44
3954
0
Пишу скрипты для BAS только на запросах
16th September, 02:42
3720
0
Некорректный скрипт для закрытия блока
14th April, 18:33
4613
0
прокидывать exception в блоках try-catch JAVA
11th March, 21:11
4380
0
Помогите пожалуйста решить задачи
24th November, 23:53
6084
0
Не понимаю почему не открывается детальное описание продукта
11th November, 11:51
4350
0
Нужно решить задачу по программированию на массивы
27th October, 18:01
4394
0
Метода Крамера С++
23rd October, 11:55
4308
0
помогите решить задачу на C++
22nd October, 17:31
4002
0
Помогите решить задачу на python с codeforces
22nd October, 11:11
4492
0
Python с нуля: полное руководство для начинающих
18th June, 13:58
2598
0
Решение задачи Бассейн реки с Меньшиков
Без пояснения   Просмотров: 1515
Дана карта рек некоторого континента. Каждая река показана как ломаная линия, которая начинается у истока реки и заканчивается или в точке, где река впадает в другую, или устьем реки. Вершины ломаной - или точки поворота реки, или точки впадения притоков.
Будем рассматривать бассейн реки как выпуклый многоугольник минимальной площади, который содержит реку и все её притоки.
Примечание. Согласно этому определению бассейна реки, одна и та же территория может принадлежать бассейнам различных рек.
Пример. Показан континент с тремя реками. Координаты рек и площади бассейнов даны в таблице.
Требуется найти максимальную площадь бассейна реки, расположенной на данном континенте.
Будем рассматривать бассейн реки как выпуклый многоугольник минимальной площади, который содержит реку и все её притоки.
Примечание. Согласно этому определению бассейна реки, одна и та же территория может принадлежать бассейнам различных рек.
Пример. Показан континент с тремя реками. Координаты рек и площади бассейнов даны в таблице.
Требуется найти максимальную площадь бассейна реки, расположенной на данном континенте.
Код
#include #include #include #include #include using namespace std; int n; const double eps = 1e-8; double Fabs(double a) { if (a<0) return -a; return a; } bool Equal(double a, double b) { return Fabs(a-b) <= eps; } bool Less(double a, double b) { return !Equal(a,b) && a>x>>y; } }; bool operator == (const point &a, const point &b) { return a.x == b.x && a.y == b.y; } struct line { double a, b, c; line(){} line(point f, point s) { a = s.y - f.y; b = f.x - s.x; c = -(a*f.x + b*f.y); } double dist(const point &p) { return Fabs(a*p.x + b*p.y + c)/sqrt((double)a*a + b*b); } bool isLeft(const point &p) { return Less(a*p.x + b*p.y + c, 0); } bool isRight(const point &p) { return Less(0, a*p.x + b*p.y + c); } }; vector > rivers; vector used; void input() { cin>>n; rivers.resize(n); used.resize(n); int amount; for (int i=0;i >amount; rivers[i].resize(amount); for (int j=0;j &vertex) { for (int nxtRiv = 0; nxtRiv < n; nxtRiv++) { if (!used[nxtRiv]) { point nxtEnd = rivers[nxtRiv].back(); point curEnd = rivers[curRiv].back(); bool isConnect = find(rivers[curRiv].begin(), rivers[curRiv].end(), nxtEnd) != rivers[curRiv].end() | find(rivers[nxtRiv].begin(), rivers[nxtRiv].end(), curEnd) != rivers[nxtRiv].end(); if (isConnect) { used[nxtRiv] = true; vertex.insert(vertex.end(), rivers[nxtRiv].begin(), rivers[nxtRiv].end()); dfs(nxtRiv,vertex); } } } } void GetPointsLeftByLine(const vector &vertex, const vector &setPoints, line &LINE, vector &leftSetPoints) { for (size_t i=0;i &vertex, vector &convexHull, int leftPos, int rightPos, const vector &setPoints) { if (setPoints.size() == 0) { convexHull.push_back(rightPos); return ; } line LR(vertex[leftPos],vertex[rightPos]); // Находим точку, наиболее удаленную от прямой LR int topPos = setPoints[0]; line topLine = line(vertex[leftPos],vertex[topPos]); double maxDist = LR.dist(vertex[topPos]); for (size_t i=1;i S11; line LT = line(vertex[leftPos],vertex[topPos]); // формируем множество точек, находящихся слева от прямой LT GetPointsLeftByLine(vertex,setPoints,LT,S11); QuickHull(vertex, convexHull,leftPos,topPos,S11); vector S12; line TR = line(vertex[topPos],vertex[rightPos]); // формируем множество точек, находящихся слева от прямой TR GetPointsLeftByLine(vertex, setPoints,TR,S12); QuickHull(vertex, convexHull, topPos, rightPos, S12); } void QuickHull(const vector &vertex, vector &convexHull) { // нельзя построить выпуклую оболочку if (vertex.size() < 3) return; // поиск самой левой и самой правой точки int leftPos = 0, rightPos = 0; for (size_t i=1;i S1; // точки выше прямой LR vector S2; // точки ниже прямой LR for (size_t i=0;i &vertex, const vector &convexHull) { // если не сделать явного приведения к типу int, то будет попытка зайти в цикл, // т.к. convexHull.size() имеет тип size_t(безнаковое целое), // то если convexHull пуст. получим 0-1 = 4294967295 double S = 0; for (int i=1;i<(int)convexHull.size()-1;i++) { S += findSquare( vertex[convexHull[0]], vertex[convexHull[i]], vertex[convexHull[i+1]]); } return Fabs(S/2); } void solve() { double MaxSquare = 0; for (int i=0;i vertex = rivers[i]; dfs(i,vertex); vector convexHull; QuickHull(vertex, convexHull); MaxSquare = max(MaxSquare,findSquare(vertex, convexHull)); } } printf("%0.2f",MaxSquare); } int main() { freopen("input.txt","r",stdin); freopen("output.txt","w",stdout); input(); solve(); return 0; }
 
 
 
 
 
Автор: Администратор
Автор: Администратор
Комментарии
-
Moriartyyy
2025-11-13 22:36:17Мориарти – это не просто маркетплейс, это портал в мир интриг, загадок и гениального зла. Вы попадаете в атмосферу, где каждое слово, каждая деталь продумана до мелочей, словно гениальный шахматный ход в партии, которую ведет сам профессор Мориарти.
Сайт встречает вас мрачной элегантностью. Темные тона, стилизованные под викторианскую эпоху шрифты и динамичные элементы создают ощущение присутствия в тайном логове гения преступного мира. Навигация интуитивно понятна, но при этом каждый раздел таит в себе скрытые отсылки и намеки.Он затягивает в мир, где грань между гением и безумием размыта, а каждое решение может повлиять на исход игры. Готовы ли вы вступить в эту опасную игру?
ВИЗИТКИ: "удалить пробелы"
mega1 . to mgmarket6 . at mega2o2nde2gzktxse2fesqpyfeoma72qmvk3fkecip2l3uv3tbn5mad . onion
Под управлением Мориарти, были созданы:
- ///Mori-Coim.
- ///Mori-Game.
- ///Mori- casino.
- ///Mega-приложение.
- ///Youtube канал.
- ///Бот медицинской помощи в telegram.
- ///Бот юридической помощи в telegram.
И это лишь начало!!!
На youtube Вы можете увидеть такие видео как:
- Я сделал своих подписчиков миллионерами. Заработал 60МЛН за час!−ПосланиеотМОРИАРТИ.MORI COIN!
- МОРИАРТИ: 60 Минут ГЕНИАЛЬНОГО общения обо ВСЕМ.
- БОГ ЕСТЬ? Правда о Религии и Происхождении Человека!
- Я создал лекарство от рака!
- Учу Вас дышать: успех, власть, сила. Измени свою жизнь навсегда. Мориарти!
- Как живёт МОРИАРТИ. Как стать умным - Метод спецслужб!
- Я выполню любое ТВОЕ ЖЕЛАНИЕ!
- Почта Мориарти - принимаем письма!
И все это – под молчаливым наблюдением Профессора, играющего в свою дьявольскую шахматную партию.....
///M - это словно целая Вселенная, со своей жизненной экосистемой....
info@mycod.net  
Карта сайта  
Правообладателям
Заявка на расчет
×
или напишите нам прямо сейчас: