首页 > 其他分享 >Acwing.第119场周赛

Acwing.第119场周赛

时间:2023-09-03 19:44:13浏览次数:42  
标签:周赛 thirty int twenty ninety 方格 字符串 119 Acwing

可惜这场比赛没打,去操场溜达去了哈哈哈哈
比赛链接

A 字符串还原

有一个由小写字母构成的字符串 b是通过以下方法生成的:
首先,构造一个由小写字母构成的长度不少于 2的字符串 a。
然后,按照从左到右的顺序,将字符串 a的所有长度为 2的子串拼接在一起,构成字符串 b。
例如,如果字符串 a为 abac,那么其所有长度为 2的子串从左到右依次为 ab、ba、ac,将它们拼接在一起,构成的字符串 b为 abbaac。
现在,给定构造好的字符串 b,请你还原出字符串 a。
可以证明,此问题的答案是唯一的。
输入格式
第一行包含整数 T,表示共有 T组测试数据。
每组数据占一行,包含一个由小写字母构成的字符串 b。
输入保证给定的字符串 b 一定是按照题目所述方法生成的。
输出格式
每组数据输出一行结果,一个字符串,表示字符串 a。
数据范围
前 3个测试点满足 1≤T≤10。
所有测试点满足 1≤T≤1000,2≤|b|≤100。

A思路:

这个题其实就是一个模拟,只要想通了就明白了,我们组成的字符串b字符重复地方是要做取舍的,如果有两个字符一样且是挨着的,那么我们只需要取其中一个就可以了。

A代码:

#include<bits/stdc++.h>
using namespace std;
void solve(){
    string a;
    cin>>a;
    for(int i=0;i<a.size();i++){
        if(i%2==0){
            cout<<a[i];
        }
        else{
            if(a[i]!=a[i+1]){
                cout<<a[i];
            }
            else{
                continue;
            }
        }
    }
    cout<<endl;

}
int main(){
    int t;
    cin>>t;
    while(t--){
        solve();
    }
    return 0;
}

B 英文数字

给定一个小于 100 的非负整数 n,请输出其对应的英文写法。
关于数字的具体英文单词不再赘述,需注意的是:当一个数在 [21,99]范围内时,如果末位不为 0,则用来描述该数的两个单词需要用 - 连接,例如 twenty-one(21)、thirty-two(32)、ninety-nine(99)等等。

B思路:

我靠,这不就是一个巨麻烦的模拟吗???开个字符串数组打表就行了。

B代码:

#include <iostream>

using namespace std;
string s[] = {"zero", "one","two","three","four","five","six","seven","eight","nine","ten","eleven","twelve","thirteen","fourteen","fifteen","sixteen","seventeen","eighteen","nineteen","twenty","twenty-one","twenty-two","twenty-three","twenty-four","twenty-five","twenty-six","twenty-seven","twenty-eight","twenty-nine","thirty","thirty-one","thirty-two","thirty-three","thirty-four","thirty-five","thirty-six","thirty-seven","thirty-eight","thirty-nine","forty","forty-one","forty-two","forty-three","forty-four","forty-five","forty-six","forty-even","forty-eight","forty-nine","fifty","fifty-one","fifty-two","fifty-three","fifty-four","fifty-five","fifty-six","fifty-seven","fifty-eight","fifty-nine","sixty","sixty-one","sixty-two","sixty-three","sixty-four","sixty-five","sixty-six","sixty-seven","sixty-eight","sixty-nine","seventy","seventy-one","seventy-two","seventy-three","seventy-four","seventy-five","seventy-six","seventy-seven","seventy-eight","seventy-nine","eighty","eighty-one","eighty-two","eighty-three","eighty-four","eighty-five","eighty-six","eighty-seven","eighty-eight","eighty-nine","ninety","ninety-one","ninety-two","ninety-three","ninety-four","ninety-five","ninety-six","ninety-seven","ninety-eight","ninety-nine"};
int main()
{
    int n; cin >> n;
    cout << s[n];
    return 0;
}

C 同色环

查看图片或题目
有一个 n×m的方格矩阵,每个方格都有一种颜色。
颜色最多不超过 26种,我们将使用不同的大写英文字母来表示不同的颜色。
你的任务是在矩阵中找到一个规模不小于 4的同色环。
也就是说,请你在矩阵中找到 k个不同的方格,要求它们能够同时满足:
k≥4
k个方格的颜色相同。
将这 k个方格按某种顺序编号为 1∼k后,能够满足方格 1与方格 2相邻、方格 2与方格 3相邻、…、方格 k−1与方格 k相邻、方格 k与方格 1相邻。如果两个方格存在公共边,则称两个方格相邻。
请你判断,在给定矩阵中是否存在满足条件的同色环。

C思路:

好好好,一眼就是求连通块的问题。

C代码:

#include<bits/stdc++.h>
using namespace std;
const int N=55;
char a[N][N];
bool f[N][N];
int dx[4]={-1,0,1,0};
int dy[4]={0,1,0,-1};

int n,m;
bool dfs(int x,int y,int x1,int y1,int cnt){
    if(x==x1&&y==y1&&cnt>=4){
        return true;
    }
    for(int i=0;i<4;i++){
        int x2=x1+dx[i];
        int y2=y1+dy[i];
        if(x2<1||x2>n||y1<1||y2>m){
            continue;
        }
        if(a[x2][y2]!=a[x1][y1]){
            continue;
        }
        if(f[x2][y2]){
            continue;
        }
        f[x2][y2]=true;
        if(dfs(x,y,x2,y2,cnt+1)){
            return true;
        }
        f[x2][y2]=false;

    }
    return false;
    
}
void solve(){
    cin>>n>>m;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            cin>>a[i][j];
        }
    }
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            memset(f,false,sizeof f);

            bool flag=dfs(i,j,i,j,1);
            if(flag){
                cout<<"Yes"<<endl;
                return ;
            }
        }
    }
    cout<<"No"<<endl;
    return ;
}
int main(){
    int t;
    // cin>>t;
    t=1;
    while(t--){
        solve();
    }
    return 0;
}

标签:周赛,thirty,int,twenty,ninety,方格,字符串,119,Acwing
From: https://www.cnblogs.com/du463/p/17675426.html

相关文章

  • 【AcWing 3713】不同的子序列——动态规划(2019年南京大学考研机试题)
    给定一个字符串\(S\)和一个字符串\(T\),请问共有多少个\(S\)的不同的子序列等于\(T\)。输入格式第一行包含整数\(Q\),表示共有\(Q\)组测试数据。每组数据第一行包含字符串\(S\),第二行包含字符串\(T\)。输出格式每组数据输出一行,一个结果,由于结果可能很大,因此输出其......
  • AcWing - 闫氏DP分析法
    核心思想:从集合角度来分析DP问题在我们遇到的DP问题中,一般都是求在一个有限集内的最值,但是这些方案数量一般都是指数级别的,想要一个一个查找出来不太可能。所以DP方法是用来优化这种寻找最优方案的过程的。DP问题一般来说分析时都要经过两个阶段:状态表示(化零为整):指把一些具有......
  • C-小美的01串翻转_牛客周赛 Round 9
    链接:https://ac.nowcoder.com/acm/contest/63869/C来源:牛客网题目描述小美定义一个01串的权值为:每次操作选择一位取反,使得相邻字符都不相等的最小操作次数。例如,"10001"的权值是1,因为只需要修改一次:对第三个字符取反即可。现在小美拿到了一个01......
  • 第 360 场周赛 (二进制枚举、树上倍增)
    2833. 距离原点最远的点 本题要求最远的距离,所有‘_’必须全为左或全为右。利用前缀和的思想看看L多还是R多,最后加上_的数目就是答案。classSolution{public:intfurthestDistanceFromOrigin(stringmoves){intn=moves.size();inttt=0,l......
  • Acwing. 秋季每日一题
    Acwing.秋季每日一题活动链接A重复局面.国际象棋在对局时,同一局面连续或间断出现3次或3次以上,可由任意一方提出和棋。国际象棋每一个局面可以用大小为8×8的字符数组来表示,其中每一位对应棋盘上的一个格子。六种棋子王、后、车、象、马、兵分别用字母k、q、r、b、n、p......
  • Educational Codeforces Round 119
    今天只有3题,有点遗憾,D题几乎一眼切,但是时间不够,分类讨论没写完,vp结束几分钟后写出来。A题开始还以为要并查集,后面发现只有一个N不行B题漏写括号WA一发C题感觉不好写啊,因为直接计算可能会爆,所以要先从后往前,确定边界,然后就是跟普通的填数差不多,二分一下。又是找串,还得特别小心......
  • Acwing. 第 118 场周赛
    Acwing.第118场周赛比赛链接这几天开学了,一直在宿舍歇着来着,从下周一开始就要开始加训了!!!A题循环串:给定两个整数n,a,请你用前a个小写字母为循环节,构成一个无限长的循环字符串,然后输出该字符串的前n个字符。例如,当a=2时,循环字符串为ababab...,当a=3时,循环字符串为......
  • AcWing 875. 快速幂
    题目给定$n$组$a_i,b_i,p_i$,对于每组数据,求出${a_i}^{b_i}mod{p_i}$的值。输入格式第一行包含整数$n$。接下来$n$行,每行包含三个整数$a_i,b_i,p_i$。输出格式对于每组数据,输出一个结果,表示${a_i}^{b_i}mod{p_i}$的值。每个结果占一行。数据范围$1≤n≤100000,......
  • AcWing 873. 欧拉函数
    题目给定$n$个正整数$a_i$,请你求出每个数的欧拉函数。欧拉函数的定义$1∼N$中与$N$互质的数的个数被称为欧拉函数,记为$\varphi(N)$。若在算数基本定理中,$N={p_1}^{a_1}{p_2}^{a_2}...{p_m}^{a_m}$,则:$\varphi(n)=m(1-1/p_1)(1-1/p_2)...(1-1/p_k)$输入格式第......
  • AcWing 872. 最大公约数
    题目给定$n$对正整数$a_i,b_i$,请你求出每对数的最大公约数。输入格式第一行包含整数$n$。接下来$n$行,每行包含一个整数对$a_i,b_i$。输出格式输出共$n$行,每行输出一个整数对的最大公约数。数据范围$1≤n≤10^5,1≤a_i,b_i≤2×10^9$输入样例:23646输出样......