5 条题解
-
1
如果看了上一道题 【入门】前缀最大值 本人的题解那应该就很简单了(复制过来,把 max 改为 min 即可,不需要任何的加工处理,同样的,还是有两个方案)
AC code
(拿走代码前点个赞再走哇~)
方案一:
#include <bits/stdc++.h> using namespace std; const int mod = 997; const int N = 100005; int n, ans, a[N], sum[N]; int main() { ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); cin >> n >> a[1]; sum[1] = a[1]; //或者在此处:ans += a[1]; for (int i = 2; i <= n; i++) { a[i] = (379 * a[i - 1] + 131) % mod; sum[i] = max(sum[i - 1], a[i]); ans += sum[i]; } cout << (ans + a[1]); return 0; }
方案二:(空间复杂度优化,依然有亿点麻烦)
#include <bits/stdc++.h> using namespace std; const int mod = 997; int n, ans; int a1; //相当于 a[i - 1] int a2; //当前的 a[i] int b1; //相当于 sum[i - 1] int b2; //当前的 sum[i] int main() { ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); cin >> n >> a1; b1 = a1; ans += a1; for (int i = 2; i <= n; i++) { a2 = (379 * a1 + 131) % mod; b2 = max(b1, a2); ans += b2; //更新 a1 = a2; b1 = b2; } cout << ans; return 0; }
完结,撒花 ✿✿ヽ(°▽°)ノ✿~
-
1
非常简单
#include <bits/stdc++.h> using namespace std ; int n , a [ 100005 ] , sum ; int main ( ) { cin >> n ; cin >> a [ 1 ] ; for ( int i = 2 ; i <= n ; i++ ) { a [ i ] = ( 379 * a [ i - 1 ] + 131 ) % 997 ; } for ( int i = 2 ; i <= n ; i++ ) { a [ i ] = min ( a [ i - 1 ] , a [ i ] ) ; } for ( int i = 1 ; i <= n ; i++ ) { sum += a [ i ] ; } cout << sum ; }
-
-5
写题解请注意 鼓励大家写题解,但注意题解格式。
题解一定要有思路解析或代码注释,能否让别人理解你的思路
也是你的能力的检验,不要只放无意义的代码给大家复制,那就失去了做题的初心。
给代码两端加上这个会舒服一些
```cpp
你的代码
```
</span>
这个点在键盘的左上角tab上面那个键,注意切换输入法
#include<iostream> using namespace std; int main() { int n; cin>>n;//这是一个注释 return 0; }
请注意严禁抄袭题解,写题解不要只放代码,需加上你的思路或代码注释。
抄袭题解一经发现直接取消成绩。
题解被删除的可能
- 代码不符合格式规范
- 没有思路讲解或者没有注释,
- 无意义的题解
大家携手共同维护一个良好的编程环境,如果一经发现,多次作乱。可能会被管理员拉黑,请注意,一旦拉黑即失去登陆资格。
- 1
信息
- ID
- 647
- 时间
- 1000ms
- 内存
- 16MiB
- 难度
- 3
- 标签
- 递交数
- 189
- 已通过
- 104
- 上传者