• 蓝桥杯打卡Day12



    文章目录

    • 接龙数列
    • 冶炼金属

    一、接龙数列OJ链接

    本题思路:本题是一道经典的dp问题,设第i个数的首位数字是first, 末位数字是last。因为第i个数只可能加到一个以first结尾的接龙数列中使得这个接龙数列长度加1并且结尾数字变成last.所以状态转移方程为dp[i][last] = max(dp[i - 1][last], dp[i - 1][first] + 1)而显然第一维可以优化掉。

    1. #include
    2. constexpr int N=1e5+10;
    3. int n;
    4. int dp[N][10];//表示前i个数以j结尾最小删除的个数
    5. /*
    6. 设第i个数的首位数字是first, 末位数字是last。
    7. 因为第i个数只可能加到一个以first结尾的接龙数列中
    8. 使得这个接龙数列长度加1并且结尾数字变成last.
    9. 所以状态转移方程为dp[i][last] = max(dp[i - 1][last], dp[i - 1][first] + 1)
    10. 而显然第一维可以优化掉。
    11. */
    12. int main()
    13. {
    14. std::ios::sync_with_stdio(false);
    15. std::cin.tie(nullptr);std::cout.tie(nullptr);
    16. std::cin>>n;
    17. for(int i=1;i<=n;i++){
    18. std::string num;
    19. std::cin>>num;
    20. int first=num[0]-'0',last=num[num.size()-1]-'0';
    21. for(int j=0;j<10;j++){
    22. if(j==last)
    23. dp[i][j]=std::min(dp[i-1][first],dp[i-1][last]+1);
    24. else
    25. dp[i][j]=dp[i-1][j]+1;
    26. }
    27. }
    28. int res=INT_MAX;
    29. for(int i=0;i<10;i++) res=std::min(res,dp[n][i]);
    30. std::cout<
    31. return 0;
    32. }

    二、冶炼金属OJ链接

    本题思路:本题是一道数学的题目,设答案为v,因为能炼出b个但炼不出b+1个,所以有b×v≤a且a<(b+1)×v即 ab+1

    1. #include
    2. int main()
    3. {
    4. std::ios::sync_with_stdio(false);
    5. std::cin.tie(nullptr);std::cout.tie(nullptr);
    6. int n;
    7. int mi = 0 , mx = 2e9 ;
    8. std::cin>>n;
    9. for(int i = 1 ; i <= n ; i ++){
    10. int a , b ;
    11. std::cin >> a >> b ;
    12. int r = a/b , l = a/(b+1)+1;
    13. mi = std::max(mi , l);
    14. mx = std::min(mx , r) ;
    15. }
    16. std::cout << mi << ' ' << mx << std::endl ;
    17. return 0;
    18. }

  • 相关阅读:
    C#操作GridView控件绑定数据实例详解(二)
    网站中接入手机验证码和定时任务(含源码)
    玩转输入输出
    银行双活数据中心建设项目实践
    【机器学习】数据格式csv/txt/pkl
    Java8(JDK1.8)新特性
    容器是什么?
    java计算机毕业设计西宁市农副产品物流信息系统源代码+数据库+系统+lw文档
    自动微分(Auto differentiation)机制详解
    Java12~14 switch语法
  • 原文地址:https://blog.csdn.net/qq_67458830/article/details/133099376