国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

藍(lán)橋杯1024第 2 場(chǎng)算法雙周賽題解+Ac代碼

這篇具有很好參考價(jià)值的文章主要介紹了藍(lán)橋杯1024第 2 場(chǎng)算法雙周賽題解+Ac代碼。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

提醒:篇幅可能有點(diǎn)長(zhǎng),為了方便,大家可以直接看目錄快速查找想要的內(nèi)容
1.新生【算法賽】 - 藍(lán)橋云課 (lanqiao.cn)

題面:

思路:上屆小橋獲得了第14屆總冠軍,那么這屆是第15屆,直接輸出15就是答案

2.鋪地板【算法賽】 - 藍(lán)橋云課 (lanqiao.cn)

題面:

input:

4
7 6
2 2
12 8
1 12

output:

Yes
No
Yes
No

藍(lán)橋杯1024第 2 場(chǎng)算法雙周賽題解+Ac代碼,藍(lán)橋杯&數(shù)據(jù)結(jié)構(gòu)與算法,藍(lán)橋杯,職場(chǎng)和發(fā)展

思路:思維/數(shù)學(xué)

1.對(duì)于每一塊地板,如果能被湊出來(lái),那么一定是2*3地磚組合出來(lái)的,無(wú)論2*3地磚怎么放都為6的倍數(shù),故長(zhǎng)為n,寬為m的地板,n*m%6==0一定成立

2.這里還要注意一個(gè)特判,就是如果長(zhǎng)或?qū)挒?(例如n=6,m=1),那么是6的倍數(shù)也無(wú)法滿足要求(不能切割地磚)

Ac_code:java

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int T=sc.nextInt();

        while(T-->0){
            int n=sc.nextInt(),m=sc.nextInt();

            if(n==1||m==1) System.out.println("No");
            else if(n*m%6==0) System.out.println("Yes");
            else System.out.println("No");
        }
    }
}

3.擺玩具【算法賽】 - 藍(lán)橋云課 (lanqiao.cn)

題面:

input:

5 2
2 5 7 10 13

output:

8

藍(lán)橋杯1024第 2 場(chǎng)算法雙周賽題解+Ac代碼,藍(lán)橋杯&數(shù)據(jù)結(jié)構(gòu)與算法,藍(lán)橋杯,職場(chǎng)和發(fā)展

思路:思維/貪心

簡(jiǎn)述題意:給一個(gè)長(zhǎng)度為n的不下降數(shù)組,分成k個(gè)子數(shù)組,使子數(shù)組的極差的總和最小

1.對(duì)數(shù)組中相鄰兩數(shù)的差記為 f[0],f[1],f[2],f[3]....f[n-2],并對(duì)其累加記為sum(這里注意數(shù)組是不下降的),故f數(shù)組中的元素是>=0的。

2.此時(shí)可以發(fā)現(xiàn)sum就是將長(zhǎng)度為n的數(shù)組的極差值。

3.但是題目有一個(gè)限制條件分成k個(gè)子數(shù)組,k等于1時(shí),sum就是答案,k>=2時(shí),此時(shí)貪心的想讓相差大的分開(kāi)多開(kāi)一個(gè)子數(shù)組,以滿足極差總和最小

舉個(gè)栗子:

????????h數(shù)組: 2 5 7 10 13

? ? ? ??f數(shù)組:3 2 3 3

? ? ? ? k等于2時(shí),刪除一個(gè)最大的數(shù)3,有3個(gè)3,故有三種情況分子數(shù)組的情況都滿足條件,

????????刪除第一個(gè)3為:子數(shù)組分為 [2],?[5 7 10 13],極差和為:0+8

????????刪除第二個(gè)3 為:子數(shù)組分為[2,5,7], [10,13],極差和為:5+3

????????刪除第三個(gè)3為:子數(shù)組分為[2,5,7,10],[13],極差和為:8+0

4.實(shí)現(xiàn)時(shí)對(duì)f數(shù)組排序,用總和減去f中(k-1)個(gè)最大的數(shù)

Ac_code:C++

#include <iostream>
#include <cstring>
#include <algorithm>
#include <vector>
#include <queue>
#include<stack>
#include<cmath>
#include <unordered_set>
#include <unordered_map>
#include<set>
#include <map>


using namespace std;

typedef long long LL;
typedef pair<int,int>PII;

#define x first
#define y second
#define ls u<<1
#define rs u<<1|1
#define all(ss) ss.begin(),ss.end()

int const mod1=998244353;   
int const mod2=1e9+7;
int const N=2e5+7;
int const INF=0x3f3f3f3f;

int T;
int n,k;
int a[N];
int f[N];

void solve(){
    scanf("%d%d",&n,&k);
    for(int i=0;i<n;i++)    scanf("%d",a+i);
    
    LL sum=0;   //累加差值
    for(int i=1;i<n;i++)    f[i-1]=a[i]-a[i-1],sum+=f[i-1];
    sort(f,f+n-1);
    for(int i=n-2;i>=0&&--k;i--)    sum-=f[i];  //減去(k-1)個(gè)最大的數(shù)
    cout<<sum<<endl;
} 

void init(){
    
}

int main()
{
    //std::ios::sync_with_stdio(false);   cin.tie(0); cout.tie(0);
    T=1;
    //cin>>T;
    //scanf("%d",&T);
    
    init();
    
    while(T--){
        solve();
    }
	
	return 0;
}

4.通關(guān)【算法賽】 - 藍(lán)橋云課 (lanqiao.cn)

題面:

input:

4 5
0 3 5
1 2 8
1 3 9
3 1 15

output:

3

藍(lán)橋杯1024第 2 場(chǎng)算法雙周賽題解+Ac代碼,藍(lán)橋杯&amp;數(shù)據(jù)結(jié)構(gòu)與算法,藍(lán)橋杯,職場(chǎng)和發(fā)展

藍(lán)橋杯1024第 2 場(chǎng)算法雙周賽題解+Ac代碼,藍(lán)橋杯&amp;數(shù)據(jù)結(jié)構(gòu)與算法,藍(lán)橋杯,職場(chǎng)和發(fā)展

思路:bfs+堆優(yōu)化

簡(jiǎn)述題意:給一個(gè)以1為根的有向樹(shù)和初始的經(jīng)驗(yàn),問(wèn)最多能覆蓋的結(jié)點(diǎn)為多少個(gè)

設(shè)與1相連且小于已有經(jīng)驗(yàn)的結(jié)點(diǎn)集合記為S

1.,很容易想到一個(gè)暴力做法,就是對(duì)所有小于當(dāng)前經(jīng)驗(yàn)值的遍歷一遍,看是否可以擴(kuò)展樹(shù)的大小,沒(méi)有一個(gè)結(jié)點(diǎn)可以更新,直接輸出答案,有一個(gè)結(jié)點(diǎn)可以更新,就可以再次進(jìn)入循環(huán)遍歷一遍S集合中的所有元素,但是這個(gè)方法會(huì)tle,故要優(yōu)化。

2.我們換一個(gè)思考方式,把與1相連的結(jié)點(diǎn)但是還沒(méi)有加入到集合S中的集合,記錄到一個(gè)小根堆中,每次從小根堆中取出最小的闖關(guān)所需要經(jīng)驗(yàn)值,看是否可以加入到集合中,可以加入集合中接著循環(huán)判斷,不可以直接跳出循環(huán)輸出答案

Ac_code:C++

#include <iostream>
#include <cstring>
#include <algorithm>
#include <vector>
#include <queue>
#include<stack>
#include<cmath>
#include <unordered_set>
#include <unordered_map>
#include<set>
#include <map>


using namespace std;

typedef long long LL;
typedef pair<int,int>PII;

#define x first
#define y second
#define ls u<<1
#define rs u<<1|1
#define all(ss) ss.begin(),ss.end()

int const mod1=998244353;   
int const mod2=1e9+7;
int const N=2e5+7;
int const INF=0x3f3f3f3f;

int T;
int n,m;
int a[N];

//v[i]:通過(guò)第i關(guān)所需要的最低經(jīng)驗(yàn)值
//w[i]:通過(guò)第i關(guān)可以獲得的經(jīng)驗(yàn)值
int w[N],v[N];
vector<int>g[N];    //g[x]:x結(jié)點(diǎn)可以到達(dá)的所有結(jié)點(diǎn)

int bfs(){
    //first:通過(guò)第second關(guān)的最低經(jīng)驗(yàn)值
    //second:結(jié)點(diǎn)編號(hào)
    priority_queue<PII,vector<PII>,greater<PII>>heap;   //小根堆
    heap.push({v[1],1});    
    int res=0;
    
    LL W=m; //一開(kāi)始的經(jīng)驗(yàn)值
    while(heap.size()){
        PII temp=heap.top();    heap.pop();
        int id=temp.y,min_v=temp.x;
        if(min_v>W) break;  //最低經(jīng)驗(yàn)值都比已有經(jīng)驗(yàn)值大,直接break
        W+=w[id];   //累加經(jīng)驗(yàn)
        res++;  //闖關(guān)++
        for(int y:g[id])    heap.push({v[y],y});    //代表挑戰(zhàn)的關(guān)入堆
    }
    return res;
}

void solve(){
    scanf("%d%d", &n, &m);
    for(int i=1;i<=n;i++){
        int fa; scanf("%d%d%d",&fa,w+i,v+i);
        g[fa].push_back(i);
    }
    
    cout<<bfs()<<endl;
} 

void init(){
    
}

int main()
{
    //std::ios::sync_with_stdio(false);   cin.tie(0); cout.tie(0);
    T=1;
    //cin>>T;
    //scanf("%d",&T);
    
    init();
    
    while(T--){
        solve();
    }
	
	return 0;
}

5.串門(mén)【算法賽】 - 藍(lán)橋云課 (lanqiao.cn)

題面:

input:

4
1 2 3
1 3 4
1 4 5

output:

15

藍(lán)橋杯1024第 2 場(chǎng)算法雙周賽題解+Ac代碼,藍(lán)橋杯&amp;數(shù)據(jù)結(jié)構(gòu)與算法,藍(lán)橋杯,職場(chǎng)和發(fā)展

思路:dfs求樹(shù)的直徑

簡(jiǎn)述題意:n個(gè)節(jié)點(diǎn),n-1條邊,選擇一個(gè)結(jié)點(diǎn)為起點(diǎn),輸出訪問(wèn)所有結(jié)點(diǎn)的最小值

1.直接求很難,那么換個(gè)思路,每個(gè)結(jié)點(diǎn)必須遍歷一次,那么每條邊至少加一次,每條邊加一次的總和記為sum,我們的目的就是讓一些邊遍歷兩次或者兩次以上的可能盡量小,那么找出最長(zhǎng)第一條路徑max_len(注意是權(quán)值最大),讓它只遍歷一次,就能保證答案最小,那么sum-max_len就是遍歷兩次的邊權(quán)值,答案就是sum+sum-max_len。

2.那么這么求sum,max_len呢?sum很好求,直接累加邊權(quán)值即可,max_len其實(shí)是最大的一條路徑(樹(shù)的直徑),那么就轉(zhuǎn)化求樹(shù)的直徑即可。

3.求樹(shù)的直徑(最大的一條路徑),這里有通解,就是隨便找一個(gè)點(diǎn),dfs一遍記錄最大路徑的值與結(jié)點(diǎn)編號(hào),在用第一次記錄的結(jié)點(diǎn)編號(hào)第二次dfs,更新最大的max_len即可。(這里感興趣證明的可以查樹(shù)的直徑,還有注意一點(diǎn)就是樹(shù)的直徑不能有負(fù)權(quán)邊,不然不能用此方法求解,要數(shù)形dp才能求解)

Ac_code:C++

#include <iostream>
#include <cstring>
#include <algorithm>
#include <vector>
#include <queue>
#include<stack>
#include<cmath>
#include <unordered_set>
#include <unordered_map>
#include<set>
#include <map>


using namespace std;

typedef long long LL;
typedef pair<int,int>PII;

#define x first
#define y second
#define ls u<<1
#define rs u<<1|1
#define all(ss) ss.begin(),ss.end()

int const mod1=998244353;   
int const mod2=1e9+7;
int const N=2e5+7;
int const INF=0x3f3f3f3f;

int T;
int n,m;
int a[N];
vector<PII>g[N];    //first:結(jié)點(diǎn)編號(hào),second:權(quán)值
int start;  //起始結(jié)點(diǎn)
LL max_len; //最長(zhǎng)的一條路徑

//dfs代碼較短,第一次接觸可能有點(diǎn)難,不過(guò)可以慢慢理解
void dfs(int x,int fa,LL val){
    if(max_len<val) max_len=val,start=x;    //全局更新答案
    for(PII k:g[x]){
        if(k.x==fa) continue;   //不要往回更新
        dfs(k.x,x,val+k.y);
    }
}

void solve(){
    scanf("%d", &n);
    LL sum=0;
    for(int i=1;i<n;i++){
        int a,b,c;  scanf("%d%d%d",&a,&b,&c);
        g[a].push_back({b,c});
        g[b].push_back({a,c});
        sum+=c;
    }
    
    dfs(1,-1,0);    //找起點(diǎn)
    dfs(start,-1,0);    //用起點(diǎn)找到最長(zhǎng)的路徑
    cout<<sum+sum-max_len<<endl;
    
} 

void init(){
    
}

int main()
{
    //std::ios::sync_with_stdio(false);   cin.tie(0); cout.tie(0);
    T=1;
    //cin>>T;
    //scanf("%d",&T);
    
    init();
    
    while(T--){
        solve();
    }
	
	return 0;
}

6.神奇數(shù)【算法賽】 - 藍(lán)橋云課 (lanqiao.cn)

題面:

input:

100
130

output:

5

思路:數(shù)位dp

簡(jiǎn)述題意:求[l,r]中神奇樹(shù)的個(gè)數(shù),神奇數(shù)的定義假設(shè)有n(n>=2)位數(shù) s1,s2..sn,對(duì)數(shù)位s1+s2+..+sn-1的總和為sum,sum%sn==0則為神奇數(shù),10<=-l<=r<=1e200

數(shù)位初學(xué)者入門(mén)這里推薦靈神:2376. 統(tǒng)計(jì)特殊整數(shù) - 力扣(LeetCode)

1.數(shù)位dp的一般求法[1,x]中合法的數(shù),但是我們要求的是[l,r],這里采用前綴和思想pre[r]-pre[l-1]

2.這里采用記憶化搜索,一般用4個(gè)參數(shù),本題的4個(gè)參數(shù)為枚舉到了第pos位,前面總和為sum,是否有限制limit,是否有前導(dǎo)0用num

3.枚舉到最后一位時(shí),枚舉最后一位可以填那些數(shù),滿足記錄合法數(shù)返回即可

Ac_code:C++

#include <iostream>
#include <cstring>
#include <algorithm>
#include <vector>
#include <queue>
#include<stack>
#include<cmath>
#include <unordered_set>
#include <unordered_map>
#include<set>
#include <map>


using namespace std;

typedef long long LL;
typedef pair<int,int>PII;

#define x first
#define y second
#define ls u<<1
#define rs u<<1|1
#define all(ss) ss.begin(),ss.end()

int const mod1=998244353;   
int const mod2=1e9+7;
int const N=2e5+7;
int const INF=0x3f3f3f3f;

int T;
int n,m;
int a[N];
string s;

//f[pos][sum]:枚舉到了第pos位,前pos-1位的總和為sum,且沒(méi)有限制的合法數(shù)
//200個(gè)9=200*9,這里多開(kāi)7個(gè)
int f[207][1807];

int dfs(int pos,int sum,bool limit,bool num){
    int up=limit?s[pos]-'0':9;
    if(pos==(int)s.size()-1){
        int cnt=0;  //記錄合法數(shù)
        for(int i=1;i<=up;i++)  //枚舉最后一位填什么
            cnt+=sum%i==0;
        return cnt;
    }
    if(num&&!limit&&f[pos][sum]!=-1) return f[pos][sum];
    
    int res=0;
    //只有兩位數(shù)了,就不能刪除了
    //要不然可以刪除最高一位
    if(pos<(int)s.size()-2&&!num)    res=dfs(pos+1,0,false,false);
    
    for(int i=num?0:1;i<=up;i++)
        res=(res+dfs(pos+1,sum+i,limit&&i==up,true))%mod1;
    
    if(num&&!limit) f[pos][sum]=res;    //記憶化
    return res;
    
}

int check(string s){
    int sum=0,last=s.back()-'0';
    if(last==0) return 0;   //最后一位不能為0
    for(int i=0;i<s.size()-1;i++)   sum+=s[i]-'0';
    return sum%last==0?1:0;
}

void solve(){
    string l,r; cin>>l>>r;
    
    s=l;
    memset(f,-1,sizeof f);
    int left=dfs(0,0,true,false);
    
    s=r;
    memset(f,-1,sizeof f);
    int right=dfs(0,0,true,false);
    
    //前綴和思想,但是多減了一個(gè)l,故要加上check(l)
    int ans=((right-left+check(l))%mod1+mod1)%mod1;
    cout<<ans<<endl;
    
} 

void init(){
    
}

int main()
{
    //std::ios::sync_with_stdio(false);   cin.tie(0); cout.tie(0);
    T=1;
    //cin>>T;
    //scanf("%d",&T);
    
    init();
    
    while(T--){
        solve();
    }
	
	return 0;
}

7.小藍(lán)的疑問(wèn)【算法賽】 - 藍(lán)橋云課 (lanqiao.cn)

題面:

藍(lán)橋杯1024第 2 場(chǎng)算法雙周賽題解+Ac代碼,藍(lán)橋杯&amp;數(shù)據(jù)結(jié)構(gòu)與算法,藍(lán)橋杯,職場(chǎng)和發(fā)展藍(lán)橋杯1024第 2 場(chǎng)算法雙周賽題解+Ac代碼,藍(lán)橋杯&amp;數(shù)據(jù)結(jié)構(gòu)與算法,藍(lán)橋杯,職場(chǎng)和發(fā)展input:

7 4
2 9 8 7 8 6 4
1 2
1 3
2 4
2 6
3 5
3 7
1 2
1 1
3 1
2 1

output:

8
9
8
7

思路:

簡(jiǎn)述題意:給你一顆以1為根的有向樹(shù),q個(gè)詢問(wèn),對(duì)于每個(gè)詢問(wèn)x,k,輸出x結(jié)點(diǎn)為根x記為第0層,輸出所有第k層結(jié)點(diǎn)的最大值

1,一個(gè)簡(jiǎn)單暴力的方法就是,對(duì)每個(gè)詢問(wèn)bfs求除第k層結(jié)點(diǎn)的值,取max輸出即可

TLE_code:C++(超時(shí)代碼,過(guò)了60%的樣例)

打藍(lán)橋杯的話,可以獲得60%的分,也建議學(xué)一學(xué)

#include <iostream>
#include <cstring>
#include <algorithm>
#include <vector>
#include <queue>
#include<stack>
#include<cmath>
#include <unordered_set>
#include <unordered_map>
#include<set>
#include <map>


using namespace std;

typedef long long LL;
typedef pair<int,int>PII;

#define x first
#define y second
#define ls u<<1
#define rs u<<1|1
#define all(ss) ss.begin(),ss.end()

int const mod1=998244353;   
int const mod2=1e9+7;
int const N=2e5+7;
int const INF=0x3f3f3f3f;

int T;
int n,q;
int w[N];
vector<int>g[N];

//求以k為根的第k層結(jié)點(diǎn)的最大值
int bfs(int start,int k){
    int res=-1;
    queue<PII>q;    //first:結(jié)點(diǎn)編號(hào),second:層數(shù)
    q.push({start,0});
    
    while(q.size()){
        PII temp=q.front(); q.pop();
        int id=temp.x,depth=temp.y;
        
        for(int y:g[id]){
            if(depth==k-1) res=max(res,w[y]);
            else    q.push({y,depth+1});
        }
    }
    
    return res;
}

void solve(){
    scanf("%d%d",&n,&q);
    for(int i=1;i<=n;i++)   scanf("%d",w+i);
    for(int i=1;i<n;i++){
        int a,b;    scanf("%d%d",&a,&b);
        g[a].push_back(b);
    }
    
    while(q--){
        int a,b;    scanf("%d%d",&a,&b);
        printf("%d\n",bfs(a,b));
    }
} 

void init(){
    
}

int main()
{
    //std::ios::sync_with_stdio(false);   cin.tie(0); cout.tie(0);
    T=1;
    //cin>>T;
    //scanf("%d",&T);
    
    init();
    
    while(T--){
        solve();
    }
	
	return 0;
}

最后一題正解后續(xù)更新.....感覺(jué)寫(xiě)不出正解了(更改博客時(shí)間2023/10/29)

描述有誤,或者描述不好理解,歡迎指正

希望對(duì)你有用,歡迎關(guān)注,點(diǎn)贊,收藏文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-737615.html

到了這里,關(guān)于藍(lán)橋杯1024第 2 場(chǎng)算法雙周賽題解+Ac代碼的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 藍(lán)橋杯雙周賽算法心得——鋪地板(質(zhì)因數(shù))

    藍(lán)橋杯雙周賽算法心得——鋪地板(質(zhì)因數(shù))

    大家好,我是晴天學(xué)長(zhǎng),這是第二周的藍(lán)橋杯的雙周賽,題可出的又好又靈活??!真不錯(cuò)!?????? 1) .鋪地板 2) .算法思路 1.導(dǎo)入java.util包中的Scanner類(lèi),以從用戶那里讀取輸入。 2.main方法是程序的入口點(diǎn)。 3.創(chuàng)建一個(gè)Scanner對(duì)象,用于從標(biāo)準(zhǔn)輸入讀取輸入。 4.從用戶那里讀取

    2024年02月08日
    瀏覽(26)
  • 「藍(lán)橋·算法雙周賽」第一場(chǎng)公開(kāi)賽【待補(bǔ)題填坑】

    「藍(lán)橋·算法雙周賽」第一場(chǎng)公開(kāi)賽【待補(bǔ)題填坑】

    給定四個(gè)字符,判斷是否其中有三個(gè)相同,另一個(gè)與他們不同 ?二叉樹(shù)性質(zhì)問(wèn)題,不了解二叉樹(shù)也完全可以做。 要注意的是每次都從第一行的第一個(gè)點(diǎn)開(kāi)始走,給一個(gè)字符串按照它走,輸出最后的結(jié)果就行。 往左走坐標(biāo)就變成了2*pos-1,往右就變成了2*pos 畫(huà)個(gè)樹(shù)理解一下就好

    2024年02月07日
    瀏覽(24)
  • 第 122 場(chǎng) LeetCode 雙周賽題解

    第 122 場(chǎng) LeetCode 雙周賽題解

    A 將數(shù)組分成最小總代價(jià)的子數(shù)組 I 枚舉:枚舉后兩個(gè)子數(shù)組的起始下標(biāo) B 判斷一個(gè)數(shù)組是否可以變?yōu)橛行?模擬:模擬冒泡排序的過(guò)程,若相鄰元素大小關(guān)系需要交換位置,但其二進(jìn)制下數(shù)位為 1 的數(shù)目不同,則返回false,若完成排序返回true C 通過(guò)操作使數(shù)組長(zhǎng)度最小 腦筋急

    2024年01月22日
    瀏覽(24)
  • 【藍(lán)橋杯】藍(lán)橋杯雙周賽第二場(chǎng)E題

    知識(shí)點(diǎn):樹(shù)的直徑? ? ? ? ? 過(guò)年了。 ? ? ? ? 藍(lán)橋村可以抽象為n個(gè)節(jié)點(diǎn),n - 1條邊的一棵樹(shù),每條邊有邊權(quán)長(zhǎng)度wi。 ? ? ? ? 小藍(lán)可以選擇任意一個(gè)點(diǎn)作為起點(diǎn),然后選擇一條路徑,可以訪問(wèn)每一個(gè)節(jié)點(diǎn)最少一次。他想知道最短的路徑長(zhǎng)度是多少。 輸入格式 ? ? ? ? 第一

    2024年02月06日
    瀏覽(22)
  • 【藍(lán)橋杯】藍(lán)橋杯雙周賽第二場(chǎng)ABCD題

    【藍(lán)橋杯】藍(lán)橋杯雙周賽第二場(chǎng)ABCD題

    知識(shí)點(diǎn):下一屆是第幾屆藍(lán)橋杯…… ? ? ? ??新一屆藍(lán)橋杯大賽即將在2024年拉開(kāi)序! ????????作為大一新生的小藍(lán),在聽(tīng)說(shuō)了這場(chǎng)盛大的比賽后,對(duì)其充滿了期待與熱情。但作為初次參賽的新手,他對(duì)藍(lán)橋杯的相關(guān)賽制和歷史并不了解。于是,他決定尋求上屆藍(lán)橋杯總冠

    2024年02月08日
    瀏覽(22)
  • leetcode 122雙周賽 解題思路+代碼

    本人水平有限,只做出3道,最后1道放棄。 給你一個(gè)長(zhǎng)度為 n 的整數(shù)數(shù)組 nums 。 一個(gè)數(shù)組的 代價(jià) 是它的 第一個(gè) 元素。比方說(shuō),[1,2,3] 的代價(jià)是 1 ,[3,4,1] 的代價(jià)是 3 。 你需要將 nums 分成 3 個(gè) 連續(xù)且沒(méi)有交集 的子數(shù)組。 請(qǐng)你返回這些子數(shù)組的 最小 代價(jià) 總和 。 示例 1: 輸

    2024年02月20日
    瀏覽(21)
  • 零基礎(chǔ)!無(wú)門(mén)檻!高額現(xiàn)金獎(jiǎng)勵(lì)!優(yōu)秀的大學(xué)生都在打這場(chǎng)算法雙周賽

    零基礎(chǔ)!無(wú)門(mén)檻!高額現(xiàn)金獎(jiǎng)勵(lì)!優(yōu)秀的大學(xué)生都在打這場(chǎng)算法雙周賽

    ?? spacespace ? ? 大家好,我是執(zhí)梗。在藍(lán)橋杯中獲得過(guò)十三屆 Java B 組國(guó)一以及十四屆 C++ B 組的國(guó)一。今天主要為大家?guī)?lái)一個(gè)好消息,藍(lán)橋杯將為各位喜愛(ài)算法的小伙伴帶來(lái)全新的算法雙周賽。如果你熱愛(ài)算法競(jìng)賽,或者準(zhǔn)備參加十五屆的藍(lán)橋杯比賽,那么一定不要錯(cuò)過(guò)

    2024年02月08日
    瀏覽(18)
  • [LeetCode周賽復(fù)盤(pán)] 第 111 場(chǎng)雙周賽20230819

    [LeetCode周賽復(fù)盤(pán)] 第 111 場(chǎng)雙周賽20230819

    T1 對(duì)向雙指針。 T2 子序列/同向雙指針。 T3 LIS/狀態(tài)DP。 T4 數(shù)位DP。 2824. 統(tǒng)計(jì)和小于目標(biāo)的下標(biāo)對(duì)數(shù)目 1. 題目描述 2. 思路分析 類(lèi)似兩數(shù)之和,由于順序無(wú)關(guān),把數(shù)據(jù)排序。 設(shè)置l,r=0,n-1。 若a[l]+a[r]target,則a[l]+ 任意a[l+1…r]都target。則這r-l個(gè)數(shù)都可以和l組隊(duì)。 3. 代碼實(shí)現(xiàn) 2825

    2024年02月11日
    瀏覽(27)
  • [LeetCode周賽復(fù)盤(pán)] 第 102 場(chǎng)雙周賽20230415

    [LeetCode周賽復(fù)盤(pán)] 第 102 場(chǎng)雙周賽20230415

    T4卡了半小時(shí),真的不應(yīng)該。 T1 模擬。 T2 前綴和模擬。 T3 分層遍歷。 T4 floyd/dij(我覺(jué)得dij不是正解)。 鏈接: 6333. 查詢網(wǎng)格圖中每一列的寬度 1. 題目描述 2. 思路分析 按題意模擬即可。 3. 代碼實(shí)現(xiàn) 鏈接: 6334. 一個(gè)數(shù)組所有前綴的分?jǐn)?shù) 1. 題目描述 2. 思路分析 不要被題目的一堆

    2023年04月16日
    瀏覽(25)
  • 115 雙周賽

    給你一個(gè)整數(shù) n 和一個(gè)下標(biāo)從 0 開(kāi)始的字符串?dāng)?shù)組 words ,和一個(gè)下標(biāo)從 0 開(kāi)始的數(shù)組 groups ,兩個(gè)數(shù)組長(zhǎng)度都是 n 。 兩個(gè)長(zhǎng)度相等字符串的 漢明距離 定義為對(duì)應(yīng)位置字符 不同 的數(shù)目。 你需要從下標(biāo) [0, 1, …, n - 1] 中選出一個(gè) 最長(zhǎng)子序列 ,將這個(gè)子序列記作長(zhǎng)度為 k 的 [

    2024年02月08日
    瀏覽(19)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包