首页 > 其他分享 >牛客周赛 Round 63

牛客周赛 Round 63

时间:2024-10-14 19:51:43浏览次数:15  
标签:cnt int tt ++ cin 牛客 63 include Round

总体思路:

        A签到、B小思维、C bfs(),注意需要和初始位置的值相同、D数学(找规律) E,F待补,比赛时打的暴力

 A

代码:

#include<bits/stdc++.h>

using namespace std;

string a;

int main()
{
    cin >> a;
    if(a.size() != 2)
    {
        cout << "No" << endl;
        return 0;
    }
    if(a[0] != a[1]) cout << "No" << endl;
    else cout << "Yes" << endl;
    
    return 0;
}

B

思路:

         初始状态不是回文数,修改一个数后的状态是回文数,那么初始状态有且仅有一对数不相等

代码:

#include<bits/stdc++.h>
 
using namespace std;
 
const int N = 1050;
int a[N], n, k;
int res = 0, cnt = 0;
 
int main()
{
    cin >> n >> k;
    for(int i = 0; i < n; i ++ ) cin >> a[i];
     
    for(int i = 0; i < n; i ++ )
    {
        int t = i + k;
        if(t > n) break;
        for(int l = i, r = t - 1; l < r; l ++, r --  )
            if(a[l] == a[r])
                cnt += 2;//记录相同的对数
                
        //判断是否有且仅有一对数不满足
        //奇数时中间的数单列,则特殊处理
        if(k % 2)
        {
            if(cnt + 3 == k)
                res ++ ;
        }
        else
        {
            if(cnt + 2 == k)
                res ++ ;
        }
        cnt = 0;
    }
     
    cout << res << endl;
}

C

思路:

        简单的BFS

代码:

#include<bits/stdc++.h>
 
using namespace std;
 
const int N = 105;
typedef pair<int, int> PII;
 
int a[N][N];
int n, m;
int t;
queue<PII> q;
 
 
bool bfs(int fin )
{    //表示向右,与向下
    int dx[2] = {0, 1}, dy[2] = {1, 0};
    q.push({0, 0});
     
    while(q.size())
    {
        auto tt = q.front();
        if(tt.first == n - 1 && tt.second == m - 1 )
            return true;
        q.pop();
         
        for(int i = 0; i < 2; i ++ )
        {
            int x = tt.first + dx[i], y = tt.second + dy[i];
            if(x < n && y < m && a[x][y] == fin)
                q.push({x, y});
        }
    }
     
    return false;
}
 
int main()
{
    cin >> t;
    while(t -- )
    {
        cin >> n >> m;
         
        for(int i = 0; i < n; i ++ )
            for(int j = 0; j < m; j ++ )
                cin >> a[i][j];
        int fin = a[0][0];
        
        if(bfs(fin)) cout << "Yes" << endl;
        else cout << "No" << endl;
        //清空
        while(q.size()) q.pop();
    }
     
    return 0;
}


D

思路:

        只要满足等于x即可,那么我们可以找规律去凑数。既然是要凑数,那么先凑1为主

代码:

#include<bits/stdc++.h>
 
using namespace std;
 
int main()
{
    int x;
    cin >> x;
    int t = 1 - x;
    if(x == 1) //因为我是1为主,对x == 1时a[1][2] == 0,不符题意,则特殊处理
    {
        printf("2 1 1\n2 2 1\n1 1 1\n");
        return 0;
    }
    printf("2 1 1\n1 1 %d\n1 1 1", t);
     
    return 0;
}


 

标签:cnt,int,tt,++,cin,牛客,63,include,Round
From: https://blog.csdn.net/2301_80358171/article/details/142927080

相关文章

  • 牛客AB33.相差不超过k的最多数 (滑动窗口) 牛客.DP最长公共子序列牛客.春游主持人调度
    目录牛客AB33.相差不超过k的最多数 (滑动窗口) 牛客.DP最长公共子序列牛客.春游主持人调度(二)牛客AB33.相差不超过k的最多数 (滑动窗口) 和之前那个空调吹风属于一道题的类型,当然滑动窗口,最大值-最小值,然后<=p即可也可以双指针来取寻找最大值和最小值impor......
  • CD63:早期诊断和精准治疗的冉冉新星
    前 言CD63也被称为溶酶体相关膜蛋白3(LAMP3),属于四次跨膜蛋白超家族成员,与细胞的活化、黏附、变异及肿瘤的侵袭、转移等有关。CD63是外泌体特异性标志蛋白,为新型药物递送及靶向外泌体提供契机,还可作为肿瘤的潜在标志物(如卵巢癌、肺癌等)。研究人员利用重组CD63蛋白开发多种适配......
  • codeforces round 977 (div.2) C2(访问set的第一个元素,观察数据规律-出现次序,用set记
    解题历程:我首先想到的是等效法,每一次操作可以等效为每次将第一个人抽出放入一组,后面的人往前移,而该组的人就是可以任意放置的人,当b中后面再出现与前一个相同的人时,就不进行操作,当b中出现不同的人时,就看看这组中有没有这个人,有的话就下一个循环,没有的话就看看这个新的人是否按a中......
  • 刷c语言练习题8(牛客网)
    1、如果有inta=5,b=3,在执行!a&&b++;后a和b的值分别是()A、5,3B、0,1C、0,3D、5,4答案:A解析:按照优先级顺序,先计算!a,得到0。由短路法则,b++不进行计算,又!a并没有改变a的值,所以a和b的值分别是5,3,选择选项A。2、以下程序的输出结果是()1234567main(){     ......