第十七次CCF-CSP算法(含C++源码)

第十七次CCF-CSP认证

小明种苹果


输入输出:


题目链接

AC代码

cpp 复制代码
#include<iostream>
using namespace std;
int n,m;
int res,res3;
int sum;
int res2=1;
int main(){
    cin >>n>>m;
   
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=m+1;j++)
        {
            int x;
            cin >>x;
            res+=x;
            if(j!=1) 
            sum-=x;  
        }
        if(sum>res3 )
        {
            res3=sum;
              res2=i;
        }
        sum =0;
    }

    cout <<res<<' '<<res2<<' '<<res3<<endl;
    return 0;
}

小明种苹果(续)

题目链接

输入输出:

AC代码

链接:源码地址

cpp 复制代码
#include<iostream>
#include <algorithm>

using namespace std;
typedef long long int ll;
int apple[1005][1005];  // 存储每棵树的观测记录
int rem[1005];          // 记录每棵树最终剩余的苹果数
bool down[1005];        // 标记每棵树是否发生过苹果掉落,初始值为false

int main(){
    ios::sync_with_stdio(false);  // 加快输入输出速度
    cin.tie(0);
    int N;  // 苹果树的棵数
    int D=0;  // 发生苹果掉落的苹果树的数量
    ll T=0;   // 剩余的果子总数
    ll E=0;   // 连续三棵树都发生掉落的组数
    cin>>N;
    
    // 处理每棵苹果树的观测记录
    for(int i=1;i<=N;i++){
        int m;  // 当前树的观测记录数
        cin>>m;
        bool flag = false;  // 标记当前树是否发生了苹果掉落
        
        // 处理当前树的每条观测记录
        for(int j=1;j<=m;j++){
            cin>>apple[i][j];
            
            // 若记录为正数,表示直接更新苹果数
            if(apple[i][j]>0){
                // 若当前记录的苹果数小于之前的记录,说明发生了掉落
                if(rem[i]>apple[i][j]){
                    flag = true;
                }
                rem[i]=apple[i][j];  // 更新当前苹果树的苹果数
            }
            // 若记录为负数,表示苹果数减少
            else{
                rem[i]+=apple[i][j];  // 更新当前苹果树的苹果数
            }
        }
        
        // 若当前树发生了掉落,更新相关统计
        if(flag){
            ++D;  // 掉落树的数量加1
            down[i]= true;  // 标记当前树发生了掉落
        }
        T+=rem[i];  // 累加当前树的剩余苹果数到总数
    }
    
    // 处理环形结构:将最后两棵树的状态复制到N+1和N+2位置
    down[N+1]=down[1];
    down[N+2]=down[2];
    
    // 统计连续三棵树都发生掉落的组数
    for(int i=1;i<=N;i++){
        if(down[i]&&down[i+1]&&down[i+2]){
            ++E;  // 若当前树及其后两棵树都掉落,组数加1
        }
    }
    
    // 输出结果
    cout<<T<<" "<<D<<" "<<E<<endl;
    return 0;
}

后面好难哈哈 小手冰凉

相关推荐
郝学胜-神的一滴14 分钟前
深入理解前端 Axios 框架:特性、使用场景与最佳实践
开发语言·前端·程序人生·软件工程
jf加菲猫14 分钟前
条款11:优先选用删除函数,而非private未定义函数
开发语言·c++
周杰伦_Jay18 分钟前
【图文详解】强化学习核心框架、数学基础、分类、应用场景
人工智能·科技·算法·机器学习·计算机视觉·分类·数据挖掘
歪歪10020 分钟前
什么是TCP/UDP/HTTP?
开发语言·网络·网络协议·tcp/ip·http·udp
WangMing_X27 分钟前
C#上位机软件:2.1 .NET项目解决方案的作用
开发语言·c#
violet-lz32 分钟前
Linux静态库与共享库(动态库)全面详解:从创建到应用
算法
贝塔实验室33 分钟前
ADMM 算法的基本概念
算法·数学建模·设计模式·矩阵·动态规划·软件构建·傅立叶分析
Pocker_Spades_A41 分钟前
Python快速入门专业版(四十六):Python类的方法:实例方法、类方法、静态方法与魔术方法
开发语言·python
2351643 分钟前
【LeetCode】3. 无重复字符的最长子串
java·后端·算法·leetcode·职场和发展
零雲1 小时前
java面试:可以讲一讲sychronized和ReentrantLock的异同点吗
java·开发语言·面试