当前位置: 首页 > news >正文

河南理工XCPC萌新选拔赛

A 树之荣荣 青梅熙熙

树之荣荣 青梅熙熙
这个题是一个经典的博弈问题。我们可以考虑一种情况,就是你每一次都会取一个。那么最后一个你肯定不能取。所以我们可以考虑减去一个后的值。判断它的和是奇数还是偶数即可。

  int n; cin >> n;
  int s = 0;
  for (int i = 1; i <= n; i ++) 
  {
    int x; cin >> x;
    s += x - 1;
  }
  if (s & 1)
  {
    cout << "shuai";
  }
  else cout << "tian";

B 夏蝉鸣鸣 两心惶惶

夏蝉鸣鸣 两心惶惶
这个题目当时打的时候没有认真看题。错了好多次。轻敌了。下次一定要认真看题目。
这个题的话主要是考了一个字符储存的问题。注意要倒着对这个字符进行更新。记录一下最后一个字符,最后把第一个字符赋给它即可。
下面是代码。

#include <bits/stdc++.h>
using namespace std;
using i64 = long long;
constexpr int N = 1e3 + 10;

int g[N][N];

struct node
{
    int op, c;
} a[N];

void solve()
{
    int n, m, x, y;
    cin >> n >> m >> x >> y;
    for (int i = 1; i <= n; i++)
    {
        for (int j = 1; j <= m; j++)
        {
            char ch;
            cin >> ch;
            g[i][j] = ch - 'a';
        }
    }

    int p, q;
    cin >> p >> q;

    for (int k = 1; k <= q; k++)
    {
        int op, c;
        cin >> op >> c;
        a[k].op = op, a[k].c = c;
    }
    while (p --)
    for (int k = 1; k <= q; k++)
    {
        int op = a[k].op, c = a[k].c;
        if (op == 1)
        {
            int u = g[c][m];
            for (int i = m; i >= 1; i--)
            {
                g[c][i] = g[c][i - 1];
            }
            g[c][1] = u;
        }
        else
        {
            int u = g[n][c];
            for (int i = n; i >= 1; i--)
            {
                g[i][c] = g[i - 1][c];
            }
            g[1][c] = u;
        }
    }

    cout << char('a' + g[x][y]);
    return;
}

signed main()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    int t = 1;
    // cin >> t;
    while (t--)
    {
        solve();
    }
    return 0;
}

C 田垄恹恹 我心难言

田垄恹恹 我心难言
这个题目我们对 n == 1 和 n == 2 的情况进行特判一下。如果 n == 1 的话很容易知道肯定不可以成立的。对于n == 2 的情况。
1 2 2 1
1 2 这种情况也是不可以的。1 2 这种情况就是去掉 1 或者 2 都行。所以答案是 1
那么对于 n == 3 的时候我们可以玩一下样例就知道
1 2 3
1 2 3 这种情况,就是 1。我们取 2 2 就行了。
1 3 2
1 2 3 这种情况 2 2,也是 1。所以我们判断这两种情况是 1,其他的话,我们可以证明 2 次一定可以完成。你总是可以找到一组满足条件。可以自己玩一下数字看看。
代码


    int n;
    cin >> n;
    vector<int> a(n + 1);
    vector<int> b(n + 1);
    for (int i = 1; i <= n; i++)
        cin >> a[i];
    for (int i = 1; i <= n; i++)
        cin >> b[i];
    if (n == 1)
    {
        cout << -1 << "\n";
        return ;
    }
    else if (n == 2)
    {
        bool flag = true;
        for (int i = 1; i <= n; i ++)
        if (a[i] != b[i]) flag = false;
        if (flag) 
        {
            cout << -1 << "\n";
            return ;
        }
    }
    int ans;
    bool flag = false;
    for (int i = 1; i <= n; i++)
    {
        if ((a[i] == b[i] && i != n && i != 1) || a[i] == b[i + 1] || a[i] == b[i - 1])
            flag = true;
    }
    if (flag)
        ans = 1;
    else
        ans = 2;
    cout << ans << "\n";

D 淇水汤汤 渐车帷裳

淇水汤汤 渐车帷裳
这个题就跟着题目模拟就行了。感觉没有什么好说的。看代码吧。

    int n, m;
    cin >> m >> n;
    for (int i = 0; i < m; i++)
    {
        for (int j = 0; j < n; j++)

            cin >> g[i][j];
    }
    char s;
    int x, y, k;
    cin >> x >> y >> s >> k;
    char tow = s;
    while (k--)
    {
        // cout << x << " " << y << "\n";
        if (tow == 'U')
        {
            y -= 1;
        }
        else if (tow == 'D')
        {
            y += 1;
        }
        else if (tow == 'L')
        {
            x -= 1;
        }
        else
        {
            x += 1;
        }
        if (tow == 'U')
        {
            if (g[x][y])
            {
                tow = 'R';
                g[x][y] = 0;
            }
            else
            {
                tow = 'L';
                g[x][y] = 1;
            }
        }
        else if (tow == 'D')
        {
            if (g[x][y])
            {
                tow = 'L';
                g[x][y] = 0;
            }
            else
            {
                tow = 'R';
                g[x][y] = 1;
            }
        }
        else if (tow == 'L')
        {
            if (g[x][y])
            {
                tow = 'U';
                g[x][y] = 0;
            }
            else
            {
                tow = 'D';
                g[x][y] = 1;
            }
        }
        else
        {
            if (g[x][y])
            {
                tow = 'D';
                g[x][y] = 0;
            }
            else
            {
                tow = 'U';
                g[x][y] = 1;
            }
        }
    }
    cout << x << " " << y;

F 执子之手 与子偕老

执子之手 与子偕老
我们找一下十万以内和甜美互质的数即可。gcd 是一个求最大公倍数的函数。

    int n; cin >> n;
    int ans = 0;
    for (int i = 2; i <= 100000; i ++)
    {
        if (__gcd(i, n) == 1) ans ++;
    }
    cout << ans;

H 子兴视夜 明星有烂

子兴视夜 明星有烂
这个直接让 m / n 即可。因为 c/c++ 是向下取整,所以直接除以即可。

    int n, m; cin >> n >> m;
    cout << m / n;

I 无思远人 劳心怛怛

无思远人 劳心怛怛
背一下诗就好了。哈哈,考试的时候没看题就瞎做,还错了一次。逆天。

    string s1 = "床前明月光";
    string s2 = "疑是地上霜";
    string s3 = "举头望明月";
    string s4 = "低头思故乡";
    
    string s; cin >> s;
    if (s == s1) cout << s2;
    if (s == s2) cout << s1;
    if (s == s3) cout << s4;
    if (s == s4) cout << s3;

相关文章:

  • SEO长尾词优化进阶法则
  • 【3天快速入门WPF】11-附加属性
  • 绪论(3)
  • AtCoder Beginner Contest 001(A - 積雪深差、B - 視程の通報、C - 風力観測、D - 感雨時刻の整理)题解
  • 如何通过Python网络爬虫技术应对复杂的反爬机制?
  • 物联网同RFID功能形态 使用场景的替代品
  • Mac OS Homebrew更换国内镜像源(中科大;阿里;清华)
  • 数据结构秘籍(四) 堆 (详细包含用途、分类、存储、操作等)
  • 【C++】ImGui:极简化的立即模式GUI开发
  • 【数据挖掘】Matplotlib
  • Java零基础入门笔记:(7)异常
  • 【Redis学习】Redis Docker安装,自定义config文件(包括RDB\AOF setup)以及与Spring Boot项目集成
  • 【漫话机器学习系列】112.逻辑回归(Logistic Regression)
  • 使用Node.js搭配express框架快速构建后端业务接口模块Demo
  • 批量提取 Word 文档中的页面
  • leetcode 238. 除自身以外数组的乘积
  • nginx的作用和应用场景
  • WINCC 第三方控件Industrial Gadgets ActiveX Product Family的使用方法
  • 计算机毕业设计SpringBoot+Vue.js贸易行业CRM系统(源码+文档+PPT+讲解)
  • 记录一次MySQL的分库分表行为
  • 如何对自己做的php网站加密/直播营销
  • 在网站做博客/营销推广策略有哪些
  • 阳春做网站公司/关键词排名方法
  • 用html制作网站流程/本网站三天换一次域名
  • 静态网站建设的流程/网络营销课程大概学什么内容
  • 做暧视频网站大全/百度关键词挖掘