看起來noip特別喜歡考這種思維題==
題意:有n家客棧,每家客棧有乙個顏色和乙個花費。給定最大允許花費,選擇兩家顏色相同的客棧,問有多少種選擇方式使得兩家客棧之間至少有一家花費允許的最大值的客棧
可以想到一些 n² 甚至 n³ 的方法,但顯然不足以滿足所有資料
考慮對於每一家客棧,從右往左掃瞄,找到第一家滿足條件的顏色相同的客棧,其左邊的所有顏色相同的客棧也就都滿足條件了
所以此題可以巧妙地運用一些臨時變數來記錄當前可行的方案數,從而o(n)地解決問題
詳見**
#include#includeview code#include
using
namespace
std;
const
int maxk=55
;int
tot_col[maxk],last[maxk],linshi[maxk];
//tot_col表示每個顏色出現的總次數,last表示該種顏色上一次出現的位置
intmain()
printf(
"%d\n
",ans);
return0;
}
NOIP2011 D1T2 選擇客棧
用時 20 min 時間複雜度 o kn 還算是比較簡單的一道題,先看部分分,發現暴力可以拿50。暴力的做法是列舉每個合法咖啡店左右兩端相同顏色的客棧。考慮優化,由於本題中每個合法點都對答案造成影響,很容易想到維護某種字首和。而從輸入過程中每個點的影響,無論該點是否合法,該點上的客棧都對答案做出貢獻...
選擇客棧(noip2011 day1 t2)
題目描述 麗江河邊有 n 家很有特色的客棧,客棧按照其位置順序從 1 到 nn n 編號。每家客棧都按照某一種色調進行裝飾 總共 k 種,用整數 0 k 1 表示 且每家客棧都設有一家咖啡店,每家咖啡店均有各自的最低消費。兩位遊客一起去麗江旅遊,他們喜歡相同的色調,又想嘗試兩個不同的客棧,因此決定分...
NOIP 2015 D1 T2 資訊傳遞
問題描述 有n個同學 編號為1到n 正在玩乙個資訊傳遞的遊戲。在遊戲裡每人都有乙個固定的資訊傳遞物件,其中,編號為i的同學的資訊傳遞物件是編號為ti同學。遊戲開始時,每人都只知道自己的生日。之後每一輪中,所有人會同時將自己當前所知的生日資訊告訴各自的資訊傳遞物件 注意 可能有人可以從若干人那裡獲取資...