Codeforces–Build a Contest
测试样例:
input
3 11
2 3 1 2 2 2 3 2 2 3 1
output
00100000001
inputCopy
4 8
4 1 3 3 2 3 3 3
output
00001000
这道题的题意就是说:从给定的m个题目中,每刚好够一轮的难度(也就是n)则对应的题目数输出1,其余的都输出0。
比如第一个样例,第三个题目与前面的两个题目刚好可以组成一轮,则在3处输出1,被拿走的题目不再参与下一轮的挑选。最后一个1与前面的又可以组成一轮,则在最后输出1,其余的位置皆输出0。
这道题我的想法是:声明一个b数组用来判断是否满足一轮,从1到m开始遍历,并且b[a[i]]++;再用一个for循环(j),从1到n遍历,用b数组来查看是否所有的b[j]都大于等于1,如果是,则满足一轮,则输出1,否则输出0。
但是这样做代码的时间复杂度是o(m*n)

#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
int a[100005];
int b[100005];
int main()
{memset(b,0,sizeof(b)); int n,m,i,j,k;int x,num=0;cin>>n>>m;for(i=1;i<=m;i++)cin>>a[i];for(i=1;i<=m;i++){int flag=1;b[a[i]]++;for(j=1;j<=n;j++){if(b[j]<1)flag=0;}if(flag==1){cout<<1;for(j=1;j<=n;j++)b[j]--;}elsecout<<0;} cout<<endl;return 0;}

很明显这样是超时了的,代码的时间复杂度是1e10;
在学长的指导下,我对代码进行了优化

#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
int a[100005];
int b[100005];
int main()
{memset(b,0,sizeof(b)); int n,m,i,j,k;int x,num=0;cin>>n>>m;for(i=1;i<=m;i++)cin>>a[i];for(i=1;i<=m;i++){x=a[i];if(b[x]==0)num++;//如果这一轮中的数字没有出现过,则num++; b[x]++;//数字每次出现,对应的b数组都会++; if(num==n) //只有当num==n的时候才会进行下面的for循环{cout<<1;num=0;for(j=1;j<=n;j++){b[j]--;if(b[j]>0)num++;}}elsecout<<0;}cout<<endl;return 0;}

优化后的代码是以num来判断是否达到了一轮,这样代码的时间复杂度就缩减为o(n*m/n)了。
班门弄斧,见笑。
谢谢。

codeforces--Build a Contest相关推荐

  1. Codeforces Round #532(Div. 2) B.Build a Contest

    链接:https://codeforces.com/contest/1100/problem/B 题意: 给n,m. 给m个数,每个数代表一个等级,没给一个将其添加到题目池中,当题目池中有难度(1-n ...

  2. Codeforces 659B Qualifying Contest【模拟,读题】

    写这道题题解的目的就是纪念一下半个小时才读懂题...英文一多读一读就溜号... 读题时还时要静下心来... 题目链接: http://codeforces.com/contest/659/proble ...

  3. Educational Codeforces Round 114 (Rated for Div. 2) D. The Strongest Build 暴力 + bfs

    传送门 文章目录 题意: 思路: 题意: 你有nnn个装备槽,每个槽里面有cic_ici​个力量加成,对于每个槽只能选一个力量加成,现在给你mmm个力量组合[b1,b2,...,bn][b_1,b_2 ...

  4. Educational Codeforces Round 76 (Rated for Div. 2) E. The Contest 思维 + 差分

    传送门 文章目录 题意: 思路: 题意: 给你三个长度分别为k1,k2,k3k1,k2,k3k1,k2,k3的数组a,b,ca,b,ca,b,c,其中k1+k2+k3=nk1+k2+k3=nk1+k2 ...

  5. Codeforces Round #307 (Div. 2) A. GukiZ and Contest 水题

    A. GukiZ and Contest Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/551/ ...

  6. Codeforces Round #544 (Div. 3) A.Middle of the Contest

    链接:https://codeforces.com/contest/1133/problem/A 题意: 给两个时间点,求中间时间点. 思路: 数学 代码: #include <bits/std ...

  7. Codeforces gym 2013-2014 Samara SAU ACM ICPC Quarterfinal Qualification Contest

    题目地址:http://codeforces.com/gym/100247 2014.10.27版 26号训练的题,今天发现A题有更高效的解法,用到了前缀最大值和后缀最大值 A. The Power ...

  8. Codeforces Round #645 (Div. 2) / contest 1358

    目录 A Park Lighting B Maria Breaks the Self-isolation C Celex Update D The Best Vacation E Are You Fi ...

  9. codeforces contest 1166 E. The LCMs Must be Large---思维

    题目链接:https://codeforces.com/contest/1166/problem/E 题解: 代码: #include<bits/stdc++.h> using names ...

最新文章

  1. 校园音乐点歌平台的设计与开发 微信小程序 点歌系统 java 开发
  2. leangoo大讲堂--北京站
  3. 树莓派安装OpenELEC
  4. linux 内核编译错误 gcc: error: elf_i386: No such file or directory
  5. VC中的一些字符类型及其转换
  6. LIBSVM多分类问题 参数详解及实例演示
  7. a good way for improving my reading ability
  8. React是什么及特点
  9. Vue 教程第四篇—— Vue 实例化时基本属性
  10. java容器02--ArrayList源码分析
  11. c++string类的常用方法详解
  12. vs 2005應用2003框架
  13. jmeter java_Jmeter 使用-JAVA请求
  14. VMP学习笔记之壳基础(一)
  15. 跟着杨中科学习asp.net之html
  16. python学习之天天向上代码
  17. 【CSS 遮挡和剪切属性 Masking】
  18. JavaScript+css实现的喜庆活动邀请函多页面html源码
  19. VL53L0测距芯片试用【ST主题月】
  20. 计算机原理-浮点数存储

热门文章

  1. Python相对引用报错ImportError: attempted relative import with no known parent package的处理方法
  2. iOS 开发之获取手机壳的颜色
  3. ARMv7的Cortex系列微处理器技术特点
  4. CocosCreator3D微信小游戏入门RunningBall(一): 物理
  5. loading.io一个loading图标网站,跟大家分享
  6. 防止用户重复登录解决方案
  7. PyQt+moviepy音视频剪辑实战1:多视频合成顺序播放或同屏播放的视频文件
  8. 工时管理:按工作时间还是完成的任务来跟踪员工的生产力?
  9. 关于CATIA V5二次开发中实体“体积”测量的宏问题
  10. AJAX与JSON数据交互处理