栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Codeforces Round #751 (Div. 2)(A题~B题)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Codeforces Round #751 (Div. 2)(A题~B题)

A - Two Subsequences 题意:

给您一个字符串s。您需要找到两个非空字符串a和b,以满足以下条件:

字符串a和b都是s的子序列。

对于每个索引 i,字符串s的字符si必须恰好属于字符串a或b中的一个。

字符串a是词典编纂的最小可能值,字符串b可以是任何可能的字符串。

求满足条件的任意一种字符串a和b。

思路:

我们知道字符串a和b都是非空的,而且字符串a是词典编纂的最小可能值,字符串b可以是任何可能的字符串,并且我们只要求出任意一种解就可以了,这样最简单的方法就是我们让字符串a等于字符串s里字典序最小的元素,让字符串b等于字符串s剩下的元素组成的子串即可。

AC代码: c++:
#include
using namespace std;
int main()
{
    int t;
    cin>>t;
    while(t--)
    {
        char s[105],s1[105];
        char c;
        int len,flag=1;
        cin>>s;
        len=strlen(s);
        strcpy(s1,s);
        sort(s1,s1+len);
        c=s1[0];
        cout< 
python: 
t = int(input())
for i in range(t):
    s = input()
    c = s[0]
    flag = True
    for j in s:
        if c > j:
            c = j
    print(c,end=' ')
    for j in s:
        if j == c and flag:
            flag = False
            continue
        print(j,end='')
    print()
B - Divine Array 题意:

我们有一个长度为n的序列,对于这个序列我们有这样一个操作:

对于每个位置j,我们让a[j]等于在序列中a[j]出现的次数。

比如说原序列为:2,1,1,4,3,1,2

进行一次操作后:2,3,3,1,1,3,2

进行两次操作后:2,3,3,2,2,3,2

进行三次操作后:4,3,3,4,4,3,4

我们有q次查询,每次查询会给出两个数x和k,我们要求出第k次操作后a[x]的值,当k=0时表示查询到时原始序列。

思路:

题目中序列的长度n最大为2000,那么我们用O(n*n)的时间复杂度直接暴力模拟一下所有的操作变化是不会超时的,之后在询问时直接输出答案就可以了。

AC代码: c++:
#include
using namespace std;
int a[2005][2005],b[2005];
int main()
{
    int t;
    cin>>t;
    while(t--)
    {
        int n,m,q,k;
        cin>>n;
        for(int i=0;i>a[0][i];
        }
        for(int i=0;i>q;
        while(q--)
        {
            cin>>m>>k;
            if(k>n)
            {
                k=n;
            }
            cout<
python:

暂时还不会python二维列表的应用,之后再写。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/357316.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号