C++小白训练第六天
以下为牛客挑战
今日收获
- 了解了map<int,int>m;,map可以去重共,因为键值对key是唯一的,
- for (auto it = m.begin(); it != m.end(); ++it) {
- int key = it->first; // 键
- int& val = it->second; // 值
- }
- for (auto& [k, v] : m) { /* k 是键,v 是值 */ }
- 所以一般使用时候都是先转换为vector<pair<int,int>>m;
- for(auto &z: m){
- v.emplace_back(z);
- }
复制代码 小红出千
G-小红出千_牛客周赛 Round 123
这个顺子一定是长度为n的,所以当我门固定一个左端,那右端就可以确定了,我们可以用双指针去维护
我们去维护一个区间,我们发现在区间中,只要我们的数够多就可以,我们就可以更少的从区间外去变换到区间里面,所以我就去遍历一下找到合适的区间,
最后找到一个区间满足且有较多的数,再把这些里面的数进行标记一下,标记为使用
一个是数有没有用,一个是位置
[code]for(int i=l;i t; while (t--)#define TESTconst int N=2e5+10,M=1e3+10,mod=1e9+7;int a[N],b[N],c[N],pre[N];signed main(){ std::ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); int n; cin>>n; mapm; vectors(n+1); for(int i=1;i>s; m[s]=i; } vectorv; for(auto &z: m){ v.emplace_back(z); }// for(int i=0;i |