第一题好巧妙,学习了.贴一下我的 #include <iostream> #include<vector> #include<climits> using namespace std; int main() { //前缀和思想,加剪枝 int n; int k; int max_val = INT_MIN; while(cin>>n){ vector<int> nums(n, 0); cin>>nums[0]; for(int i=1;i<n;++i){ cin>>nums[i]; nums[i] += nums[i-1]; } cin>>k; for(int i=n-1;i>=0;--i){ if(max_val<i+1 && nums[i]%k==0){//剪枝 max_val = i+1; break;//剪枝 } } for(int i=0;i<n;++i){ for(int j=n-1;j>=i;--j){ if(max_val<j-i){ if((nums[j]-nums[i])%k==0){//剪枝 max_val = j-i; } } else//剪枝 break; } } cout<<max_val<<endl; } return 0; } 第二题 #include <iostream> #include<vector> #include<climits> using namespace std; int main() { //思路:分析样例发现,当某个数大于其他数的和时,只用从这个最大数开始.然而因为该数大于其他书的总和,所以分完其他所有人以后,还是有书剩余.不符合条件. //代码较简单 int n; int sum; while(cin>>n){ vector<int> nums(n, 0); bool flag = true; for(int i=0;i<n;++i){ cin>>nums[i]; sum += nums[i]; } for(int i=0;i<n;++i){ if(nums[i]*2>sum){ cout<<"No"<<endl; flag = false; break; } } if(flag) cout<<"Yes"<<endl; } return 0; }
点赞 评论

相关推荐

咖啡馆守时的南瓜:这份简历是“大一新生硬凹资深后端”的典型反面教材,槽点离谱到能让面试官直接笑出声: ### 1. 「年龄+入学时间」和项目复杂度完全脱节,可信度直接归0 你2024年7月才入学(现在刚读了1年多),19岁的大一新生,能把Vue3+Spring Boot+ShardingSphere+K8s+AI这些技术全塞进两个项目里?别说实际开发,光把这些技术的文档看完都得半年——这不是“能力强”,是“把招聘JD里的技术词全抄过来造假”,明摆着没碰过实际代码
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务