2023年码蹄杯决赛题解(一)

目录

MC0249 疗养院的福利

MC0248 密码判断器

MC0251 小码哥锻炼

MC0240 小码哥和假期堵车

MC0252 小码哥的数字游戏


MC0249 疗养院的福利

#include<bits/stdc++.h> 
using namespace std;
struct MAN{
    int years;
    int index;
};
bool cmp(MAN &a,MAN &b)
{
    if(a.years!=b.years)return a.years>b.years;
    else return a.index<b.index;
}
MAN a[1001];
int main( )
{
    int n;cin>>n;
    for(int i=1;i<=n;++i)
    {
        cin>>a[i].years;
        a[i].index=i;
    }
    int k;cin>>k;
    sort(a+1,a+n+1,cmp);
    for(int i=1;i<=k;++i)cout<<a[i].index<<' ';
    return 0;
}

MC0248 密码判断器

def check() -> bool:
    if len(A) <= 6:
        return False
    s1 = {}
    s2 = {}
    s3 = {}
    for c in A:
        if c >= 'a' and c <= 'z':
            s1[c] = None
        if c >= 'A' and c <= 'Z':
            s2[c] = None
        if c >= '0' and c <= '9':
            s3[c] = None
    if len(s1) == 0 or len(s2) == 0 or len(s3) == 0:
        return False
    for i in range(1, len(A)):
        if A[i - 1] >= '0' and A[i - 1] <= '9' and A[i] >= '0' and A[i] <= '9':
            return False
    return True


def solve():
    global A

    A = input()
    if check():
        print("True")
    else:
        print("False")


if __name__ == '__main__':
    solve()

MC0251 小码哥锻炼

#include <bits/stdc++.h>

using namespace std;
#define int long long

int n;
const vector<int> W = {1, 3, 7, 13};

void solve() {
    cin >> n;
    vector<int> dp(n + 1);
    for (int i = 0; i <= n; i++) {
        int temp = INT_MAX;
        for (const auto&w: W) {
            if (i - w >= 0) {
                temp = min(temp, dp[i - w]);
            }
        }
        if (temp != INT_MAX) {
            dp[i] = temp + 1;
        }
    }
    cout << dp[n] << endl;
}

auto main() -> signed {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);

    solve();
    return 0;
}

MC0240 小码哥和假期堵车

def solve():
    n, t = map(int, input().split())
    arr: list[int] = list(map(int, input().split()))
    day = 1
    for it in arr:
        diff = 1440 - it
        if diff >= 60:
            t -= diff
        if t <= 0:
            break
        day += 1
        
    print(day)


if __name__ == '__main__':
    solve()

MC0252 小码哥的数字游戏

def solve():
    n, m = map(int, input().split())
    T = int(input())
    mark = [[False for _ in range(m)] for _ in range(n)]

    for i in range(n):
        line = list(map(int, input().split()))
        for j in range(m):
            if line[j] <= T:
                mark[i][j] = True

    R = float("inf")
    C = float("inf")

    def dfs():
        nonlocal R, C
        x1, y1, x2, y2 = n, m, -1, -1
        for i in range(n):
            for j in range(m):
                if mark[i][j]:
                    x1 = min(x1, i)
                    y1 = min(y1, j)
                    x2 = max(x2, i)
                    y2 = max(y2, j)
        R = min(R, x2 - x1 + 1)
        C = min(C, y2 - y1 + 1)

    dfs()
    print(R)
    print(C)


if __name__ == '__main__':
    solve()
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值