codeforces--Build a Contest
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相关推荐
- Codeforces Round #532(Div. 2) B.Build a Contest
链接:https://codeforces.com/contest/1100/problem/B 题意: 给n,m. 给m个数,每个数代表一个等级,没给一个将其添加到题目池中,当题目池中有难度(1-n ...
- Codeforces 659B Qualifying Contest【模拟,读题】
写这道题题解的目的就是纪念一下半个小时才读懂题...英文一多读一读就溜号... 读题时还时要静下心来... 题目链接: http://codeforces.com/contest/659/proble ...
- Educational Codeforces Round 114 (Rated for Div. 2) D. The Strongest Build 暴力 + bfs
传送门 文章目录 题意: 思路: 题意: 你有nnn个装备槽,每个槽里面有cic_ici个力量加成,对于每个槽只能选一个力量加成,现在给你mmm个力量组合[b1,b2,...,bn][b_1,b_2 ...
- 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 ...
- 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/ ...
- Codeforces Round #544 (Div. 3) A.Middle of the Contest
链接:https://codeforces.com/contest/1133/problem/A 题意: 给两个时间点,求中间时间点. 思路: 数学 代码: #include <bits/std ...
- Codeforces gym 2013-2014 Samara SAU ACM ICPC Quarterfinal Qualification Contest
题目地址:http://codeforces.com/gym/100247 2014.10.27版 26号训练的题,今天发现A题有更高效的解法,用到了前缀最大值和后缀最大值 A. The Power ...
- 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 ...
- codeforces contest 1166 E. The LCMs Must be Large---思维
题目链接:https://codeforces.com/contest/1166/problem/E 题解: 代码: #include<bits/stdc++.h> using names ...
最新文章
- 校园音乐点歌平台的设计与开发 微信小程序 点歌系统 java 开发
- leangoo大讲堂--北京站
- 树莓派安装OpenELEC
- linux 内核编译错误 gcc: error: elf_i386: No such file or directory
- VC中的一些字符类型及其转换
- LIBSVM多分类问题 参数详解及实例演示
- a good way for improving my reading ability
- React是什么及特点
- Vue 教程第四篇—— Vue 实例化时基本属性
- java容器02--ArrayList源码分析
- c++string类的常用方法详解
- vs 2005應用2003框架
- jmeter java_Jmeter 使用-JAVA请求
- VMP学习笔记之壳基础(一)
- 跟着杨中科学习asp.net之html
- python学习之天天向上代码
- 【CSS 遮挡和剪切属性 Masking】
- JavaScript+css实现的喜庆活动邀请函多页面html源码
- VL53L0测距芯片试用【ST主题月】
- 计算机原理-浮点数存储
热门文章
- Python相对引用报错ImportError: attempted relative import with no known parent package的处理方法
- iOS 开发之获取手机壳的颜色
- ARMv7的Cortex系列微处理器技术特点
- CocosCreator3D微信小游戏入门RunningBall(一): 物理
- loading.io一个loading图标网站,跟大家分享
- 防止用户重复登录解决方案
- PyQt+moviepy音视频剪辑实战1:多视频合成顺序播放或同屏播放的视频文件
- 工时管理:按工作时间还是完成的任务来跟踪员工的生产力?
- 关于CATIA V5二次开发中实体“体积”测量的宏问题
- AJAX与JSON数据交互处理