Tôi có thể sử dụng thư viện Python trong lập trình cạnh tranh không?

C ++ là một ngôn ngữ tuyệt vời để lập trình cạnh tranh vì tốc độ nhanh, quản lý bộ nhớ, con trỏ, v.v. Hơn nữa, C ++ có STL (Thư viện tạm thời tiêu chuẩn) có một bộ sưu tập lớn các cấu trúc dữ liệu và thuật toán và làm cho nhiều thuật toán dễ viết mã hơn. Python là ngôn ngữ kịch bản, mặc dù bạn có thể sử dụng nó cho CP (do các thư viện trừu tượng của nó). Nhưng python không được phép tham gia nhiều cuộc thi CP như IOI. Tôi khuyên bạn chỉ nên chuyển sang C++ ngay từ đầu vì sau này bạn sẽ cảm thấy thoải mái. Trải nghiệm của tôi với c ++ thật tuyệt

Trong khi lập trình cạnh tranh, bộ nhớ và thời gian là hai hạn chế chính. Nếu bạn muốn theo dõi việc sử dụng bộ nhớ, bạn có thể sử dụng đoạn mã sau

Đoạn mã

import sys
dic = {'a': 3, 'b': 2, 'c': 1, 'd': 1}
print(sys.getsizeof(dic))

đầu ra

240
2. Sử dụng Chức năng Bản đồ

Đầu vào loại danh sách một dòng thường được thấy trong lập trình cạnh tranh. Đây là một dòng mã Python có thể giúp bạn nhập kiểu danh sách

Đoạn mã

input_list=list(map(int, input("enter numbers: ").split()))enter numbers: 1 2 3 4 5 6 7 8

đầu ra

[1, 2, 3, 4, 5, 6, 7, 8]
3. Sắp xếp danh sách các bộ dữ liệu theo bất kỳ chỉ mục nào của giá trị bộ dữ liệu

Giả sử bạn có một danh sách với một tập hợp các bộ dữ liệu và bạn muốn sắp xếp danh sách dựa trên bất kỳ phần tử chỉ mục nào của bộ dữ liệu. Trong ví dụ dưới đây, chúng tôi đang sắp xếp một danh sách các bộ dữ liệu dựa trên phần tử thứ ba của mỗi bộ dữ liệu

Đoạn mã

val = [('first', 3, 9), ('second', 4, 6), ('third', 2, 3)]
val.sort(key = lambda x: x[2], reverse=False)
print(val)

đầu ra

[('third', 2, 3), ('second', 4, 6), ('first', 3, 9)]
4. Sử dụng khôn ngoan việc hiểu từ điển Python

Chúng tôi thậm chí có thể chuyển đổi đầu ra của việc hiểu danh sách thành từ điển Python. Sử dụng dòng mã Python bên dưới có thể giúp bạn đạt được kết quả tương tự

Đoạn mã

dic = [(str(i)+" element", i*2) for i in range(5)]
print(dict(dic))

đầu ra

{'0 element': 0, '1 element': 2, '2 element': 4, '3 element': 6, '4 element': 8}
5. Công dụng kỳ diệu của chức năng lọc

Hàm bộ lọc có thể giúp bạn loại bỏ các phần tử không mong muốn trong danh sách dựa trên bất kỳ điều kiện nào được xác định trong hàm lambda

Đoạn mã

________số 8_______

đầu ra

[1, 3, 5, 7, 9, 11, 13]
6. Nhận chuỗi hoán vị của bạn

Chúng ta có thể sử dụng thư viện

240
8 trong Python để nhận hoán vị chuỗi

Đoạn mã

240
0

đầu ra

240
17. Chuyển đổi danh sách của bạn thành một chuỗi đơn

Hàm

240
9 trong Python có thể giúp chúng ta nối các phần tử của danh sách bằng bất kỳ dấu phân cách nào. Chúng ta có thể định nghĩa dấu phân cách bên trong “ ”

Đoạn mã

240
2

đầu ra

240
38. Kiểm tra đảo ngữ

Đây là một cách đơn giản nhưng hiệu quả để kiểm tra bất kỳ đảo chữ cái nào

Đoạn mã

240
4

đầu ra

240
59. Sử dụng hoàn hảo các toán tử so sánh

Thay vì sử dụng điều kiện if-else, bạn có thể sử dụng nó để có chất lượng mã tốt hơn

Đoạn mã

240
6

đầu ra

240
710. Kiểm tra độ phức tạp của thời gian

Trước khi viết mã, bạn nên nghĩ về độ phức tạp về thời gian của bất kỳ hoạt động nào mà bạn sẽ thực hiện. Đây là một mánh gian lận từ wiki Python thể hiện độ phức tạp về thời gian của các phím tắt Python khác nhau

Luôn sử dụng hàm raw_input() bất kể loại đầu vào và sau đó chuyển đổi nó bằng hàm bản đồ. chức năng bản đồ là một trong những chức năng đẹp nhất trong python. Đáng để biết

tráo đổi

a, b = b, a

thao tác cắt lát

  • X[. N] — tất cả các phần tử bên dưới chỉ số N
  • X[N. ] — tất cả các phần tử trên chỉ số N
  • X[a. b] — tất cả các phần tử giữa a, b
  • Và hãy nhớ danh sách python là hình tròn
  • X[-k] cho phần tử thứ k từ phần tử cuối cùng. Cũng khá hữu ích để sử dụng trong việc cắt lát
  • X[-k. ] — cung cấp k phần tử cuối cùng
  • X[. -k] — cung cấp n-k phần tử đầu tiên trong đó n là độ dài của danh sách
  • Chúng còn nhiều nữa. Các tính năng gọn gàng trong Python. Cắt và Trượt (Bước) và Cắt, Cắt và Nối

Trong khi lặp đi lặp lại luôn sử dụng xrange()và không bao giờ range()
Đây là một sai lầm phổ biến mà hầu hết người mới bắt đầu mắc phải. range() đưa ra một danh sách quá mức cần thiết. xrange() là một trình tạo, tạo ra từng phần tử một và chỉ một lần. Mặc dù nếu bạn đang sử dụng Python3 thì việc sử dụng range là an toàn

Hàm sort()

mô-đun bộ sưu tập

Rất thường xuyên, bạn cần loại bỏ các bản sao. Trong khi ở các ngôn ngữ như java, bạn phải sử dụng HashMap và tất cả những thứ đó, thì ở python, nó chỉ đơn giản là

_list = list(set(_list))

Sự khác biệt giữa raw_input()0 và raw_input()1 trong danh sách
hợp nhất a=[1, 2, 3] và b=[4, 5, 6] phải là
raw_input()2
cái nào mang lại

[1, 2, 3, 4, 5, 6]

raw_input()3
cho

[1, 2, 3, [4, 5, 6]]

nối chuỗi

raw_input()4
Để nối các chuỗi trên, chúng tôi muốn làm

Nó đưa ra câu trả lời đúng nhưng đó là cách tồi tệ nhất để làm điều đó và tốn rất nhiều thời gian. Cách chính xác là sử dụng chức năng raw_input()5

Ngừng sử dụng các chức năng rút gọn trong python nếu bạn đang. Chúng không được hỗ trợ tốt và sẽ sớm bị phản đối. Số phận của reduce() trong Python 3000 từ chính người phát minh ra python. Bắt đầu sử dụng rộng rãi lambda. Xem bài đăng này Python Lambda - tại sao?

Và danh sách cứ lặp đi lặp lại
hãy xem cuốn sách này Viết cuốn sách Python thành ngữ
Tôi chắc rằng bạn có thể lấy một bản pdf ở đâu đó

Cuối cùng, thực hành. HackerRank là tốt nhất cho người mới bắt đầu và đặc biệt nếu bạn là người yêu thích trăn, bạn sẽ thấy thực sự thoải mái

Đoạn trên là một câu trả lời tôi đã viết trên Quora và nhận được một chút đánh giá cao. Tôi hy vọng nó cũng giúp ích ở đây

Chúng ta có thể sử dụng thư viện trong lập trình cạnh tranh không?

Trong lập trình cạnh tranh, chúng tôi không có thời gian để tạo các chương trình như sắp xếp, bản đồ, tìm kiếm, v.v. Vì những mục đích này, chúng tôi sử dụng một số thư viện C++ rất phổ biến để làm cho mã của chúng tôi nhanh hơn và cũng để tiết kiệm thời gian .

Tôi có thể sử dụng python trên Codeforces không?

Python là một ngôn ngữ lập trình tuyệt vời. đơn giản, biểu cảm, cô đọng. Trong Codeforces, Python thường là lựa chọn tốt nhất cho các vấn đề về Div 2 A và B .

Tại sao mọi người không sử dụng python trong lập trình cạnh tranh?

Python chậm vì nó là ngôn ngữ thông dịch . Vì vậy trong các cuộc thi, nó sẽ không bao giờ giành chiến thắng trong cuộc thi tốc độ hay cuộc thi. APL cũng sẽ không bao giờ chiến thắng trong một cuộc thi, nhưng nó rất nhanh (thậm chí nhanh hơn cả Python) trong việc 'tìm ra' một giải pháp nhanh cho một vấn đề hoặc tạo mẫu hệ thống.

Có phải python quá chậm để lập trình cạnh tranh không?

Có một số cuộc thi lập trình cạnh tranh trong đó python sẽ quá chậm, nhưng trường hợp này không xảy ra . Codechef cung cấp hệ số nhân cho các ngôn ngữ chậm như python để nếu bạn viết mã hiệu quả, bạn sẽ không nhận được TLE.