CODEVS 必做题:3149、2821、1531、3369、1230

3149 爱改名的小融 2

时间限制: 2 s

空间限制: 128000 KB

题目等级 : 黄金 Gold

题解

题目描述 Description

Wikioi上有个人叫小融,他喜欢改名。
现在他的要求变了,只要是英文字母就是他的名字。
先给你N个名字,请你一一判断是不是小融。
本题还加强了测试数据

输入描述 Input Description

N
N行名字(全部为字符)

输出描述 Output Description

N行,YES或NO(大写)

样例输入 Sample Input

3
&6*14315
Rinkement
micsloox

样例输出 Sample Output

NO

YES

YES

数据范围及提示 Data Size & Hint

对于40%的数据 N≤10 名字长度≤100
对于100%的数据 N≤50 名字长度≤100000

分类标签 Tags 点此展开

字符串处理 枚举 线性结构

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
using namespace std;
#define N 100010
char str[N];int n;
int main(){
    scanf("%d",&n);
    for(int i=1;i<=n;i++){
        scanf("%s",str);
        int flag=0,len=strlen(str);
        for(int j=0;j<len;j++){
            if((str[j]>=‘a‘&&str[j]<=‘z‘)||(str[j]>=‘A‘&&str[j]<=‘Z‘));
            else {flag=1;break;}
        }
        printf("%s\n",flag?"NO":"YES");
    }
    return 0;
}

2821 天使之城

时间限制: 1 s

空间限制: 128000 KB

题目等级 : 黄金 Gold

题解

查看运行结果

题目描述 Description

天使城有一个火车站,每辆火车都从A方向驶入车站,
再从B方向驶出车站。

为了调度火车,火车站设有停放轨道,可存放5辆火车。已知从A进入车站顺序为1、2、3……。现在给你一个调度方案,判断是否可行,如果可行,输出出站顺序。
有以下几种调度方法:
A. 将A上的头一辆车驶出B方向
B. 将A上的头一辆车停入暂停轨道
C. 将暂停轨道上最外面的车驶出B方向

输入描述 Input Description

输入第一行一个整数N(n<30)表示调度方案步骤数目。
下一行一个字符串,有N个大写字母,表示调度方法。

输出描述 Output Description

输出若不可行(暂停站满了还停车、暂停站空了还出车),则输出一行“No”。
若可行,输出一行“Yes”,再输出若干行,每行一个整数,表示车出站序列。

样例输入 Sample Input

[样例输入1]
6
ABBCCA
[样例输入2]
5
BACAC

样例输出 Sample Output

[样例输出1]
Yes
1
3
2
4
[样例输出2]
No

数据范围及提示 Data Size & Hint

如题

#include<cstdio>
#include<stack>
#include<queue>
#include<iostream>
using namespace std;
char str[50];int n,cur,wrong;
int main()
{
    scanf("%d",&n);
    scanf("%s",str+1);
    stack<int>s;
    queue<int>q;
    for(int i=1;i<=n;i++){
        char ch=str[i];
        if(ch==‘A‘) q.push(++cur);
        else if(ch==‘B‘){
            if(s.size()>=5){wrong=1;break;}
            else s.push(++cur);
        }
        else{
            if(!s.size()) {wrong=1;break;}
            else q.push(s.top()),s.pop();
        }
    }
    if(wrong) printf("No\n");
    else{
        printf("Yes\n");
        while(!q.empty()){
            printf("%d\n",q.front());q.pop();
        }
    }
    return 0;
}

1531 山峰

时间限制: 1 s

空间限制: 128000 KB

题目等级 : 钻石 Diamond

题解

题目描述 Description

Rocky山脉有n个山峰,一字排开,从西向东依次编号为1, 2, 3, ……, n。每个山峰的高度都是不一样的。编号为i的山峰高度为hi。

小修从西往东登山。每到一座山峰,她就回头观望自己走过的艰辛历程。在第i座山峰,她记录下自己回头能看到的山峰数si。

何谓“能看到”?如果在第i座山峰,存在j<k<i,hj<hk,那么第j座山峰就是不可见的。除了不可见的山峰,其余的山峰都是可见的。

回家之后,小修把所有的si加起来得到S作为她此次旅行快乐值。现在n座山峰的高度都提供给你了,你能计算出小修的快乐值吗?

输入描述 Input Description

第一行一个整数n(n<=15000)。

第i+1(1<=i<=n)行是一个整数hi(hi<=109)。

输出描述 Output Description

仅一行:快乐值。

样例输入 Sample Input

5

2

1

3

5

9

样例输出 Sample Output

5

数据范围及提示 Data Size & Hint

说明:s1=0, s2=1, s3=2, s4=1, s5=1。

#include<cstdio>
#include<iostream>
#include<cstring>
#include<stack>
using namespace std;
int h[15010],n,g,ans;
stack<int>s;
int main()
{
    scanf("%d",&n);
    for(int i=1;i<=n;i++){
        scanf("%d",&h[i]);
        ans+=s.size();
        while(s.size()>0&&h[i]>s.top()){
            s.pop();
        }
        s.push(h[i]);
    }
    printf("%d\n",ans);
    return 0;
}

3369 膜拜

时间限制: 1 s

空间限制: 128000 KB

题目等级 : 黄金 Gold

题解

查看运行结果

题目描述 Description

神牛有很多…当然…每个同学都有自己衷心膜拜的神牛.
某学校有两位神牛,神牛甲和神牛乙。新入学的N位同学们早已耳闻他们的神话。所以,已经衷心地膜拜其中一位了。
现在,老师要给他们分机房。
但是,要么保证整个机房都是同一位神牛的膜拜者,或者两个神牛的膜拜者人数差不超过M。
另外,现在N位同学排成一排,老师只会把连续一段的同学分进一个机房。老师想知道,至少需要多少个机房。

输入描述 Input Description

输入文件第一行包括N和M。
之后N行,每行一个整数,1表示神牛甲的崇拜者,2表示神牛乙的崇拜者。

输出描述 Output Description

输出一个整数,表示最小需要机房的数量。

样例输入 Sample Input

5 1 

2  


2

样例输出 Sample Output

2

数据范围及提示 Data Size & Hint

对于30%的数据,有1≤N,M≤50;
对于100%的数据,有1≤N,M≤2500

#include<cstdio>
#include<algorithm>
using namespace std;
#define N 3010
int n,m,s1[N],s2[N],f[N];
int main(){
    scanf("%d%d",&n,&m);
    for(int i=1,x;i<=n;i++){
        f[i]=i;
        scanf("%d",&x);
        if(x==1)
            s1[i]=s1[i-1]+1,s2[i]=s2[i-1];
        else
            s1[i]=s1[i-1],s2[i]=s2[i-1]+1;
    }
    for(int i=1;i<=n;i++){
        for(int j=i;j>=0;j--){
            if(s1[i]-s1[j]==i-j||s2[i]-s2[j]==i-j||abs(s1[i]-s1[j]-(s2[i]-s2[j]))<=m){
                f[i]=min(f[i],f[j]+1);
            }
        }
    }
    printf("%d\n",f[n]);
    return 0;
}

1230 元素查找

时间限制: 1 s

空间限制: 128000 KB

题目等级 : 钻石 Diamond

题解

查看运行结果

题目描述 Description

给出n个正整数,然后有m个询问,每个询问一个整数,询问该整数是否在n个正整数中出现过。

输入描述 Input Description

第一行两个整数 n 和m。

第二行n个正整数(1<=n<= 100000)

第三行m个整数(1<=m<=100000)

输出描述 Output Description

一共m行,若出现则输出YES,否则输出NO

样例输入 Sample Input

4 2

2 1 3 4

1 9

样例输出 Sample Output

YES

NO

数据范围及提示 Data Size & Hint

所有数据都不超过10^8

#include<cstdio>
#include<algorithm>
using namespace std;
#define N 100100
int n,m,a[N],b[N];
int main(){
    scanf("%d%d",&n,&m);
    for(int i=0;i<n;i++){
        scanf("%d",a+i);
    }
    for(int i=0;i<m;i++){
        scanf("%d",b+i);
    }
    sort(a,a+n);
    for(int i=0;i<m;i++){
        int p=lower_bound(a,a+n,b[i])-a;
        printf("%s\n",a[p]==b[i]?"YES":"NO");
    }
    return 0;
}
时间: 2024-10-21 01:45:31

CODEVS 必做题:3149、2821、1531、3369、1230的相关文章

codevs 必做:2776、1222

2776 寻找代表元 时间限制: 1 s 空间限制: 256000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description 广州二中苏元实验学校一共有n个社团,分别用1到n编号.广州二中苏元实验学校一共有m个人,分别用1到m编号.每个人可以参加一个或多个社团,也可以不参加任何社团.每个社团都需要选一个代表.谦哥希望更多的人能够成为代表. 输入描述 Input Description 第一行输入两个数n和m.以下n行每行若干个数,这些数都是不超过m的正整数.其中第i行的数表示社

codevs 必做:堆:1245、2879 并查集:1069、1074、1073

1245 最小的N个和 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题解 查看运行结果 题目描述 Description 有两个长度为 N 的序列 A 和 B,在 A 和 B 中各任取一个数可以得到 N^2 个和,求这N^2 个和中最小的 N个. 输入描述 Input Description 第一行输入一个正整数N:第二行N个整数Ai 且Ai≤10^9:第三行N个整数Bi,且Bi≤10^9 输出描述 Output Description 输出仅一行,包

Splay必做题 [NOI2005]维修数列

1500: [NOI2005]维修数列 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 6577  Solved: 1978[Submit][Status] Description Input 输入文件的第1行包含两个数N和M,N表示初始时数列中数的个数,M表示要进行的操作数目.第2行包含N个数字,描述初始时的数列.以下M行,每行一条命令,格式参见问题描述中的表格. Output 对于输入数据中的GET-SUM和MAX-SUM操作,向输出文件依次打印

1、Codevs 必做:2833、1002、1003、2627、2599

2833 奇怪的梦境 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description Aiden陷入了一个奇怪的梦境:他被困在一个小房子中,墙上有很多按钮,还有一个屏幕,上面显示了一些信息.屏幕上说,要将所有按钮都按下才能出去,而又给出了一些信息,说明了某个按钮只能在另一个按钮按下之后才能按下,而没有被提及的按钮则可以在任何时候按下.可是Aiden发现屏幕上所给信息似乎有矛盾,请你来帮忙判断. 输入描述 Input Description

楼天城[男人必做八题]

六月了,离九校联考又近了一点. 之前的任务都结束地差不多了,下礼拜一听完课就要准备期末考了吧. 暑假里准备联赛去,在那之前先鏼一下loutiancheng男人必做八题 传送门:http://wenku.baidu.com/link?url=7BJZ9bqoGrBJoeeiFdQtQgx3bKwyurWrWBuH9UGKAJETJipFaAUsKW0qohnINsvXILOCq0NC4uTuOZfyRruMkHh_huDfnbCi5wvxdB91NW7 poj1742 背包 卡着常过的...惭愧

投资银行业务过关必做1500题

品相描述: 本商品为电子资料(非纸质书,无需邮寄,不支持打印),购买成功后客服将人工发送激活密码(如果长时间没收到可主动联系店铺客服获取).由于软件的特殊性,本商品不支持退换货,请购买前先下载试用,确保满意后再购买![官方网站]圣才电子书(www.100dianzishu.com)[联系方式]QQ咨询:4006123191 电话咨询:4006-123-191 详细描述: 下载地址:http://www.100eshu.com/DigitalLibrary/show.aspx?id=131015资

9718 整数因子分解(必做) 分治法

9718 整数因子分解(必做) 时间限制:1000MS  内存限制:1000K提交次数:0 通过次数:0 题型: 编程题   语言: G++;GCC;VC;JAVA Description 大于1的正整数 n 都可以分解为 n = x1 * x2 * ... * xm, 每个xi为大于1的因子,即1<xi<=n . 例如:当n=12时,共有8种不同的分解式: 12 = 12 12 = 6*2 12 = 4*3 12 = 3*4 12 = 3*2*2 12 = 2*6 12 = 2*3*2 12

FFT/NTT做题方法与调试技巧(+提高码题效率的一些想法)

(其实本文应该写成了"结合FFT讨论的调试技巧+码题方法",语文不好一写文章就偏题QAQ) 有意见欢迎提出,有遗漏欢迎补充! FFT(快速傅里叶变换)/NTT(数论变换)是卷积运算常见而实用的优化 但是FFT/NTT的处理过程并不像暴力运算(差不多是多项式乘法)那样能够直观地反映卷积结果的实时变化. 因此在使用FFT时将会或多或少地加大调试的难度. 如果调试程序时直接跟踪变量,每步手算结果比对,不仅会耽误大量时间,而且效果可能并不理想. 直接肉眼查错效率可能也不太高. 但也正由于FFT

手机被偷前必做的两件事

很多"专家"都曾经发过<手机被偷后必做的N件事>这类教程,比如:致电运营商挂失手机号:致电银行冻结手机网银:手机解绑支付宝:微信冻结账号:修改微博.微信.QQ等密码:找手机运营商补手机卡:等等等等,实际上,这类教程所要求的事情都不是必要的,亡羊补牢不如未雨绸缪,真正要做到丢失后手机安全,只需要事前做两件事情:设置指纹密码和SIM卡密码.对于苹果用户来说,还需设置"查找我的iPhone"和iCloud两步验证. 以iPhone为例,一般都会设置"