Codeforces Round #208

A. Dima and Continuous Line

題意:給定x軸上n個不同的點a[],將a[i]與a[i + 1]連成半圓,求這些半圓是否相交。

思路:兩個半圓相交,假設第一個半圓兩點爲x1 < x2,第二個半圓兩點爲x3 < x4,則半圓相交只有兩種情況:(1)x1 < x3 < x2 < x4;(2)x3 < x1 < x4 < x2。所以枚舉所有情況就行了。

B. Dima and Text Messages

題意:n個單詞word1,word2,...,wordn,先變成<3word1<3word2...wordn<3,然後,在這個串的任何位置隨意加入若干個字符變成另一個串。現在問題是給出n個單詞,及一個字符串str,問這個str能否經過這種加密方式轉化而成。

思路:先將n個單詞轉化成<3word1<3word2...wordn<3模式str1,然後,按先後順序在str串中對str1串中的每個字符進行查找。O(n2)的算法能過,數據太水。

C. Dima and Containers

題意:有三個容器:棧,隊列,雙端隊列。現在輸入a(a >= 0),如果a > 0,則選擇一個容器壓入;如果a == 0,則從不空的容器中彈出一個數字然後清空容器。問哪種策略能使彈出的數字和最大。

思路:這題要注意的是,每次彈出數字後,要清空容器。所以,先對0之前的數字放進數組,選擇三個(如果有的話)最大的數,假設它們的下標分別爲i1 < i2 < i3。[0,i1]這些數全部壓棧,[i1 + 1,i2 - 1]雙端隊列入從前端入隊;[i2,i3 - 1]入隊列;i3從前端進入雙端隊列;[i3 + 1,n]從後端進入雙端隊列。

D. Dima and Hares

E. Dima and Kicks

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章