4 条题解
-
0
`
#include<bits/stdc++.h> #define int long long using namespace std; const int inf=0x3f3f3f3f; const int N=1e6+10; int n,m; int total_word[N]; struct node{ int newlearn_word; int review_word; int last_word; }a[N]; void solve() { cin >> n >> m; for(int i=1;i<=n;i++) cin >> total_word[i]; a[1].newlearn_word=total_word[1]; a[1].review_word=0; a[1].last_word=0; for(int i=2;i<=n;i++){ // 如果 今天总共学的单词 < 昨天新学的单词数 + 昨天剩余没复习的单词数, if(total_word[i] < a[i-1].newlearn_word + a[i-1].last_word){ a[i].newlearn_word = 0; // 那么 新学的单词数 == 0。 a[i].review_word = total_word[i]; // 那么 今天复习单词的数量应该 == 今天总共学的单词 a[i].last_word = a[i-1].last_word + a[i-1].newlearn_word - total_word[i]; // 那么 今天没复习的单词数 == 昨天剩余没复习的单词数 + 昨天新学的单词数 - 今天学的的单词数, }else { a[i].newlearn_word = total_word[i] - (a[i-1].newlearn_word + a[i-1].last_word); // 否则 新学的单词数 == 今天总共学的单词 - (昨天新学的单词数+昨天剩余没复习的单词数) a[i].review_word = a[i-1].newlearn_word + a[i-1].last_word; //否则 今天复习单词的数量 == 昨天新学的单词 + 昨天剩余的单词 a[i].last_word = 0; // 否则 今天没复习的单词数 == 0。 } } while(m--){ int k; cin >> k; cout << a[k].newlearn_word << ' ' << a[k].review_word << ' ' << a[k].last_word << '\n'; } } void close(){ ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); } signed main () { close();int T = 1; // cin >> T; while(T--) solve(); return 0; } // 山鸟与鱼不同路,从此山水不相逢。莫问故人长短痛,昨夜星辰皆随风
信息
- ID
- 968
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 8
- 标签
- 递交数
- 549
- 已通过
- 84
- 上传者