Add others/other/colorec.py
This commit is contained in:
parent
aac9fb111d
commit
03592e34c4
2 changed files with 68 additions and 1 deletions
|
@ -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 a<sub>1</sub>, a<sub>2</sub>, ..., a<sub>n</sub>.
|
||||
Cho một dãy số nguyên a<sub>1</sub>, a<sub>2</sub>, …, a<sub>n</sub>.
|
||||
|
||||
### Yêu cầu:
|
||||
|
||||
|
@ -562,3 +562,42 @@ Các số trong input không vượt quá 100.
|
|||
| Input | Output |
|
||||
| :-----------------------------------------------------: | :-----------: |
|
||||
| 2<br>3 3 1<br>3 3 1<br>3 3 1<br>3 3 1<br>3 3 1<br>3 2 2 | TRUE<br>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
|
||||
*A<sub>i</sub>*(*x<sub>i</sub>*, *y<sub>i</sub>*), *i* = 1, 2, …, *n*. Mỗi điểm
|
||||
*A<sub>i</sub>* được tô bởi màu *c<sub>i</sub>* ∈ {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 *x<sub>i</sub>*,
|
||||
*y<sub>i</sub>*, *c<sub>i</sub>* 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.
|
||||
* |*x<sub>i</sub>*|, |*y<sub>i</sub>*| ≤ 200.
|
||||
|
||||
### Ví dụ
|
||||
|
||||
| COLOREC.INP | COLOREC.OUT |
|
||||
| --------------------------------------------------------------------- | :---------: |
|
||||
| 7<br>0 0 1<br>0 1 4<br>2 1 2<br>2 -1 3<br>0 -1 1<br>-1 -1 4<br>-1 1 1 | 2 |
|
||||
|
|
28
others/other/colorec.py
Executable file
28
others/other/colorec.py
Executable file
|
@ -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)
|
Loading…
Reference in a new issue