青藤 最值、求和、计数 枚举巩固 1+2
第一题 一维前缀和
**题目大意:**给你n个数,q次询问区间[l,r]的数的总和。
**分析:**要先做好预处理,到算的时候就只要减去之前的和就行了。
代码
#include <bits/stdc++.h> using namespace std; int a, n, m; int s[100005]; int main() { cin >> n >> m; for (int i = 1; i <= n; i++) { cin >> a; s[i] = s[i - 1] + a; } while (m--) { int l, r; cin >> l >> r; cout << s[r] - s[l - 1] << endl; } return 0; }
第二题 二维前缀和
**题目大意:**给出一n行m列的矩阵,q次询问左上角为(x1,y1) ,右下角为(x2,y2)的子矩阵中数的和
**分析:**要先做好预处理,到算的时候就只要其他子矩阵的和加上重复的子矩阵就行了。
代码
#include<bits/stdc++.h> using namespace std; int a[10003][10003],s[10003][10003]; int main() { ios::sync_with_stdio(false); cin.tie(0); int n,m,q; cin>>n>>m>>q; for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) { cin>>a[i][j]; s[i][j]=s[i-1][j]+s[i][j-1]-s[i-1][j-1]+a[i][j]; } for(int i=1;i<=q;i++) { int x1,x2,y1,y2; cin>>x1>>y1>>x2>>y2; printf("%dn",s[x2][y2]-s[x1-1][y2]-s[x2][y1-1]+s[x1-1][y1-1]); } return 0; }
第三题 小鱼的航程
题目大意: 一只鱼一天行250km,周末休息,告诉你从星期x开始,游了n天,求总共游了几km。
**分析:**要一周一周算,按日算会超时。
代码
#include <bits/stdc++.h> using namespace std; long long x, x2, n, t, i, t2; int main() { scanf("%lld%lld", &x, &n); for (i = 1; i <= 7; i++) { if (x == 8) x = 1; if (x < 6) t++; x++; } t2 = n / 7 * t; t = 0; for (i = 1; i <= n % 7; i++) { if (x == 8) x = 1; if (x < 6) t++; x++; } cout << (t2 + t) * 250; return 0; }
第四题 楼层编号
题目大意: 小林住在m层,给你一个高能数字t,如果存在高能数字那么该楼层就不存在,让你求小林真实的楼层。
分析: 只要枚举每一天,是否存在高能数字就行了。然后再天数减去记录的数量。
代码
#include<bits/stdc++.h> using namespace std; int main() { int n,t,sum=0,k,ni; cin>>n>>t; for(int i=1;i<=n;i++) { ni=i; while(ni!=0) { if(ni%10==t) { sum++; break; } ni/=10; } } cout<<n-sum<<endl; return 0; }
c/c++开发分享青藤 最值、求和、计数 枚举巩固 1+2地址:https://blog.csdn.net/coollend/article/details/111052772
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/596413.html