当前位置: 首页 > wzjs >正文

国内网站空间 优帮云飞鱼crm系统

国内网站空间 优帮云,飞鱼crm系统,做商务网站,网站制作开发目录 题目简述: 思路: 总代码: https://codeforces.com/contest/2117/problem/C 题目简述: 给定一个整数数组,现要求你对数组进行分割,但需满足条件:前一个子数组中的值必须在后一个子数组中…

目录

题目简述:

思路:

总代码:



https://codeforces.com/contest/2117/problem/C

 

题目简述:

给定一个整数数组,现要求你对数组进行分割,但需满足条件:前一个子数组中的值必须在后一个子数组中全部出现(例如 123142,可以分成12 和3142这俩子数组)求子数组个数

思路:

关键思路很好想:尽可能早的进行数组分割

具体实操很难搞

我们可以维护一个集合,遍历整个数组,不断弹出当前所遍历到的值,如果这个集合为空了,那么此时就满足的分割条件,且是最优分割位置,此时ans++,此时集合需要更新成前一个集合(假设有集合a1,a2,a3,此时满足了a1中全部元素在a2中全出现了,下次再判断时就要满足a2中全部元素在a3中全部出现,所以把集合更新成a2)

接下来我们想用什么容器存呢?

这个容器得可以实现:任意删除,判空,去重(若a1中出现俩相同元素如a1=112,a2中只需出现一次1即可,所以要去重)。

那很显然了就是set。

总结:

使用集合s记录当前段的所有元素

从左到右遍历数组,对于每个元素a[i],将其从集合中删除

当集合为空时,说明当前段的所有元素都能在后续段中找到(因为已被删除),可以在此处分割

分割后重置集合,记录新段的起始位置

最后处理可能未完成的段

总代码:

#include<bits/stdc++.h>
using namespace std;
#define int long long
#define endl "\n"
const int N=5e5+10;
int a[N];
void solve(){int n;cin>>n;set<int>s;for(int i=1;i<=n;i++)cin>>a[i];int ans=1;int r=1;for(int i=1;i<=n;i++) {s.erase(a[i]);if(s.empty()){ans++;for(int j=r;j<=i;j++)s.insert(a[j]);r=i+1;}}if(!s.empty())ans--;cout<<ans<<endl;
}
signed main(){ios::sync_with_stdio(false);cin.tie(nullptr);int q=1;cin>>q;while(q--) solve();return 0;
}

http://www.dtcms.com/wzjs/585852.html

相关文章:

  • 成都华阳有没有做网站的网络规划设计师夏杰课程吾爱破解
  • 建设部注册网站企业官网的重要性
  • 建设银行网站如何查询开户行网站关键词多少个合适
  • 做微信网站公司淮安建立公司网站流程
  • 学习网站建设需要什么app开发公司一个月可以赚多少钱
  • 网站域名是什么意思傻瓜式网页制作工具
  • wordpress建英文站安阳做推广网站
  • 手机网站版面设计做网站 转行
  • 初学者想学网站建设沧州头条最新新闻
  • 做营销网站公司全是广告的网站
  • 杭州专业做网站的公司可以做调查问卷的网站
  • 建购物网站需要多少钱做海报的素材网站
  • 做网站的关键词是指wordpress全图水印插件
  • 个人可否建立网站营销业务应用系统
  • 电子商务网站建设与管理的总结廊坊手机网站制作
  • 网站空间的建设app嵌入手机网站
  • 重庆建网站派臣公司软文素材
  • 自助建站免费平台中国十大物联网公司
  • 网站服务器收费网站报错403
  • 网站建设用模板好吗海燕网站建设公司
  • 网站服务器哪个好文化传播有限公司网站建设
  • 小贷做网站网站建设与维护课程标准
  • 网站建设与管理内容手游折扣平台app哪个好
  • 如何自建淘宝客网站深圳建网站的
  • 秦皇岛手机网站制作价格wordpress书籍推荐
  • 提供手机自适应网站移动网站开发百科
  • 网站编程培训机构wordpress 固定链接404
  • 深圳站建在边境考研资料找微信hyhyk1推广可以
  • 大岭山仿做网站长沙中小企业网站制作
  • 江苏建站服装门户系统网站