第1章、蓄势待发准备篇
生活随笔
收集整理的這篇文章主要介紹了
第1章、蓄势待发准备篇
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
目錄
- 194. 抽簽(挑戰(zhàn)程序設(shè)計(jì)競賽)【爆搜】
- 192. 三角形(挑戰(zhàn)程序設(shè)計(jì)競賽)【枚舉】
- 193. 螞蟻(挑戰(zhàn)程序設(shè)計(jì)競賽)【思維】
- 200. 抽簽 II(挑戰(zhàn)程序設(shè)計(jì)競賽)【思維 哈希表 枚舉】
194. 抽簽(挑戰(zhàn)程序設(shè)計(jì)競賽)【爆搜】
https://www.papamelon.com/problem/194
數(shù)據(jù)范圍很小,直接爆搜即可。當(dāng)然也可以寫4層for循環(huán)。
192. 三角形(挑戰(zhàn)程序設(shè)計(jì)競賽)【枚舉】
https://www.papamelon.com/problem/192
加上二分優(yōu)化
#include<bits/stdc++.h> using namespace std; const int N=110; int n,a[N]; int main(void) {cin>>n;for(int i=0;i<n;i++) cin>>a[i];sort(a,a+n);int ans=0;for(int i=0;i<n;i++){for(int j=i+1;j<n;j++) {int x=a[i]+a[j];int l=lower_bound(a+j,a+n,x)-a;//找到第一個(gè)不滿足的if(l-1>j) ans=max(ans,a[i]+a[j]+a[l-1]);//前面那個(gè)就是最大的滿足的}}cout<<ans<<endl;return 0; }193. 螞蟻(挑戰(zhàn)程序設(shè)計(jì)競賽)【思維】
https://www.papamelon.com/problem/193
其實(shí)螞蟻a和螞蟻b碰頭,本質(zhì)上就是兩者就換了位置,b變成了a,a變成了b。所以撞上,可以等價(jià)于穿過去。
故直接枚舉,存一下最長的或最短的距離即可。
200. 抽簽 II(挑戰(zhàn)程序設(shè)計(jì)競賽)【思維 哈希表 枚舉】
https://www.papamelon.com/problem/200
分析:暴力4層for循環(huán),時(shí)間復(fù)雜度太大了,會(huì)超時(shí)。
剪枝,用哈希表存一下所有的數(shù),用3層的for循環(huán),剩下的值直接查找哈希表即可。這樣可不行。
再次剪枝,先預(yù)處理所有的2個(gè)數(shù)的組合,然后2層的for循環(huán)枚舉,剩下的值直接差哈希表即可。
預(yù)處理,加二分
#include<bits/stdc++.h> using namespace std; const int N=1e3+10; int a[N],n,m; vector<int>ve; int main(void) {scanf("%d%d",&n,&m);for(int i=0;i<n;i++) scanf("%d",&a[i]);for(int i=0;i<n;i++)for(int j=0;j<n;j++)ve.push_back({a[i]+a[j]});sort(ve.begin(),ve.end());bool flag=0;for(int i=0;i<n;i++)for(int j=0;j<n;j++){int temp=m-(a[i]+a[j]);if(binary_search(ve.begin(),ve.end(),temp)) flag=1;}if(flag) cout<<"Yes";else cout<<"No";return 0; }總結(jié)
以上是生活随笔為你收集整理的第1章、蓄势待发准备篇的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Acwing第 30 场周赛【完结】
- 下一篇: 第 2 章:初出茅庐【初级篇 - 2.1