程設第三週

2021-10-03 20:39:39 字數 2078 閱讀 6627

簡單題意

多組資料,組數給出,對於每組資料,第一行給出n,k,s,第二行為n個整數,要求在n個整數中選k個整數,使其和為s。

思路對於該題我們可以直接dfs(x,y,sum),x表示已經選了幾個數,y表示從前往後選到了第幾個數,sum表示當前的和為多少。這樣當x=k且sum=s則表示該情況合法,ans++。對於是否選乙個數則要判斷當前情況下是否還能選這個數,是否還有名額來選這個數,以及選完這個數sum會不會》s,若滿足條件則可以選擇該數。

**

#include

using

namespace std;

int a[20]

;bool b[20]

;int n,k,s,ans;

void

dfs(

int x,

int y,

int sum)

if(x>k)

return;if

(sum>s)

return

;for

(int i=y;i}int

main()

ans=0;

dfs(0,

0,0)

; cout<}}

簡單題意

給出n個閉區間,選擇盡可能少的點使得每個區間中都至少有乙個點。

資料給出為第一行乙個n,接下來n行為n個閉區間。

思路對於這個題目,首先要先對n個區間進行一下排序,從左到右排序。然後我們從左到右開始進行處理。對於第乙個區間來說,選的點一定是盡可能向右的,因為它自己就是最左邊的區間了,所以越往右,這個點就可以在越多的區間裡邊。舉個例子,如下列五個區間:[1,5],[2,5],[3,5],[4,5],[5,5],第乙個區間有1~5五個點可以選擇,那我們會選擇5這個點,因為這樣選擇乙個點就可以是五個區間內含有點,而如果選擇1,則後四個區間還需要選點,所以我們要盡可能地向右選。

但是向右選也不能直接取區間的右端點,因為可能會出現這種情況:[1,5],[2,4],這樣我們最右邊也只能選擇4,所以在尋找最右邊的點時要注意選擇的點要合法。

這樣當我們選出來乙個點x後,所有左端點<=x點區間就都包含乙個點了,即這些區間可以被視為刪掉了,這樣我們又回到了開始的情況,從第乙個區間開始查詢點。直至所有區間全部處理完。

**

#include

#include

using

namespace std;

struct xy};

intmain()

else}

cout

}

簡單題意

選擇盡可能少的區間覆蓋一條指定線段[1,t]。認為(1,2),(3,4)可以覆蓋(1,4)。輸出所需區間的個數,若不能則輸出-1。

資料給出為第一行n,t,t表示線段的右端點。接下來n行為n個區間。

思路如同第二題,先對區間進行排序。此時要注意的一點是對於[1,5],[1,10]這兩個區間,我們必定會選擇[1,10],因為一定要選乙個,左端點相同,右端點一定會選擇大的。

這樣我們選出第乙個區間[1,x],那麼接下來第二個區間的左端點,就一定是在2~x+1中間選乙個,對於這些區間,我們一定會選擇右端點最大的乙個,因為左端點已經沒有意義了,而右端點越大,我們覆蓋的就越多,所以要選擇出右端點最大的乙個區間,直到找完所有區間或者已經覆蓋完成指定線段。而覆蓋不了則是在左端點在[l,r]中,最大右端點<=r,即r+1沒有區間可以覆蓋掉,這時可以直接退出尋找過程,輸出-1或者所有區間找完也沒有覆蓋線段。

**

#include

#include

#include

#include

#include

using

namespace std;

int a[

1000010]=

;int

main()

k=a[1]

; l=1;

ans=1;

bool f=

true

; max=0;

while

(kelse}if

(!f) ans=-1

; cout

}

集訓第三週

又要感嘆時間過得真快了,8月13號,距離第一場網路賽還有26天。暑假三周集訓結束,個人賽也結束了,這一周還是做了一些個人賽,然後組好了隊伍。去年一隊有2個人算是 實力超群 比其餘人都高乙個檔次。而今年大家的水平都差不多,沒有像去年他們那麼突出,實力自然有不小的下降。相比去年的隊伍,今年隊的特點是大家...

第三週作業

實驗作業 1.輸入課本各個例題,除錯執行程式,並分析程式,將每乙個程式改寫2到3個版本,自己分析程式結果,然後再除錯執行,核對分析結果的對錯。2.編寫程式輸入乙個三角形的三條邊,計算其面積和周長 3.編寫程式計算並輸出課本本章習題3表示式的值並分析結果。4.編寫乙個程式,輸入乙個一元二次方程的三個係...

第三週作業

要求 1.輸入課本各個例題,除錯執行程式,並分析程式,將每乙個程式改寫2到3個版本,自己分析程式結果,然後再除錯執行,核對分析結果的對錯。2.編寫程式輸入乙個三角形的三條邊,計算其面積和周長 3.編寫程式計算並輸出課本本章習題3表示式的值並分析結果。4.編寫乙個程式,輸入乙個一元二次方程的三個係數,...