Страница: 1 | 
		
		 
			   
			 
			 
			 
			 проблема в том, что таких точек бесконечное множество (если я правильно понял условие). Следовательно найдя определённую точку довольно сложно быть стопудово уверенным, что это та самая точка и более правильного решения быть не может. Значит надо искать то самое множество, а потом уже наобум брать оттуда какую-нибудь точку. Следовательно тут надо мутить со множествами, их пересечениями и объединениями. Это программа первого курса, а я на четвёртом - у меня проблемы, ни хрена уже не помню... Но преполагаю, что надо так: сначала смотрим на ось Ох (или Оу). Потом проецируем все прямоугольники на неё и пробиваем самую "чёрную" область, то есть область в которой пересекается наибольшее количество прям-ков.  Потом делаем то же с другой осью и ищем пересечение этих "чёрных" областей. Полученный прям-к будет скоплением искомых точек. Выбирай середину - не ошибёшся  Самое сложное здесь: определить самую "чёрную" область, но и это не представляет особых проблем. Алгоритм типа: 1) находим самую правую левую сторону прям-ка. 2) находим самую левую правую сторону прям-ка. 3) если (1) левее (2), то всё в порядке, иначе (1)=(первая влево от (1)). goto (3). 4) наше "чёрное" место находится между (1) и (2). Конечно, требует шлифовки, но незаинтересованному в результате, мне не особо хочется тратить столько сил на его реализацию. В общих чертах решил и всё! Вот если бы какой конкурс замутили, тогда...    Если я правильно понял, задача элементарная. Создаем массив NxN, где границы между ячейками - сортированные координаты вершин прямоугольников. Затем по очереди "зарисовываем" прямоугольники, увеличивая ячейки на 1. А потом просто ищем максимум, получаем из координат ячейки координаты соответствующего "элементарного прямоугольника", берем, например, его центр и выдаем... Совсем несложная задача... To Sharp: не совсем понял эту фразу: границы между ячейками - сортированные координаты вершин прямоугольников но если я правильно понял, то возражение - у нас ведь координатная плоскость. Соот-но один прямоуг-к может иметь порядок координат 10^234123412341234 (!!!), а другой 10^(-235623542345234). Это я, конечно, утрирую (хотелось бы посмотреть на переменные такого порядка), но массивы, ИМХО, здесь не полезут - надо чисто сравнением: что больше, а что меньше... В олимпиадах всегда ставится ограничение на тип данных  Что же касается мутной фразы "отсортированный массив координат точек вершин", понять ее несложно. Имеем два прямоугольника (-1.0,-1.0 - 1.0,1.0) и (0,0 - 2,2). Сортируем массив координат вершин по X-ам и Y-ам, получаем два массива: X-ов: {-1.0,0.0,1.0,2.0} и Y-ов: {-1.0,0.0,1.0,2.0}. Затем объявляем массив 3*3 (понятно, что он не может быть больше 2*N x 2*N), после чего просто заполняем его ячейки, инкрементируя их содержимое так, как расположены прямоугольники. Т.е.: после 1-го прям-ка: 0 0 0 1 1 0 1 1 0 после 2-го: 0 1 1 1 2 1 1 1 0 Ищем максимум: 2 - находится (тут-то и понадобятся сохраненные раньше отсортированные X и Y) между 0 и 1 по Ox и между 0 и 1 по Oy. Возьмем центральную точку этого прямоугольника - 0.5,0.5 - она будет искомой точкой. Sharp, ты будешь смеяться, но в принципе я имел ввиду то же самое. Твоя двойка - моя "чёрная" зона...   Страница: 1 | 
 
			
 
  
		
     
  
    
Вопрос: Олимпиада х.з. Задача 4
     
    
Добавлено: 29.12.03 06:35
     
      
  
				
			  
					 
			
				 
    
		
       
    
Автор вопроса:  
     Павел | Web-сайт: www.vbnet.ru | ICQ: 326066673
 Павел | Web-сайт: www.vbnet.ru | ICQ: 326066673 
      
       
  
Задача 4 с какой-то олимпиады. 35 баллов из 200. 
    
  На плоскости заданы N прямоугольников со сторонами, параллельными
осям координат (N <= 20). Требуется указать одну из точек,
принандлежащую наибольшему возможному количеству этих прямоугольников.
  Входные данные: В первой строке входного файла Input.txt указано
число N. В последующих N строках содержится по 4 вещественных числа
x1, y1, x2, y2 (x1, y1 - координаты левого нижнего, x2, y2 - правого
верхнего угла прямоугольника), числа в строках отделены пробелами.
  Выходные данные: В выходном файле Output.txt должна находиться пара
вещественных чисел x, y - координаты искомой точки.
  Пример Input.txt:
5
2 2 4 4
-5 1.5 3 4
-1.E20 -1.E20 1.E20 1.E20
1.1E-10 1.1E-10 1.2E-10 1.2E-10
0 0 9 9
 Пример Output.txt:
2.5 3.5
  Эту задачу я ещё не решил.
				
		
		
					 
			
				 
  
		
     
  
    
Ответы
     
    
Всего ответов: 10
     
      
  
		
	  
			 
	
		 
    
       
    
Номер ответа: 1 
      
Автор ответа: Neco
 Neco









ICQ: 247906854 
Вопросов: 133
Ответов: 882
      
 Web-сайт:  
 Профиль |  | #1
      
Добавлено:  03.01.04 01:40
       
    
       
  
 
     .
.
		
	  
			 
	
		 
    
       
    
Номер ответа: 2 
      
Автор ответа: Sharp
 Sharp










Лидер форума
ICQ: 216865379 
Вопросов: 106
Ответов: 9979
      
 Web-сайт:  
 Профиль |  | #2
      
Добавлено:  03.01.04 06:32
       
    
       
  
 
    
		
	  
			 
	
		 
    
       
    
Номер ответа: 3 
      
Автор ответа: Neco
 Neco









ICQ: 247906854 
Вопросов: 133
Ответов: 882
      
 Web-сайт:  
 Профиль |  | #3
      
Добавлено:  08.01.04 23:47
       
    
       
  
 
    
		
	  
			 
	
		 
    
       
    
Номер ответа: 4 
      
Автор ответа: Sharp
 Sharp










Лидер форума
ICQ: 216865379 
Вопросов: 106
Ответов: 9979
      
 Web-сайт:  
 Профиль |  | #4
      
Добавлено:  08.01.04 23:59
       
    
       
  
 
     10^(817262346) степени тебе никто не даст, если сам не попросишь. К тому же написано, что координаты - вещественные числа, что обозначает, что следует использовать тип double.
 10^(817262346) степени тебе никто не даст, если сам не попросишь. К тому же написано, что координаты - вещественные числа, что обозначает, что следует использовать тип double.
		
	  
			 
	
		 
    
       
    
Номер ответа: 5 
      
Автор ответа: Neco
 Neco









ICQ: 247906854 
Вопросов: 133
Ответов: 882
      
 Web-сайт:  
 Профиль |  | #5
      
Добавлено:  13.01.04 22:40
       
    
       
  
 
    
		
	  
			 
	
		 
    
       
    
Номер ответа: 6 
      
Автор ответа: Sharp
 Sharp










Лидер форума
ICQ: 216865379 
Вопросов: 106
Ответов: 9979
      
 Web-сайт:  
 Профиль |  | #6
      
Добавлено:  14.01.04 01:31
       
    
       
  
Да, разве что ты не в тему упомянул про пересечение множеств...
 
    
		
	  
			 
	
		 
    
       
    
Номер ответа: 7 
      
Автор ответа: K-00
 K-00


ICQ: 179750444 
Вопросов: 7
Ответов: 20
      
 Профиль |  | #7
       
Добавлено:  04.02.05 13:56
       
    
       
  
Sharp
 
    
 а что делать, если координаты прямоугольников - не целые цисла. Индексы массива будут также не целые.
		
	  
			 
	
		 
    
       
    
Номер ответа: 8 
      
Автор ответа: Sharp
 Sharp










Лидер форума
ICQ: 216865379 
Вопросов: 106
Ответов: 9979
      
 Web-сайт:  
 Профиль |  | #8
      
Добавлено:  04.02.05 19:57
       
    
       
  
Координаты прямоугольников хранятся в массиве, а не являются его индексами
 
    
		
	  
			 
	
		 
    
       
    
Номер ответа: 9 
      
Автор ответа: K-00
 K-00


ICQ: 179750444 
Вопросов: 7
Ответов: 20
      
 Профиль |  | #9
       
Добавлено:  07.02.05 14:32
       
    
       
  
Не понимаю, что тогда индексы?
 
    
		
	  
			 
	
		 
    
       
    
Номер ответа: 10 
      
Автор ответа: Sharp
 Sharp










Лидер форума
ICQ: 216865379 
Вопросов: 106
Ответов: 9979
      
 Web-сайт:  
 Профиль |  | #10
      
Добавлено:  07.02.05 20:03
       
    
       
  
Индексы - это номера координат в отсортированном  упорядоченном их множестве. Т.е., если у тебя есть координаты 1.5, 2.5 и 4.5, тогда индекс 2.5 - 2