From 03592e34c45c0ee5d8a3d82e76b4361813fcba7a Mon Sep 17 00:00:00 2001 From: Raphael McSinyx Date: Tue, 1 Aug 2017 19:53:25 +0700 Subject: Add others/other/colorec.py --- others/other/README.md | 41 ++++++++++++++++++++++++++++++++++++++++- others/other/colorec.py | 28 ++++++++++++++++++++++++++++ 2 files changed, 68 insertions(+), 1 deletion(-) create mode 100755 others/other/colorec.py diff --git a/others/other/README.md b/others/other/README.md index f901d94..4773407 100644 --- a/others/other/README.md +++ b/others/other/README.md @@ -463,7 +463,7 @@ Diện tích hình vuông nếu bốn điểm thoả mãn yêu cầu đề bài, ## Chọn số -Cho một dãy số nguyên a1, a2, ..., an. +Cho một dãy số nguyên a1, a2, …, an. ### Yêu cầu: @@ -562,3 +562,42 @@ Các số trong input không vượt quá 100. | Input | Output | | :-----------------------------------------------------: | :-----------: | | 2
3 3 1
3 3 1
3 3 1
3 3 1
3 3 1
3 2 2 | TRUE
FALSE | + +## Hình chữ nhật bốn màu + +Trên mặt phẳng toạ độ Đề các vuông góc Oxy cho *n* điểm phân biệt +*Ai*(*xi*, *yi*), *i* = 1, 2, …, *n*. Mỗi điểm +*Ai* được tô bởi màu *ci* ∈ {1,2,3,4}. Ta gọi hình chữ +nhật bốn màu là hình chữ nhật thoả mãn hai điều kiện sau: + +* Bốn đỉnh của hình chữ nhật là bốn điểm trong *n* điểm đã cho và được tô bởi + bốn màu khác nhau. +* Các cạnh của hình chữ nhật song song với một trong hai trục toạ độ. + +### Yêu cầu + +Cho biết toạ độ và màu của *n* điểm, hãy đếm số lượng hình chữ nhật bốn màu. + +### Dữ liệu + +* Dòng đầu tiên chứa số nguyên dương *n* là số lượng điểm trên mặt phẳng. +* Dòng thứ *i* trong *n* dòng tiếp theo chứa ba số nguyên *xi*, + *yi*, *ci* là thông tin về toạ độ và màu của điểm thứ + *i*, *i* = 1, 2, …, *n*. + +*Các số trên cùng một dòng được ghi cách nhau ít nhất một dấu cách.* + +### Kết quả + +Một dòng chứa số lượng hình chữ nhật đếm được. + +### Giới hạn + +* 4 ≤ *n* ≤ 100000. +* |*xi*|, |*yi*| ≤ 200. + +### Ví dụ + +| COLOREC.INP | COLOREC.OUT | +| --------------------------------------------------------------------- | :---------: | +| 7
0 0 1
0 1 4
2 1 2
2 -1 3
0 -1 1
-1 -1 4
-1 1 1 | 2 | diff --git a/others/other/colorec.py b/others/other/colorec.py new file mode 100755 index 0000000..d55ac7f --- /dev/null +++ b/others/other/colorec.py @@ -0,0 +1,28 @@ +#!/usr/bin/env python3 +from itertools import combinations + +COLORS = {1, 2, 3, 4} + +with open('COLOREC.INP') as f: + f.readline() + color, exes, eyes, count = {}, {}, {}, 0 + for line in f: + x, y, c = map(int, line.split()) + color[x, y] = c + exes.setdefault(y, []) + exes[y].append(x) + eyes.setdefault(x, []) + eyes[x].append(y) + +for v in eyes.values(): v.sort() +for y0, l in exes.items(): + for x0, x1 in combinations(l, 2): + s = COLORS - {color[x0, y0], color[x1, y0]} + if len(s) > 2: continue + for y1 in eyes[x0][y0:]: + try: + count += not s - {color[x0, y1], color[x1, y1]} + except: + continue + +with open('COLOREC.OUT', 'w') as f: print(count, file=f) -- cgit 1.4.1