牛客寒假算法基础集训营2

https://ac.nowcoder.com/acm/contest/327#question

D.处女座与重修费

 

题目描述

期末考试结束了,处女座发现很多人挂了大物,只能等着第二年重修,还要交400元的重修费。处女座突然想起有个学长和他讲过,如果学校哪一年缺钱了,那一年的大物试卷就会特别难。现在处女座有了所有人的成绩,处女座想知道如果所有挂科的人都在第二年重修,学校能赚多少重修费?

挂科是指一门课的分数小于60分。

输入描述:

第一行一个整数n,表示考试的人数。
第二行n个整数,表示每个人的成绩。
1<=n<=10000
学生的成绩为0-100(包括0和100)之间的整数

输出描述:

一行,学校能赚的重修费用
示例1

输入

复制
4
60
56
100
59

输出

复制
800

代码:

#include <bits/stdc++.h>
using namespace std;
 
int N;
 
int main() {
    scanf("%d", &N);
    int sum  =0;
    for(int i = 0; i < N; i ++) {
        int x;
        scanf("%d", &x);
        if(x >= 0 && x < 60)
            sum ++;
    }
 
    printf("%d\n", sum * 400);
    return 0;
}
View Code

G.处女座与复读机

 

题目描述

一天,处女座在牛客算法群里发了一句“我好强啊”,引起无数的复读,可是处女座发现复读之后变成了“处女座好强啊”。处女座经过调查发现群里的复读机都是失真的复读机,会固定的产生两个错误。一个错误可以是下面的形式之一:

1.       将任意一个小写字母替换成另外一个小写字母

2.       在任意位置添加一个小写字母

3.       删除任意一个字母

处女座现在在群里发了一句话,他收到了一个回应,他想知道这是不是一个复读机。

输入描述:

两行
第一行是处女座说的话s
第二行是收到的回应t
s和t只由小写字母构成且长度小于100

输出描述:

如果这可能是一个复读机输出”YES”,否则输出”NO”
示例1

输入

复制
abc
abcde

输出

复制
YES

说明

abc->abcd->abcde
示例2

输入

复制
abcde
abcde

输出

复制
YES

说明

abcde->abcdd->abcde

备注:

只要能经过两步变换就从s得到t就有可能是复读机。

代码:

#include <bits/stdc++.h>
using namespace std;
 
string s, t;
 
int minDistance(string word1, string word2) {
        int row = word1.size();
        int col = word2.size();
        vector<vector<int> > dp(row + 1, vector<int>(col + 1, 0));
 
        for (int i = 1; i <= row; i ++)
            dp[i][0] = i;
        for (int j = 1; j <= col; j ++)
            dp[0][j] = j;
 
        for (int i = 1; i <= row; i ++) {
            for (int j = 1; j <= col; j ++) {
                if (word1[i - 1] == word2[j - 1])
                    dp[i][j] = dp[i - 1][j - 1];
                else
                    dp[i][j] = min(min(dp[i - 1][j - 1] + 1,dp[i - 1][j] + 1), dp[i][j - 1] + 1);
            }
        }
        return dp[row][col];
}
 
int main() {
    cin >> s >> t;
    int ans = minDistance(s, t);
    if(ans <= 2) printf("YES\n");
    else printf("NO\n");
    return 0;
}
View Code

H.处女座的测验(一)

链接:https://ac.nowcoder.com/acm/contest/327/H
来源:牛客网

题目描述

处女座进行了一场c语言的考试,要求很简单,输出2000个正整数,并且满足以下条件:

1.       任意两个数互质

2.     任意两个数x,y,满足 ,其中 为n的因子的个数

举例:6的因子有1,2,3,6,所以 τ(6)=4τ(6)=4

输入描述:

本题没有输入

输出描述:

2000行,每行一个正整数

输出的每个整数都必须在1-4*10 8之间
如果有多组答案,输出任意一组即可。

代码:

#include <bits/stdc++.h>
using namespace std;
 
const int maxn = 50000;
bool visit[maxn];
int prime[maxn];
 
void init_prim() {
    memset(visit, true, sizeof(visit));
    int num = 0;
    for (int i = 2; i <= maxn; ++i) {
        if (visit[i] == true) {
            num++;
            prime[num] = i;
        }
        for (int j = 1; ((j <= num) && (i * prime[j] <= maxn));  ++j) {
            visit[i * prime[j]] = false;
            if (i % prime[j] == 0) break;
        }
    }
}
 
 
int main() {
    init_prim();
    for(int i = 1; i <= 2000; i ++) {
        cout << prime[4000 - i] * prime[i] << endl;
    }
    return 0;
}
View Code

J.处女座的期末复习

链接:https://ac.nowcoder.com/acm/contest/327/J
来源:牛客网

题目描述

快要期末考试了,处女座现在有n门课程需要考试,每一门课程需要花ai小时进行复习,考试的起始时间为bi,处女座为了考试可以不吃饭不睡觉,处女座想知道他能否复习完所有的科目(即在每一门考试之前复习完该科目)。每一门课的考试时间都为两小时。

输入描述:

第一行一个整数n

第二行n个整数a1,a2,…,an,表示每门课需要复习的时间

第三行n个整数b1,b2,…,bn,表示每门课考试的时间

1<=n<=105

0<=a i<=10 9
0<=b i<=10 9

输出描述:

如果处女座能复习完,输出”YES”,否则输出”NO”
示例1

输入

复制
3
0 1 1
2 6 4

输出

复制
YES

说明

在0-1小时复习第2门课,
在1-2小时复习第3门课,
在2-4小时考第1门课,
在4-6小时考第3门课,
在6-8小时考第2门课

备注:

考试时不能复习,保证考试时间不会重叠。

复习可以拆开,只要复习时间够了即可。

代码:

#include <bits/stdc++.h>
using namespace std;
 
const int maxn = 1e5 + 10;
int N;
 
struct Node{
    int a, b;
}node[maxn];
 
bool cmp(const Node& aa, const Node& bb) {
    if(aa.b != bb.b)
        return aa.b < bb.b;
    else return aa.a < bb.a;
}
 
int main() {
    scanf("%d", &N);
    for(int i = 0; i < N; i ++) scanf("%d", &node[i].a);
    for(int i = 0; i < N; i ++) scanf("%d", &node[i].b);
 
    bool flag = true;
    sort(node, node + N, cmp);
    int sum = 0;
     
    for(int i = 0; i < N; i ++) {
        sum += node[i].a;
        if(sum <= node[i].b)
            continue;
        else {
            flag = false;
            break;
        }
    }
 
    if(flag) printf("YES\n");
    else printf("NO\n");
    return 0;
}
View Code

今天下午的比赛写出来四道题!

Be 主要回来继续撸题了!要加油!!!

FHFHFH

猜你喜欢

转载自www.cnblogs.com/zlrrrr/p/10317125.html