首页 > 其他分享 >「题解」Codeforces Round 883 (Div. 3)

「题解」Codeforces Round 883 (Div. 3)

时间:2023-10-05 19:56:53浏览次数:39  
标签:883 q1 return int 题解 ll long Div scanf

A. Escalator Conversations

Problem

[题目](Rudolph and Cut the Rope)

Sol & Code

绳子长度大于钉子高度的要剪

#include <bits/stdc++.h>

typedef long long ll;

int min(int a, int b) { return a < b ? a : b; }
int max(int a, int b) { return a > b ? a : b; }

int T, n;

int main() {
  scanf("%d", &T);
  while (T--) {
    scanf("%d", &n);
    int a, b, ans = 0;
    for (int i = 1; i <= n; ++i) {
      scanf("%d %d", &a, &b);
      if (a > b) ++ans;
    }
    printf("%d\n", ans);
  }
  return 0;
}

B. Rudolph and Tic-Tac-Toe

Problem

题目

Sol & Code

签到。

#include <bits/stdc++.h>

typedef long long ll;

int min(int a, int b) { return a < b ? a : b; }
int max(int a, int b) { return a > b ? a : b; }

int T;
std::string s[4];

bool solve(char c) {
  for (int i = 1; i <= 3; ++i) {
    for (int j = 0; j < 3; ++j) {
      if (s[i][j] != c) break;
      if (j == 2) return true;
    }
  }
  for (int j = 0; j < 3; ++j) {
    for (int i = 1; i <= 3; ++i) {
      if (s[i][j] != c) break;
      if (i == 3) return true;
    }
  }
  if (s[1][0] == s[2][1] && s[1][0] == s[3][2] && s[1][0] == c) return true;
  if (s[1][2] == s[2][1] && s[1][2] == s[3][0] && s[1][2] == c) return true;
  return false;
}

int main() {
  scanf("%d", &T);
  while (T--) {
    std::cin>>s[1];
    std::cin>>s[2];
    std::cin>>s[3];
    if (solve('O')) puts("O");
    else if (solve('X')) puts("X");
    else if (solve('+')) puts("+");
    else puts("DRAW");
  }
  return 0;
}

C. Rudolf and the Another Competition

Problem

题目

Sol & Code

签到

但是我爆 \(int\) 了

#include <bits/stdc++.h>
#define N 200001

typedef long long ll;

int min(int a, int b) { return a < b ? a : b; }
int max(int a, int b) { return a > b ? a : b; }

int T, n, m, h, a[N];
struct qwq {
  int p, id;
  ll c;
  friend bool operator < (qwq q1, qwq q2) {
    if (q1.p == q2.p) {
      if (q1.c == q2.c) return q1.id < q2.id;
      return q1.c < q2.c;
    }
    return q1.p > q2.p;
  }
}rk[N];

int main() {
  scanf("%d", &T);
  while (T--) {
    scanf("%d %d %d", &n, &m, &h);
    for (int i = 1; i <= n; ++i) {
      rk[i].id = i, rk[i].p = 0, rk[i].c = 0;
      for (int j = 1; j <= m; ++j) scanf("%d", &a[j]);
      std::sort(a + 1, a + m + 1);
      for (int j = 1; j <= m; ++j) {
        a[j] += a[j - 1];
        if (a[j] <= h) ++rk[i].p, rk[i].c += a[j];
        else break;
      }
    }
    std::sort(rk + 1, rk + n + 1);
    for (int i = 1; i <= n; ++i) {
      if (rk[i].id == 1) { printf("%d\n", i); break; }
    }
  }
  return 0;
}

D. Rudolph and Christmas Tree

Problem

题目

Sol & Code

从上向下算面积处理重复即可。

#include <bits/stdc++.h>
#define N 200001

typedef long long ll;

int min(int a, int b) { return a < b ? a : b; }
int max(int a, int b) { return a > b ? a : b; }

int T, n, d, h, a[N];

int main() {
  scanf("%d", &T);
  while (T--) {
    scanf("%d %d %d", &n, &d, &h);
    for (int i = 1; i <= n; ++i) scanf("%d", &a[i]);
    int last = 2147483647;
    double ans = 0;
    for (int i = n; i >= 1; --i) {
      if (a[i] + h > last) {
        double bili = 1.0 * (a[i] + h - last) / h;
        ans += (1.0 - bili * bili) * d * h / 2.0;
      } else ans += 1.0 * d * h / 2.0;
      last = a[i];
    }
    printf("%0.7lf\n", ans);
  }
  return 0;
}

E1. Rudolf and Snowflakes (simple version)

Problem

题目

Sol & Code

雪花是一颗深度大于 \(2\) 的满 \(k\) 叉树,因节点总数 \(n\) 很小,可以暴力判断。

#include <bits/stdc++.h>

typedef long long ll;

int min(int a, int b) { return a < b ? a : b; }
int max(int a, int b) { return a > b ? a : b; }

ll n;
int T;

int main() {
  scanf("%d", &T);
  while (T--) {
    scanf("%lld", &n);
    bool okay = false;
    for (ll i = 2; i < n; ++i) {
      if (i * i + i + 1 > n) break;
      if (i * i + i + 1 == n) { okay = true; break; }
      if (n - 1)
    }
    puts(okay ? "YES" : "NO");
  }
  return 0;
}

标签:883,q1,return,int,题解,ll,long,Div,scanf
From: https://www.cnblogs.com/poi-bolg-poi/p/17743821.html

相关文章

  • 「题解」Codeforces Round 888 (Div. 3)
    A.EscalatorConversationsProblem题目Sol&Code签到#include<bits/stdc++.h>typedeflonglongll;intmin(inta,intb){returna<b?a:b;}intmax(inta,intb){returna>b?a:b;}intT,n,m,k,h;intmain(){scanf(......
  • 「题解」Codeforces Round 891 (Div. 3)
    A.ArrayColoringProblem题目Sol&Code只有数列的和为偶数时才符合要求,即有任意个偶数,偶数个奇数。将这些数分成两部分,发现两部分初始值\(0\)为偶数,偶数不会影响奇偶性,故需要偶数个奇数。#include<bits/stdc++.h>#defineN51typedeflonglongll;intmin(inta,......
  • P9712 「QFOI R1」贴贴 の 题解
    这道题比较典型。大概就是你先输出solution-,之后再处理其他的。之后遍历字符串,如果发现是大写,就给转成小写,之后输出,如果发现是减号,就输出字符串,都不是就直接输出该字符串的第\(i\)个字符。#include<iostream>#include<string>usingnamespacestd;strings;intlen;int......
  • 实现文档AI搜索,提高问题解决效率
    在当今的数字时代,以AI为动力的文档搜索变得越来越重要。随着在线提供信息的指数增长,传统的搜索方法通常效率低下且耗时。实施文档AI搜索可以显著提高搜索相关文档的效率和有效性。|在网站中实施文档AI搜索的好处很多首先,它通过提供无缝且直观的搜索过程来增强用户体验。借助文档AI......
  • 【基环树 | 题解】P5022 [NOIP2018 提高组] 旅行
    前言一日知基环树弱,固补题。关于基环树基环树定义一个环,环上每个点都有一颗以该点为根的树,如下图为一棵基环树关于基环树常规思路通常来说基环树常规思路是先处理环上树的结果,后通过树的结果来处理换上结果。具体处理方式依照题目来定。然而只是通常来说因为基环树的问......
  • CF1249(Div. 3) 题解(A to D)
    \(\texttt{EF}\)忘(不)记(会)写了。AYetAnotherDividingintoTeams题解题目大意有一个长度为\(n\)的序列\(a_1,a_2,\cdots,a_n\),将他们分为若干组,使得每一组没有两个数的差为\(1\),使分的组数尽可能少。解题思路排完序后对于任意\(1\lei<n\)均有\(a_i\)与\(a_{i......
  • Luogu CF1174C 题解
    这道题其实不难。\(\gcd(i,j)=1\),其实就是\(i\)与\(j\)互质。如果\(i\)与\(j\)不互质,那么我们一定要让\(a_i\)与\(a_j\)相同,只有这样,才能使\(a\)序列中的最大值最小化。所以,我们可以使用埃氏筛法,当筛到质数时,给它和它的倍数都赋值为一个新数。ACCode:#include......
  • Luogu P8651 题解
    这是让我最崩溃的一道橙题了。整整11次提交才AC。这道题有几个要点必须注意:判断日期是否合理。按顺序输出。判断重复的日期。首先,我们来看怎么判断日期是否合理。我们知道大月有\(31\)天,小月有\(30\)天,二月看平年闰年。所以,我们可以写出这样的代码:boolc......
  • Luogu CF1469B 题解
    这道题其实并不难。题目大意是这样的:已知两个序列\(r\)和\(b\),求出合并后的最大前缀和。很好发现:答案就是\(r\)和\(b\)各自的最大前缀和之和。但要注意:\(r\)和\(b\)可以什么都不取,因此\(maxa\)和\(maxb\)初始要赋值为\(0\)。ACCode:#include<iostream>using......
  • Luogu CF755B 题解
    这题其实不难。两人最佳的方案就是先说对方会的词。不难证明,设先手会说\(n\)个单词,后手会说\(m\)个单词,若\(n>m\),则先手胜,若\(n<m\),则后手胜。那如果\(n=m\)呢?假设两人都会说的单词数为\(k\),那么一番推理发现,当两人说了\(k-1\)次,就没有两人都会的词了,可以回到之......