Zut2020第一次周賽

2021-10-05 04:14:40 字數 3266 閱讀 3520

個人理解:模板題,需要注意的是選到的數順序不能改變,相鄰元素不能相等。

**如下:

#include

#include

#include

#include

#include

#include

#define maxn 1009

int a[maxn]

, dp[maxn]

;using

namespace std;

intmain()

//核心**如下

for(

int i =

1; i <= n; i++)}

ans =

max(dp[i]

, ans);}

cout << ans << endl;

return0;

}

個人理解:如同題目所說一維線性,找出其最優解,只有每一步都是最優的結果才是最優的。具體見注釋。

注意用了double型,int型就要*1.0來保證資料的準確性,否則有出錯的可能。

**如下:

#include

#include

#include

#include

#include

#include

#define ll long long

using

namespace std;

const

int maxn =

105;

int p[maxn]

;//儲存充電站到起點的距離

int n, c, t;

//n表示充電站的個數,c表示電動車滿電行駛的距離,t充電時間

int vr, v1, v2;

//vr表示兔子速度,v1表示烏龜電車速度,v2表示烏龜蹬車速度

double dp[maxn]

, t1, t2, min;

//dp[i]表示第i個充電站所用最短時間,

//t1兔子時間,t2烏龜時間,min記錄時間最小的乙個值

intmain()

else

t2 =

(c *

1.0/ v1)

+(dis - c)

*1.0

/ v2;

t2 +

= dp[j];if

(j)// 充電了

t2 +

= t;

if(min > t2)

min = t2;

} dp[i]

= min;}if

(dp[n +1]

< t1)

cout <<

"what a pity rabbit!"

<< endl;

else cout <<

"good job,rabbit!"

<< endl;

}return0;

}

個人理解:數學問題,把每兩次跳看做一次,k為奇數要多算一次跳躍。

**如下:

#include

#include

#include

#include

#include

#include

#define maxn 1009

using

namespace std;

intmain()

else

cout << ans << endl;

}return0;

}

個人理解:題目說的很明白,簡單模擬一下。

**如下:

#include

#include

#include

#include

#include

#include

#define maxn 101

using

namespace std;

intmain()

, ans =0;

cin >> n;

for(

int i =

1; i <= n; i++

)for

(int i =

2; i < n; i++)}

cout << ans << endl;

return0;

}

個人理解:首先容易想到找到最大值,然後遍歷其餘元素刪除看是否能變好,那麼就可以先從小到大的排序,然後分成兩種情況,一是保留最大值,在其餘數中刪除找可能性,二是刪除最大值,看次最大值是否等於其餘元素的和。

**如下:

#include

#include

#include

#include

#include

#include

#define ll long long

using

namespace std;

const

int maxn =

200005

;int n, ans[maxn]

, cnt;

ll sum;

struct a a[maxn]

;bool

cmp(a x, a y)

intmain()

sort

(a +

1, a + n +

1, cmp)

; sum -

= a[n]

.val;

//分情況,第一種情況刪去不包括最大值的乙個數,

//第二種情況刪去最大值的情況

for(

int i =

1; i < n; i++)if

(sum - a[n -1]

.val == a[n -1]

.val)

//刪去最大值的情況

ans[

++cnt]

= a[n]

.pos;

cout << cnt << endl;

for(

int i =

1; i <= cnt; i++

) cout << ans[i]

<<

" ";

return0;

}

結語:共九道題,後面還有四道題,先把做出人最多的題貼在這裡,後續等自己再提高提高回頭再補上

記錄第一次leetcode周賽

第二題 確定兩個字串是否接近 class solution word1中有word2中沒有的詞 或 word1中沒有word2有的詞 for int i 0 i 26 i 排序 arrays.sort w1 arrays.sort w2 排序後不同 直接錯 即字元頻率序列必相同 for int i ...

第一次省賽

第一次出去打比賽,懷著又緊張又激動的情緒到了濟南。熱身賽因為新生不熟悉pc 2被分到了大佬組,見識到了大佬的實力,可能原來只是知道學長學姐很強,但始終沒切身體會過,而這次就近距離地感受到了大佬的實力,默默地安靜呆著,圍觀大佬解題,當然心裡也是默默想著以後我也要變成他們這樣 更強當然是更好了,哈哈哈 ...

第一次組隊賽

b 你有n個問題,你已經估計了第i個問題的難度為ci,現在你想使用這些問題去構造乙個問題集。比賽的問題集必須包含至少兩個問題,而且比賽的總難度必須至少為l至多為r,此外最簡單的問題和最難的問題之間的差異至少為x請您找出能夠選擇的問題集的數量。第一行有t組輸入 1 t 10接下來一行輸入n,l,r,x...