第十七次CCF-CSP算法(含C++源码)
第十七次CCF-CSP认证
- 小明种苹果
- AC代码
- 小明种苹果(续)
- AC代码
- 后面好难哈哈 小手冰凉
小明种苹果
输入输出:
题目链接
AC代码
#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代码
链接:源码地址
#include<iostream>
#include <algorithm>using namespace std;
typedef long long int ll;
int apple[1005][1005]; // 存储每棵树的观测记录
int rem[1005]; // 记录每棵树最终剩余的苹果数
bool down[1005]; // 标记每棵树是否发生过苹果掉落,初始值为falseint 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; // 掉落树的数量加1down[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;
}