首页 > 其他分享 >ABC179-AK记

ABC179-AK记

时间:2024-09-15 22:01:47浏览次数:1  
标签:pr int AK kMaxN ABC179 long using LL

vp 赛时 AK!

A - Plural Form

考虑直接判断字符串结尾

// BLuemoon
#include <bits/stdc++.h>

using namespace std;
using LL = long long;
using DB = double;

const int kMaxN = 2e5 + 5;

string s;

void pr(bool pr) {
  cout << (pr ? "Yes" : "No") << '\n';
}

int main() {
  cin >> s;
  cout << s << (s[s.size() - 1] == 's' ? "es" : "s") << '\n';
  return 0;
}

B - Go to Jail

考虑直接暴力判断

// BLuemoon
#include <bits/stdc++.h>

using namespace std;
using LL = long long;
using DB = double;

const int kMaxN = 1e2 + 5;

int n, a[kMaxN], b[kMaxN];
bool ans;

void pr(bool pr) {
  cout << (pr ? "Yes" : "No") << '\n';
}

int main() {
  cin >> n;
  for (int i = 1; i <= n; i++) {
    cin >> a[i] >> b[i];
  }
  for (int i = 2; i < n; i++) {
    if (a[i - 1] == b[i - 1] && a[i] == b[i] && a[i + 1] == b[i + 1]) {
      ans = 1;
      break;
    }
  }
  pr(ans);
  return 0;
}

C - A x B + C

考虑只要 \(A \times B < N\),就可以找到唯一存在的 \(C\)。

枚举 \(A\),找满足条件的 \(B\) 的数量。

// BLuemoon
#include <bits/stdc++.h>

using namespace std;
using LL = long long;
using DB = double;

const int kMaxN = 2e5 + 5;

int n;
LL ans;

void pr(bool pr) {
  cout << (pr ? "Yes" : "No") << '\n';
}

int main() {
  cin >> n;
  for (int i = 1; i <= n; i++) {
    ans += (n - 1) / i;
  }
  cout << ans << '\n';
  return 0;
}

D - Leaping Tak

考虑 dp。

令 \(dp_i\) 为到 \(i\) 个点的方案数。因为 \(k \le 10\),我们可以存下 \(dp\) 数组的前缀和,对于每个区间直接调用前缀和计算和即可

// BLuemoon
#include <bits/stdc++.h>

using namespace std;
using LL = long long;
using DB = double;

const int kMaxN = 2e5 + 5;
const LL kP = 998244353;

int n, k, l[kMaxN], r[kMaxN];
LL s[kMaxN], dp[kMaxN];
bitset<kMaxN> v;

void pr(bool pr) {
  cout << (pr ? "Yes" : "No") << '\n';
}

int main() {
  cin >> n >> k;
  for (int i = 1; i <= k; i++) {
    cin >> l[i] >> r[i];
  }
  dp[1] = s[1] = 1;
  for (int i = 2; i <= n; i++) {
    for (int j = 1; j <= k; j++) {
      (dp[i] += s[max(0, i - l[j])] - s[max(0, i - r[j] - 1)]) %= kP;
      (dp[i] += kP) %= kP;
    }
    s[i] = (s[i - 1] + dp[i]) % kP;
  }
  cout << dp[n] << '\n';
  return 0;
}

E - Sequence Sum

This

F - Simplified Reversi

考虑人类智慧

我们存下当前行/列会改到哪个点,直接更改答案即可,因为只有需要更新时才会进行 fill,所以时间复杂度为 \(O(n+q)\)

// BLuemoon
#include <bits/stdc++.h>

using namespace std;
using LL = long long;
using DB = double;

const int kMaxN = 2e5 + 5;

int n, q, r[kMaxN], c[kMaxN], f, L, R, op, g;
LL ans;

void pr(bool pr) {
  cout << (pr ? "Yes" : "No") << '\n';
}

int main() {
  for (cin >> n >> q, ans = 1ll * (n - 2) * (n - 2); q; q--) {
    (f == 0) && (fill(r + 1, r + n + 1, n), fill(c + 1, c + n + 1, n), f = 1, L = R = n);
    cin >> op >> g;
    if (op == 1) {
      (g < L) && (fill(r + g, r + L + 1, R), L = g), ans -= r[g] - 2;
    } else {
      (g < R) && (fill(c + g, c + R + 1, L), R = g), ans -= c[g] - 2;
    }
  }
  cout << ans << '\n';
  return 0;
}

标签:pr,int,AK,kMaxN,ABC179,long,using,LL
From: https://www.cnblogs.com/bluemoon-blog/p/18415750

相关文章

  • 使用fake-useragent库伪装请求头
    部分网站做了反爬虫机制,不允许程序访问网站的数据,而使用同一个useragent(用户代理)短时间爬取大量数据也可能被网站反爬虫程序识别。为了更好地模拟浏览器地工作,可以使用第三方库fake-useragent生成假的useragent字符串伪装浏览器,从而绕过一些网站的反爬虫措施。首先在命令行中输入......
  • 题解:AT_pakencamp_2019_day3_d パ研軍旗
    题意简述给定\(5\)行\(N\)列的网格,每个格子有四种可能的颜色。要使网格中每一列的颜色都一样但不能是黑色,并且相邻两列的颜色不相同。问最少改变多少个格子的颜色能满足要求。思路分析为方便处理,把给定的红色、蓝色、白色、黑色分别转成数字\(1,2,3,4\)。考虑dp。不妨......
  • 题解:AT_abc371_c [ABC371C] Make Isomorphic
    题目大意有两个简单无向图,你每一次可以给第二个图添上或去掉一条边,有相应花费,问将两个图变为同构最少需要花费多少钱。思路观察数据范围,可以发现NNN非常小,可以考虑枚......
  • CMake构建学习笔记16-使用VS进行CMake项目的开发D4
    目录*1.概论2.详论2.1创建工程2.2加载工程2.3配置文件:飞数机场2.4工程配置2.5调试执行3.项目案例4.总结1.概论在之前的系列博文中,我们学习了如何构建第三方的依赖库,也学习了如何去组建自己的CMake项目,尤其是学习了CMake的核心配置文件CMakeLists.txt如......
  • 《黑神话:悟空》游戏AkExpander.dll文件缺失,使用工具修复更快捷
    在Windows操作系统中,当遇到“黑神话:悟空”游戏中的AkExpander.dll文件丢失问题时,用户可能会经历游戏启动失败或运行中断的情况。这个DLL文件是游戏正常运行所必需的,缺失或损坏会导致关键功能无法执行,影响游戏体验。针对《黑神话:悟空》游戏中AkExpander.dll文件缺失的问题,您可......
  • Premake自动部署OpenGL项目
        很多朋友们在构建项目的时候应该都使用过CMake,在github和gitee的很多项目上面都能看到关于CMake的脚本。不过笔者认为,这东西有时候实在是过于繁重了,特别是这个构建的项目足够大的时候。在这里笔者为大家介绍一款轻量轻量化的软件Premake,它可以很方便构建visuals......
  • 【洛谷 P1596】[USACO10OCT] Lake Counting S 题解(深度优先搜索)
    [USACO10OCT]LakeCountingS题面翻译由于近期的降雨,雨水汇集在农民约翰的田地不同的地方。我们用一个的网格图表示。每个网格中有水(W)或是旱地(.)。一个网格与其周围的八个网格相连,而一组相连的网格视为一个水坑。约翰想弄清楚他的田地已经形成了多少水坑。给出约翰田地的示意图,......
  • CMake构建学习笔记16-使用VS进行CMake项目的开发
    目录1.概论2.详论2.1创建工程2.2加载工程2.3配置文件2.4工程配置2.5调试执行3.项目案例4.总结1.概论在之前的系列博文中,我们学习了如何构建第三方的依赖库,也学习了如何去组建自己的CMake项目,尤其是学习了CMake的核心配置文件CMakeLists.txt如何编写。长期以来,CMakeLis......
  • AKS (12) Application Gateway后端指向Azure AKS
    《WindowsAzurePlatform系列文章目录》 我们在使用AzureAKS的时候,会通过AzureApplicationGateway进行服务暴露,主要有三种实现方式:(1)通过AGIC(ApplicationGatewayIngressController)配置(2)AKS服务,通过NodePort暴露。然后ApplicationGateway后端......
  • while语句中的break和continue
    在while语句中,有着和if语句共有的存在,break和continue。他们在while语句中又扮演着什么样的角色?1.breakbreak的作用是用于终止循环的,在while循环中,只要有机会执行到break,不管后续可能还有多少次循环,循环都会终止。请看下面的代码:#include<stdio.h>intmain(){inti=1;w......