首页 > 其他分享 >Japan Registry Services (JPRS) Programming Contest 2023 (AtCoder Beginner Contest 324) 赛后总结

Japan Registry Services (JPRS) Programming Contest 2023 (AtCoder Beginner Contest 324) 赛后总结

时间:2023-10-17 22:14:05浏览次数:43  
标签:AtCoder Beginner Contest int pos long str ind size

Japan Registry Services (JPRS) Programming Contest 2023 (AtCoder Beginner Contest 324) 赛后总结

可悲的是:我没来得及写题解。

T1 Same

秒切。

直接输入排一遍序再遍历即可。

#include <bits/stdc++.h>

using namespace std;

int n, a[101];

int main() {
  cin >> n;
  for (int i = 1; i <= n; i++) {
    cin >> a[i];
  }
  sort(a + 1, a + n + 1);
  for (int i = 2; i <= n; i++) {
    if (a[i] != a[i - 1]) {
      cout << "No";
      return 0;
    }
  }
  cout << "Yes";
  return 0;
}

T2 3-smooth Numbers

秒切。

直接暴力枚举。

注意:long long

#include <bits/stdc++.h>

using namespace std;

long long n;

int main() {
  cin >> n;
  unsigned long long sum1 = 1;
  for (int x = 0; x <= 64; x++, sum1 *= 2) {
    unsigned long long sum2 = 1;
    for (int y = 0; y <= 40; y++, sum2 *= 3) {
      if (sum1 * sum2 == n) {
        cout << "Yes";
        return 0;
      }
    }
  }
  cout << "No";
  return 0;
}

T3 Error Correction

赛时第一发出了一个很(好听的话)的问题,还好调出来了。

分 3 类讨论:

  • s.size() == t.size() && t == s
  • t.size() == s.size() - 1
  • t.size() == s.size() + 1
  • t.size() == s.size() && t != s
#include <bits/stdc++.h>

using namespace std;

const int MAXN = 5e5 + 10;

int n, ans, a[MAXN];
string s;
string str[MAXN];

bool check(int ind) {
  if (str[ind].size() == s.size() && str[ind] == s) {
    return 1;
  }
  if (str[ind].size() == s.size() + 1) {
    int pos = -1;
    for (int i = 0; i < s.size(); i++) {
      if (s[i] != str[ind][i]) {
        pos = i;
        break;
      }
    }
    if (pos == -1) {
      return 1;
    }
    string s1 = s.substr(pos), s2 = str[ind].substr(pos + 1);
    return (s1.size() == s2.size() && s1 == s2);
  } else if (str[ind].size() == s.size() - 1) {
    int pos = -1;
    for (int i = 0; i < s.size() - 1; i++) {
      if (s[i] != str[ind][i]) {
        pos = i;
        break;
      }
    }
    if (pos == -1) {
      return 1;
    }
    string s1 = s.substr(pos + 1), s2 = str[ind].substr(pos);
    return (s1.size() == s2.size() && s1 == s2);
  } else if (str[ind].size() == s.size()) {
    int cnt = 0;
    for (int i = 0; i < s.size(); i++) {
      if (s[i] != str[ind][i]) {
        cnt++;
      }
    }
    return cnt == 1;
  }
  return 0;
}

int main() {
  cin >> n >> s;
  for (int i = 1; i <= n; i++) {
    cin >> str[i];
    if (check(i)) {
      a[++ans] = i;
    }
  }
  cout << ans << '\n';
  for (int i = 1; i <= ans; i++) {
    cout << a[i] << ' ';
  }
  return 0;
}

T4 Square Permutation

赛时第一发没判前导零,导致 WA 了好多,第二发过了。

枚举平方数,但是是平方数的平方根。

注意:可能有前导 0。

#include <bits/stdc++.h>

using namespace std;

int n;
long long ans;
string s;
int cnt[10], cnt2[10];

int main() {
  cin >> n >> s;
  for (int j = 0; j < n; j++) {
    cnt2[s[j] - '0']++;
  }
  for (int i = 0; 1ll * i * i <= 9999999999999ll; i++) {
    long long x = 1ll * i * i;
    fill(cnt, cnt + 10, 0);
    for (; x; x /= 10) {
      cnt[x % 10]++;
    }
    bool flag = 0;
    for (int j = 0; j < 10; j++) {
      if ((j && cnt[j] != cnt2[j]) || (!j && cnt[j] > cnt2[j])) {
        flag = 1;
        break;
      }
    }
    ans += !flag;
  }
  cout << ans;
  return 0;
}

标签:AtCoder,Beginner,Contest,int,pos,long,str,ind,size
From: https://www.cnblogs.com/codehyx-blog/p/sum-up-abc324.html

相关文章

  • 比赛总结:Japan Registry Services (JPRS) Programming Contest 2023 (AtCoder Beginn
    比赛:JapanRegistryServices(JPRS)ProgrammingContest2023(AtCoderBeginnerContest324)A-same1.常规方法intmain(){ intn; cin>>n; vector<int>s(n);//利用vector容器可以不需要确定内存大小 for(auto&n:s) { cin>>n; } for(inti=0;i......
  • AtCoder Regular Contest 066 F Contest with Drinks Hard
    洛谷传送门AtCoder传送门下文令\(a\)为原题中的\(T\)。考虑若没有饮料,可以设\(f_i\)表示,考虑了前\(i\)道题,第\(i\)道题没做的最大得分。转移就枚举上一道没做的题\(j\),那么\([j+1,i-1]\)形成一个连续段。设\(b_i\)为\(a_i\)的前缀和,可得:\[f_i=\max\li......
  • [Leetcode Weekly Contest]367
    链接:LeetCode[Leetcode]2903.找出满足差值条件的下标I给你一个下标从0开始、长度为n的整数数组nums,以及整数indexDifference和整数valueDifference。你的任务是从范围[0,n-1]内找出2个满足下述所有条件的下标i和j:abs(i-j)>=indexDifference且a......
  • Atcoder Regular Contest 167
    卡B下大分了,怎么回事呢。A.ToastsforBreakfastParty发现题意是让方差尽可能小,就是让\(A\)里的值尽可能接近。所以从小到大排个序,把\(A_{N,\dots,N-M+1}\)依次放进\(1,2,\dots,M\),再把\(A_{N-M,\dots,1}\)依次放进\(M,M-1,\dots,2M-N+1\)就赢了。B.Productof......
  • AtCoder Beginner Contest 324
    在高铁上加训!A-Same(abc324A)题目大意给定\(n\)个数,问是否都相等。解题思路判断是不是全部数属于第一个数即可。或者直接拿set去重。神奇的代码#include<bits/stdc++.h>usingnamespacestd;usingLL=longlong;intmain(void){ios::sync_with_stdio(f......
  • 【题解】AtCoder-ARC167
    AtCoder-ARC167AToastsforBreakfastParty一定不会有空盘,问题转化成\(2m\)个数,其中\(2m-n\)个是\(0\),这样一定是最大值和最小值一起,次大值和次小值一起,以此类推。提交记录:Submission-AtCoderAtCoder-ARC167BProductofDivisors\(A^B=\prod_ip_i^{Bc_i}\),那么答案......
  • AtCoder Beginner Contest 180 F Unbranched
    洛谷传送门AtCoder传送门首先进行一个容斥,把连通块最大值\(=K\)变成\(\leK\)的方案数减去\(\leK-1\)的方案数。考虑dp,设\(f_{i,j}\)表示当前用了\(i\)个点,\(j\)条边。转移即枚举其中一个连通块的大小\(k\)。为了不算重,我们强制让这个连通块包含点\(1\),类......
  • AtCoder Beginner Contest 324
    D-SquarePermutation须知:最大的平方数的平方一定小于等于10n,平方数最多为10(n/2)(因为再大会越界)因为要求的数一定是原数的排列组合,所以它们的元素和对应的元素个数一定相同所以只要判断平方数的字符串是否与原字符串相等即可(这里可以利用排序判断)点击查看代码#include<bi......
  • AtCoder Beginner Contest 324 DF题题解
    比赛链接D-SquarePermutation其实比较简单,但是比赛时候脑子不转了,竟然在尝试枚举全排列,然后算了一下复杂度直接不会做了。正解应该是枚举完全平方数,底数枚举到\(sqrt(10^{14})\)即可,因为n最大为13。然后统计一下这个完全平方数各个数字出现了多少个,和读入的比较一下是......
  • Atcoder Beginner Contest 324 F Beautiful Path 题解-分数规划
    为了更好的阅读体验,请点击这里分数规划小技巧:尽可能将式子写成存在某种取值,使得不等式成立的形式。不然可能需要绕几个弯才能想出来。题目链接题目大意:给出一个DAG,每条边有一个\(b_i,c_i\),保证从编号小的边向编号大的边连边,且\(1\)到\(n\)必有路径,求\(1\)到\(n\)......