牛客寒假算法集训营 2 感想

简介: 【【题目讲解】2023牛客寒假算法基础集训营2】

【【题目讲解】2023牛客寒假算法基础集训营2】https://www.bilibili.com/video/BV1BG4y1X7eh?p=3&vd_source=21581d752de8daca00ef38561a7264f6

题目来源               2023牛客寒假算法基础集训营2_ACM/NOI/CSP/CCPC/ICPC算法编程练习赛_牛客竞赛OJ (nowcoder.com)

A-Tokitsukaze and a+b=n (easy)_2023牛客寒假算法基础集训营2 (nowcoder.com)

17.1.png

第一想到的是两个for循环,但是可以优化

#include<iostream>
using namespace std;
int L1,L2,R1,R2,n;
int main()
{
  int t;
  cin>>t;
  while(t--)
  {
    cin>>n>>L1>>R1>>L2>>R2;
    int ans=0;
    for(int a=L1;a<=R1;a++)
    {
      int b=n-a;
      if(b>=L2&&b<=R2)
      ans++;
    }
    printf("%d\n",ans);
  }
  return 0;
}

B-Tokitsukaze and a+b=n (medium)_2023牛客寒假算法基础集训营2 (nowcoder.com)

两个区间求交集

image.png

#include <iostream>
using namespace std;
int main() {
    long long int t, n, l1, l2, r1, r2, res;
    cin>>t;
    while (t--) { 
        cin>>n;
        cin>>l1>>r1;
        cin>>l2>>r2;
        if(l1+l2>n||r1+r2<n){
            cout<<"0"<<endl;
        }else{
            cout<<abs(max(l1,n-r2)-min(n-l2,r1))+1<<endl;
        } 
    }
}

C-Tokitsukaze and a+b=n (hard)_2023牛客寒假算法基础集训营2 (nowcoder.com)


看视频吧(一定得看完)视频讲的方法值得学习


D-Tokitsukaze and Energy Tree_2023牛客寒假算法基础集训营2 (nowcoder.com)


这是一道好题


一定一定得看看视频 (细看)


image.png

image.png

image.png

#include<bits/stdc++.h>
using namespace std;
const int N = 2e5 + 5;
long long f[N] ,v[N];
int main(){
    int n ;
    cin >> n;
    f[1] = 1;
    for(int i = 2 ; i <= n ; i ++)//遍历整条树的高度
    {
        int k;
        cin >> k;
        f[i] = f[k] + 1;
    }
    for(int i = 1 ; i <= n ; i ++)
    {
        scanf("%d",&v[i]);
    }
    sort(v+1,v+1+n);
    sort(f+1,f+1+n);
    long long ans = 0 ;
    for(int i = 1 ; i <= n ; i ++)
        ans += f[i] * v[i];
    cout << ans;
}

H-Tokitsukaze and K-Sequence_2023牛客寒假算法基础集训营2 (nowcoder.com)


一道妙题,如果拼不出来题目的含义,建议看看视频


一定要细细品味


所以写题时最好演草一下


注意:set<int>st有查重功能  multiset<int>st没有


视频里的代码的思路十分好


就不给代码了,直接看视频吧🤐


J-Tokitsukaze and Sum of MxAb_2023牛客寒假算法基础集训营2 (nowcoder.com)


一定要去看视频


17.2.pngimage.png

image.png

image.png

#include<iostream>
using namespace std;
typedef long long LL;
const int N=1e5+10;
int a[N];
int main()
{
    int t;
    cin>>t;
    while(t--)
    {
        int n;
        cin>>n;
        LL res=0;
        for(int i=1;i<=n;i++) 
        {
            cin>>a[i];
            res+=2*n*abs(a[i]);
        }
        printf("%lld\n",res);
    }
    return 0;
}
相关文章
|
5月前
|
算法 机器人
|
12月前
|
人工智能 算法
|
12月前
|
算法 数据库 C语言
|
12月前
|
机器学习/深度学习 人工智能 算法