首页 > 编程语言 >2024牛客寒假算法基础集训营1

2024牛客寒假算法基础集训营1

时间:2024-02-03 15:46:46浏览次数:28  
标签:10 int long 2024 牛客 solve -- 集训营 left

题目链接

A.

因为判断要素较少,直接条件模拟

#include <bits/stdc++.h>
using namespace std;

#define int long long
const int N=2e5+10;

void solve() {
    int n;cin>>n;
    string s;cin>>s;
    int D=0,F=0,S=0,d=0,f=0,ss=0;
    for(int i=0;i<s.size();i++){
        if(s[i]=='D')D=1;
        else if(s[i]=='F'&&D==1)F=1;
        else if(s[i]=='S'&&F==1)S=1;
        if(s[i]=='d')d=1;
        else if(s[i]=='f'&&d==1)f=1;
        else if(s[i]=='s'&&f==1)ss=1;
    }
    if(D&&F&&S)cout<<1<<' ';
    else cout<<0<<' ';
    if(d&&f&&ss)cout<<1<<'\n';
    else cout<<0<<'\n';
}

signed main(){
    ios::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);
    int left=1;
    cin>>left;
    while(left--){
        solve();
    }
}

C.

贪心+二分
贪心是把处理时长升序排序
二分的是鸡处理事情的时间点
当鸡在t时处理事情时,在t时还没有办完事情的人的不满意度都要加上tc

#include <bits/stdc++.h>
using namespace std;

#define int long long
const int N=2e5+10;

void solve() {
    int n,q,tc;cin>>n>>q>>tc;
    vector<int>t(n+1);
    for(int i=1;i<=n;i++)cin>>t[i];
    sort(t.begin()+1,t.end());
    vector<int>pre(n+1,0);
    for(int i=1;i<=n;i++)pre[i]=pre[i-1]+t[i];
    for(int i=1;i<=n;i++)t[i]+=pre[i-1];
    vector<int>pr(n+1,0);
    for(int i=1;i<=n;i++)pr[i]=pr[i-1]+t[i];
 //   cout<<"t[n]="<<t[n]<<'\n';
    while(q--){
        int mi=1e15;
        int m;cin>>m;
        int l=0,r=1e15,mid;
        while(l<=r){
            mid=(l+r)/2;
            if(mid>=t[n]){
                mi=min(mi,mid);
               // cout<<"mi="<<mi<<'\n';
                r=mid-1;
                continue;
            }
            int id= upper_bound(t.begin()+1,t.end(),mid)-t.begin();
            int tmp=tc*(n-id+1);
            if(tmp<=m){
                mi=min(mi,mid);
                r=mid-1;
            }else l=mid+1;
        }
        mi+=tc;
        cout<<mi<<'\n';
    }
}

signed main(){
    ios::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);
    int left=1;
    //cin>>left;
    while(left--){
        solve();
    }
}

E.

数据范围很小,3的10次方爆搜
每一轮每种结果去枚举,取最优

#include <bits/stdc++.h>
using namespace std;

#define int long long
const int N=2e5+10;

int n,m;
int a[15],u[15],v[15];
int ans;
void dfs(int dep){
    if(dep==m+1){
        vector<int>res(n+1);
        for(int i=1;i<=n;i++){
            res[i]=a[i];
             // cout<<a[i]<<' ';
        }
        //cout<<'\n';
        sort(res.begin()+1,res.end());
        for(int i=n;i>=1;i--){
            if(res[i]==a[1]){
                ans=min(ans,n-i+1);
                return ;
            }
        }
    }
    for(int i=1;i<=3;i++){
        if(i==1){
            a[u[dep]]+=3;
            dfs(dep+1);
            a[u[dep]]-=3;
        }else if(i==2){
            a[v[dep]]+=3;
            dfs(dep+1);
            a[v[dep]]-=3;
        }else if(i==3){
            a[u[dep]]+=1;a[v[dep]]+=1;
            dfs(dep+1);
            a[u[dep]]-=1;a[v[dep]]-=1;
        }
    }
}

void solve() {
    //dfs2(1,1);
    cin>>n>>m;
    for(int i=1;i<=n;i++)cin>>a[i];
    for(int i=1;i<=m;i++)cin>>u[i]>>v[i];
    ans=15;
    dfs(1);
    cout<<ans<<'\n';
}

signed main(){
    ios::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);
    int left=1;
    cin>>left;
    while(left--){
        solve();
    }
}

G.

贪心
按原价升序排序,然后把优惠价求前缀和
只要优惠后+本钱能买得起当前原价,结果就为优惠和+本钱

#include <bits/stdc++.h>
using namespace std;

#define int long long
const int N=2e5+10;

void solve() {
    int n,m;cin>>n>>m;
    vector<pair<int,int>>v(n+1);
    for(int i=1;i<=n;i++){
        cin>>v[i].first>>v[i].second;
    }
    sort(v.begin()+1,v.end());
    vector<int>pre(n+1,0);
    for(int i=1;i<=n;i++){
        pre[i]=pre[i-1]+v[i].second;
    }
    int ans=m;
    for(int i=1;i<=n;i++){
        if(v[i].first-pre[i]<=m)
        ans=max(ans,v[i].first+pre[i]-v[i].first+m);
    }
    cout<<ans<<'\n';
}

signed main(){
    ios::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);
    int left=1;
    cin>>left;
    while(left--){
        solve();
    }
}

M.

若n能被6整除,那么就是n/6个页面
若不能被整除,就有错位,那么就是n/6*2

#include <bits/stdc++.h>
using namespace std;

#define int long long
const int N=2e5+10;

void solve() {
    int n;cin>>n;
    if(n%6==0)cout<<n/6<<'\n';
    else cout<<2*(n/6)<<'\n';
}

signed main(){
    ios::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);
    int left=1;
    cin>>left;
    while(left--){
        solve();
    }
}

标签:10,int,long,2024,牛客,solve,--,集训营,left
From: https://www.cnblogs.com/wwww-/p/18004821

相关文章

  • 2024年2月笔记:Redis7.2.4版本在Mac电脑的Docker里安装Redis集群
    本文环境:Mac电脑,Brew和Docker都已安装好,Redis版本:7.2.4第1步,验证Docker和Brewdocker--version  //查看docker版本,此处忽略安装Docker步骤brew--version   //查看版本号第2步,创建Redis集群网络dockernetworkcreateredis-cluster-net   //创建一个名......
  • ICLR 2024 | Mol-Instructions: 面向大模型的大规模生物分子指令数据集
    Mol-Instructions:面向大模型的大规模生物分子指令数据集 发表会议:ICLR2024论文标题:Mol-Instructions:ALarge-ScaleBiomolecularInstructionDatasetforLargeLanguageModels论文链接:https://arxiv.org/pdf/2306.08018.pdf代码链接:https://github.com/zjunlp/Mol......
  • 20240202
    UI开发的学习,XML和JetpackComposeXML编写界面的基础使用XML添加控件,在对应的XML文件中添加控件元素,然后添加对应的属性改变样式<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android" ...> ... <TextView android:id="@+id/textView" android:lay......
  • 20240203-图论随记
    最短路负环判断#include<bits/stdc++.h>usingnamespacestd;structnode{intfrom,to,v;}edge[100005];#defineoo2000000000intdis[100005];intmain(){intn,m,s,t;cin>>n>>m>>s>>t;for(inti=1;i<=m;i++){......
  • 20240130-DP以及优化随记
    状态转移方程递归关系(从已知求得未知的表达式)背包dp0-1背包,多重,完全,混合模版套用//多重背包#include<bits/stdc++.h>usingnamespacestd;constintN=507,M=1e5+7;intp,n,x,y,z,dp[10005];intmain(){ cin>>p>>n; for(inti=1;i<=n;i++){ scanf("%d%d......
  • 20240201-高级数据结构随记
    intmain(){intn;cin>>n;for(inti=1;i<=n;i++){scanf("%d",&a[i]);sum[i]=sum[i-1]+a[i];}intmn=sum[0];for(inti=1;i<=n;i++){//枚举右端点if(sum[i]-mn>ans)ans=sum[i]-mn;......
  • 20240202-训练赛随记
    机场检录//二分#include<bits/stdc++.h>usingnamespacestd;longlongn,m,a[100005];boolcheck(longlongx){longlongt=0;for(inti=1;i<=n;i++)t+=(x/a[i]);returnt>=m;}intmain(){cin>>n>>m;for(inti=1;i<......
  • 20240201-高级数据结构总结
    待办:倍增并查集线段树合并set逆序对树动态开点线段树套用模版#include<bits/stdc++.h>usingnamespacestd;#defineM100005#definelllonglongstructnode{ intL,R,cnt,vis;}tree[400005];inta[M],b[M],c[M],f[M];voidbuild(intp,intl,intr){ tre......
  • 2024-02-03:用go语言,你有 k 个背包。给你一个下标从 0 开始的整数数组 weights, 其中 we
    2024-02-03:用go语言,你有k个背包。给你一个下标从0开始的整数数组weights,其中weights[i]是第i个珠子的重量。同时给你整数k,请你按照如下规则将所有的珠子放进k个背包。没有背包是空的。如果第i个珠子和第j个珠子在同一个背包里,那么下标在i到j之间的所有珠......
  • 2024七上期末考游记
    省流:炸了Day1:语文感觉炸了。。。没有选择题,大题全炸了,书写也难看的跟一坨一样作文写的是题目二,写的变身白云的一天。预估70-80地理考完彻底炸了,侯爷爷上课强调过的印度北部是白种人忘了。。。好像当时正和后桌聊天呢预估85-95中午忘了吃了啥,反正RP--英语考出来原题......