第十四届蓝桥杯省赛C++ A组浅析

这篇具有很好参考价值的文章主要介绍了第十四届蓝桥杯省赛C++ A组浅析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

(仅个人看法,对错未知,可以当做口胡QAQ)如有错误请大佬们指出,有更好做法欢迎留言!

A 幸运数

暴力判不多说了

B 有奖问答

看到很多搜的,提供一个dp做法
d p [ i ] [ j ] 表示前 i 道题,答对 j 道的方案数 dp[i][j]表示前i道题,答对j道的方案数 dp[i][j]表示前i道题,答对j道的方案数
有转移式子,注意连续答对十道就无法继续了
d p [ i ] [ j ] − > d p [ i + 1 ] [ j + 1 ] , 0 ≤ j ≤ 9 , 当前答对了 dp[i][j]->dp[i+1][j+1],0\le j \le9,当前答对了 dp[i][j]>dp[i+1][j+1],0j9,当前答对了
d p [ i ] [ j ] − > d p [ i + 1 ] [ 0 ] , 当前答错了 dp[i][j]->dp[i+1][0],当前答错了 dp[i][j]>dp[i+1][0],当前答错了

C 平方差

标题也提示了平方差,那就展开一下
x = ( y + z ) ( y − z ) , 不妨设 y ≥ z x =(y+z)(y-z),不妨设y\ge z x=(y+z)(yz),不妨设yz
可以发现x为奇数时,总能找到合法的y和z,令y = z + 1即可
x为偶数时,需要x为4的倍数才存在合法的y和z。
证明:
x为4的倍数时,把两个因子2分别分给y和z,这样y+z为偶数,y-z为偶数,有合法解
若x不为4的倍数,也就是x只有一个2因子,那y和z总有一个是奇数,y+z和y-z不为偶数,方程无解。
证毕

也可以打表前几项就能发现这个规律了,总的来说x为奇数或x为4的倍数,才存在合法yz。

D 更小的数

区间dp

f [ l ] [ r ] , 表示 [ l , r ] 组成的子串是正着读大,还是正反读一样大,还是反着读大 , 分别用 1 , 0 , − 1 表示 f[l][r],表示[l,r]组成的子串是正着读大,还是正反读一样大,还是反着读大,分别用1,0,-1表示 f[l][r],表示[l,r]组成的子串是正着读大,还是正反读一样大,还是反着读大,分别用1,0,1表示
有转移方程
f [ l ] [ r ] = f [ l + 1 ] [ r − 1 ] , s [ l ] = s [ r ] f[l][r]=f[l+1][r-1],s[l]=s[r] f[l][r]=f[l+1][r1],s[l]=s[r]
f [ l ] [ r ] = 1 , s [ l ] > s [ r ] f[l][r]=1,s[l]>s[r] f[l][r]=1,s[l]>s[r]
f [ l ] [ r ] = − 1 , s [ l ] < s [ r ] f[l][r]=-1,s[l]<s[r] f[l][r]=1,s[l]<s[r]

E 颜色平衡树

树上启发式合并
cnt[i],表示颜色为i的点的数量
mutiset st 里维护cnt,对于以u为根的子树,子树里的点都扔进cnt和multiset后,当multiset里最小值==最大值时,说明当前子树合法。
赛时没想到更好的做法,只能打个dsu on tree暴力,时间复杂度 O ( n l o g 2 n ) O(nlog^2n) O(nlog2n),1s有点危险,相信篮球杯机子(毕竟收了那么多钱,机子应该不烂吧😀)。
PS:看到有树剖做法似乎是1个log
发现赛时没写id数组😭😭😭应该0分g了,加了id数组后下面代码是对的(过了民间数据

const int N=2e5+10;
int n,m;
int Son;//目前的重儿子
std::vector<int> G[N];
int cnt[N],col[N],siz[N],son[N];
int sum,res;
int L[N],R[N],dfn,id[N];
multiset<int> st;
void dfs1(int x, int f){
    L[x] = ++dfn;
    id[dfn] = x;
    siz[x] = 1;
    for(int y:G[x]){
        if( y== f ) continue;
        dfs1(y,x);
        siz[x] += siz[y];
        //维护重儿子
        if( !son[x] || siz[y] > siz[son[x]] ) son[x] = y;
    }
    R[x] = dfn;
}
void add(int x){
    if( cnt[col[x]] ) st.erase(st.find(cnt[col[x]]));
    cnt[col[x]]++;
    st.insert(cnt[col[x]]);
}
void del(int x){
    st.erase(st.find(cnt[col[x]]));
    cnt[col[x]]--;
    if( cnt[col[x]] ) st.insert(cnt[col[x]]);
}
void dfs2(int x, int f ,bool keep){
    for(int y:G[x]){
        if( y==f || y == son[x] ) continue;
        dfs2(y,x,false);
    }
    if( son[x] ) dfs2(son[x],x,true);
    for(int y:G[x]){
        if( y==f || y == son[x] ) continue;
        for(int i=L[y] ;i<=R[y] ;i++) add(id[i]);
    }
    add(x);
    int mi = *st.begin();
    int ma = *prev(st.end());
    if( mi==ma ){
        res++;
    }
    if( !keep )
        for(int i=L[x] ;i<=R[x] ;i++) del(id[i]);
}
signed main(){
    cin>>n;
    _for(i,1,n){
        cin>>col[i];
        int x;cin>>x;
        if( i ){
            G[x].push_back(i);
            G[i].push_back(x);
        }
    }
    dfs1(1,0);
    dfs2(1,0,0);
    cout<<res;
}

F 买瓜

折半搜索
n为30,不难想到拆成两半暴力
然后这里每个瓜有三个状态:买,不买,取一半买,我用了三进制, 3 15 = 14348907 3^{15}=14348907 315=14348907,给了1s,感觉有点危险
具体来说
前一半,处理出每种状态,维护一个unordered_map<double,int> mp,表示重量为S最少的劈瓜次数
后一半,同理处理出每种状态,假设当前重量为K,目标重量为Tar,则ans = min(ans,mp[tar-k] + 当前劈瓜次数)

G 网络稳定性

赛时想到了克鲁斯卡尔重构树/虚树,没板子不会打(打ACM打的.jpg),遂打了离线询问+暴力,maybe能拿70分

群里看了讨论,正解大概是,先求最大生成树,然后再克鲁斯卡重构树,对于每个询问(u,v)求一下lca。

H 异或和之和

思维+前缀和
按位考虑,假设当前是第k位,做一下异或前缀和得到数组pre,我们枚举第i个数作为区间右端点,对于第i个数,有贡献 2 k ∗ c n t [ p r e [ i ] ⊕ 1 ] , 其中 c n t [ 0 / 1 ] 表示前缀和为 0 / 1 的数量 2^k*cnt[pre[i] \oplus1],其中cnt[0/1]表示前缀和为0/1的数量 2kcnt[pre[i]1],其中cnt[0/1]表示前缀和为0/1的数量

I 像素放置

状压(口胡的)
对于每个位置(x,y)只要考虑周围8个位子的放置状态,用状压维护,这个过程感觉特别繁琐,应该有一车细节要考虑。遂本退役蒟蒻打了个暴力就扔了(

J 翻转硬币

数论
打了个表,发现不合法的数都有平方因子,遂问题转化成求1~n中无平方因子数量,然后不会做了
群里问了佬,根号做法的式子是
∑ k = 1 n μ ( k ) ∗ n k 2 \sum_{k=1}^{\sqrt{n}} \mu(k)*\frac{n}{k^2} k=1n μ(k)k2n,然后听群佬说下面是用杜教筛继续做,不会构造卷积式,卡住了不会做QAQ文章来源地址https://www.toymoban.com/news/detail-412417.html

到了这里,关于第十四届蓝桥杯省赛C++ A组浅析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 第十四届蓝桥杯省赛JavaB组试题E【蜗牛】个人题解Dijkstra堆优化

                                                                                     🍏🍐🍊🍑🍒🍓🫐🥑🍋🍉🥝                                               第十四届蓝桥杯省赛JavaB组试题E【蜗牛】Dijkstra堆

    2023年04月15日
    浏览(32)
  • 第十三届蓝桥杯省赛与国赛真题题解大汇总(十四届参赛者必备)

      大家好,我是执梗。本文汇总了我写的第十三届蓝桥杯所有省赛真题与国赛真题,会针对每道题打出我自己的难度评星⭐️,也会给出每道题的算法标签,帮助大家更有针对性的去学习和准备,当然许多题目由于难度或时间的原因暂未更新,如果有不懂的问题也可以在评

    2024年02月11日
    浏览(66)
  • 第十四届蓝桥杯省赛JavaB组试题E【蜗牛】Dijkstra堆优化 or 线性DP?

                                                                                     🍏🍐🍊🍑🍒🍓🫐🥑🍋🍉🥝                                               第十四届蓝桥杯省赛JavaB组试题E【蜗牛】Dijkstra堆

    2024年02月01日
    浏览(36)
  • 第十四届蓝桥杯省赛 C/C++ A 组 H 题——异或和之和(AC)

    给定一个数组 A i A_i A i ​ ,分别求其每个子段的异或和,并求出它们的和。或者说,对于每组满足 1 ≤ L ≤ R ≤ n 1 leq L leq R leq n 1 ≤ L ≤ R ≤ n 的 L , R L, R L , R ,求出数组中第 L L L 至第 R R R 个元素的异或和。然后输出每组 L , R L, R L , R 得到的结果加起来的值。 输入的第

    2024年02月13日
    浏览(28)
  • 十四届蓝桥杯省赛CB

    写的时候没跑出来,仅仅是因为给 (i*i) 加了括号,爆了int!!! 双精度浮点的表示范围:-1.79E+308 ~ +1.79E+308 基本类型:int 二进制位数:32(4字节) 最小值:Integer.MIN_VALUE= -2147483648 (-2的31次方) 最大值:Integer.MAX_VALUE= 2147483647 (2的31次方-1 double范围很大,基本不可能爆,不

    2024年02月08日
    浏览(29)
  • 2023年第十四届蓝桥杯省赛Java C组题解

    只做出来(ACDFGH),挑几个出来,答案不一定正确,但自己测试通过了 求1~20230408的和 这里就直接套等差数列的求和公式,答案:204634714038436   【问题描述】         有一个长度为n的数组(n是10的倍数),每个数 Ai 都是区间[0,9]中的整数,小明发现数组里每种数出现的次数不太

    2023年04月26日
    浏览(30)
  • 第十四届蓝桥杯大赛青少年省赛C++组试题真题 2023年5月

    一、选择题 第 1 题 单选题 C++中,bool类型的变量占用字节数为 ( )。 A. 1 B. 2 C. 3 D. 4 第 2 题 单选题 以下关于C++结构体的说法,正确的是 ( )。 A. 结构体中只能包含成员变量,不能包含成员函数 B. 结构体不能从另一个结构体继承 C. 结构体里面可以包含静态成员变量 D. 结构体里

    2024年02月15日
    浏览(30)
  • 蓝桥杯嵌入式第十四届省赛题目解析

    前几天刚刚参加完第十四届的省赛,这届题目比我想象中的要难,其实想一想这也是应该的,以前的知识点都被摸透了,也是需要加入新的知识点了,但是我还是想说能不能别在我参加的时候加大题目难度啊。 不过听说隔壁单片机的省赛都比往年的国赛还难,这就有点离谱了

    2024年02月06日
    浏览(34)
  • 第十四届蓝桥杯Python B组省赛复盘

    【问题描述】(5 分) 请求出在 12345678 至 98765432 中,有多少个数中完全不包含 2023 。 完全不包含 2023 是指无论将这个数的哪些数位移除都不能得到 2023 。 例如 20322175,33220022 都完全不包含 2023,而 20230415,20193213 则 含有 2023 (后者取第 1, 2, 6, 8 个数位) 。 【思路】 正则表达

    2024年02月02日
    浏览(39)
  • 第十四届蓝桥杯大赛软件赛省赛JavaB组解析

    目录 说在前面 试题 A: 阶乘求和 代码: 题目分析: 试题 B: 幸运数字 代码: 题目分析: 试题 D: 矩形总面积 代码: 题目分析: 试题 G: 买二赠一 代码: 题目分析: 试题 H: 合并石子 代码: 题目思路: 说在最后 比赛结束啦,可能这是本科生涯的最后一次蓝桥杯啦!赛前也

    2023年04月11日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包