0
点赞
收藏
分享

微信扫一扫

第十三届蓝桥杯C++ B组(题解+个人心得)

49路末班车 2022-04-14 阅读 61

初赛心得

2022/4/9,本人于大一下初次参加面向各大高校的编程竞赛,在参赛选拔时,对算法的了解仅为皮毛,学习acwing算法基础课,仅能掌握快速幂、前缀和等初级算法。经过大约一个月的学习,初步了解二分、前缀和、位运算、STL库(观看数组实现视频,无法独立完成)、暴搜、简单并查集、Kruskal(克鲁斯卡尔)求最短路、快速幂、简单博弈论(Nim游戏),知道DP(仅观看推导视频,跟抄代码,从未自己实现),会做简单贪心,并能够做出简单推导,学习了微扰法证明国王游戏(可在算法竞赛进阶指南中查阅)。

A

简单进制转换(开始的时候还差点算错,后来看到X进制一题,觉得不太对劲,回来才更正了)

B

目前来说题目还有争议(做的时候没想那么多,直接在纸上推)

C

做的时候没想那么多,也不太看数据,最多知道a b要用long long,对于时间复杂度的关注是我在比赛后的这两三天只内,听学长讲,xyc讲才开始的。

#include<iostream>

using namespace std;
//对于100%的样例,a,b,n为long long
#define int long long
int n;
int a,b;
int ans;

signed main()
{
    cin>>a>>b>>n;
    
    int t=n/(a*5+b*2);//算出每周做题,总题数/周,下取整
    int T=n%(a*5+b*2);//计算剩余题目
    int cnt=0;//统计天数
    for(int i=0;i<7;i++)
    {//i不会超过7,即如果超过7天,则会被算入t
        if(T<=0)break;//如果T减到零以后结束循环,可能半天做完,也得算一天
        if(i==5&&i==6)T-=b;
        else T-=a;
        cnt=i+1;
    }
    cout<<t*7+cnt;//t是以周为单位的
    
    return 0;
}

c题,对于全部数据n要超1e8的,如果按天计算,必超时。

D

#include<iostream>

using namespace std;
int n;

int main()
{
    cin>>n;
    
    for(int i=0;i<n;i++)
    {
        cout<<max(i*2,(n-i-1)*2)<<endl;
    }
    
    return 0;
}

举报

相关推荐

0 条评论