題目背景background
ztc真的遇上黃牛了。。。
題目描述description
週末ztc想去劇場看演出,但是他沒有票。這時,救世主wzj出現了,他慷慨地願意賣給ztc一些票。
wzj手上共有n張票,但每張票的費用都不一樣,貪心的ztc想要得到更多的票,但又想花費的最少,慷慨的wzj願意給連續的m張票。
ztc希望你能幫助他在花錢範圍內取得最大的票數。
輸入輸出格式input/output
輸入格式:
輸入檔案tickets.in的第一行是2個整數n、f。其中(2≤n≤1000000),表示票的數目,(10≤f≤10000),表示ztc身上的錢。
接下來的1行,有n個整數a(1≤a≤30),表示每一張票的票價。
輸出格式:
輸出檔案tickets.out僅一行整數m,表示ztc能得連續的最大票數。
輸入輸出樣例sample input/output
樣例測試點#1
輸入樣例(tickets.in):
5 10
2 3 1 6 7
輸出樣例(tickets.out):
3
思路:這題呢,乍一看,有點像揹包問題,選擇最優解放入
可以使用遞迴簡單點,把每張門票的**存入陣列,遞迴函式要有四個條件:
①如果票數沒了,說明剛好買完,返回1,ans++
②如果錢沒有了,返回0
③如果有錢沒票,返回0
④如果上述條件都成立,繼續遞迴,票數--,口袋裡的錢減去已經買的門票的錢。
**如下:
1 #include 2int w[100];//
存放每張票的**
3int ans;//
結果 4
int tickets(int s,intn)5
11else
if(s<0) return
0;//
如果錢都沒有了,返回0
12else
if(n<=0&&s>0) return
0;//
如果還有錢,但是沒票賣了,返回0
13else
1420
return tickets(n-1,s);//
繼續,電影票數目-- 21}
22}23int
main()
2436 tickets(f,n);//
傳入遞迴函式(身上的錢,電影票數目) 37}
38 printf("
%d\n
",ans);
39return0;
40 }
NOIP2011普及組 瑞士輪
題目 洛谷p1309 codevs1132 vijos p1771 題目大意 要你模擬瑞士輪賽制,求出r輪後第q名選手的編號。解題思路 首先對所有選手按分數從大到小進行排序,然後模擬比賽。因為原本是排好序的,贏的加1分,輸的扣1分,所以贏的人和輸的人也是分別有序的。所以我們可以把每輪贏的人扔進乙個陣...
NOIP 2011普及組 瑞士輪
背景 在雙人對決的競技性比賽,如桌球 羽毛球 西洋棋中,最常見的賽制是淘汰賽和迴圈賽。前者的特點是比賽場數少,每場都緊張刺激,但偶然性較高。後者的特點是較為公 平,偶然性較低,但比賽過程往往十分冗長。本題中介紹的瑞士輪賽制,因最早使用於 1895 年在瑞士舉辦的西洋棋比賽而得名。它可以看作是淘汰賽與...
2023年NOIP普及組複賽題解
題目涉及演算法 這道題目是一道基礎的模擬題,只需要模擬將數字進行翻轉就可以了,注意 0 和 負數。實現 如下 include using namespace std void solve int num if num 0 int t 0 while num 0 cout t endl int n i...