1. 程式人生 > >牛客寒假算法基礎集訓營2

牛客寒假算法基礎集訓營2

ace rime end bits visit distance contest node 1-1

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*108之間 如果有多組答案,輸出任意一組即可。

代碼:

技術分享圖片
#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<=ai<=109 0<=bi<=109

輸出描述:

如果處女座能復習完,輸出”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

牛客寒假算法基礎集訓營2