KYOCERA Programming Contest 2021(AtCoder Beginner Contest 200)E

news/2024/12/22 20:10:51/

首先考虑n^2的做法那就是

for(int i = 1; i <= 3; i++){
for(int j = 1; j <= 3 * n; j++){
for(int k = 1; k <= n; k++){
dp[i][j + k] += dp[i - 1][j];

我们从中可以看出 当 j = 1的时候他对所有 j + 1 ~ j + n 那么 j = 2 就对 j + 2 ~ j + n + 1是有贡献的
所以我们只需求一个前缀和 即可

#include<iostream>using namespace std;const int N = 3e6 + 10;
typedef long long ll;ll dp[4][N],dp2[4][N];int main(){ll n,m;cin >> n >> m;dp[0][0] = 1;for(int j = 1; j <= n; j++){dp[1][j] = 1;}for(int j = 1; j <= 3 * n; j++){dp2[1][j] = dp2[1][j - 1] + dp[1][j];}for(int i = 2; i <= 3; i++){for(int j = 1; j <= 3 * n; j++){dp[i][j] += dp2[i - 1][j - 1];if(j >= n + 1){dp[i][j] -= dp2[i - 1][j - n - 1];}}for(int j = 1; j <= 3 * n; j++){dp2[i][j] = dp2[i][j - 1] + dp[i][j];}}ll x;for(int i = 3; i <= 3 * n; i++){if(m <= dp2[3][i]){m -= dp2[3][i - 1];x = i;break;}}for(int i = 1; i <= n; i++){ll minn = max(1ll,x - i - n);ll maxn = min(n,x - i - 1);if(minn > maxn) continue;if(m > maxn - minn + 1){m -= maxn - minn + 1;continue;}ll y = minn + m - 1;ll z = x - i - y;cout << i << " " << y << " " << z << endl;return 0;}return 0;
}

http://www.ppmy.cn/news/913618.html

相关文章

KYOCERA Programming Contest 2021(AtCoder Beginner Contest 200)

KYOCERA Programming Contest 2021&#xff08;AtCoder Beginner Contest 200&#xff09; A - CenturyB - 200th ABC-200C - Ringos Favorite Numbers 2D - Happy Birthday! 2E - Patisserie ABC 2 导读&#xff1a; 简单的题目&#xff0c;只说明题意&#xff0c;或者直接说明…

60道Linux面试题 ,让面试官无言以对

以下是Linux面试题目&#xff0c;答案一个个整理出来很麻烦&#xff0c;所以直接答案可以查看这里即可&#xff1a; http://www.yayihouse.com/yayishuwu/chapter/3629 1、Linux 软中断和工作队列的作用是什么?2、Linux 通过什么方式实现系统调用?3、linux如何唯一标识一个…

Hadoop 之 单机部署和测试(一)

Hadoop单机部署和测试 一.单机部署1.安装 JDK&#xff08;JDK11&#xff09;2.安装 HADOOP3.测试 一.单机部署 系统版本&#xff1a;cat /etc/anolis-release1.安装 JDK&#xff08;JDK11&#xff09; #!/bin/bashTOP_PATH$(pwd) JAVA_PATH/usr/local/java FILEls $TOP_PATH/…

Android 系统开发工具

Android 系统开发工具 1、SSH 服务与 Tabby Terminal1.1 配置 Ubuntu ssh 服务 2、Samba 服务器搭建3、Idegen Android Studio 查看源码3.1 修改android.iml文件 (可选) 4、AIdegen Android Studio 查看源码4.1 准备工作4.2 Android Studio 配置4.2.1 添加源码中的 jdk 和 sd…

Python代码样例列表

扫描左上角二维码&#xff0c;关注公众账号 数字货币量化投资&#xff0c;回复“Python例子”&#xff0c;获取以下600个Python经典例子源码 ├─algorithm│ Python用户推荐系统曼哈顿算法实现.py│ NFA引擎,Python正则测试工具应用示例.py│ Python datetime…

[iOS笔试600题]二、常识篇(共有72题)

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号&#xff1a;山青咏芝&#xff08;shanqingyongzhi&#xff09;➤博客园地址&#xff1a;山青咏芝&#xff08;https://www.cnblogs.com/strengthen/ &#xff09;➤GitHub地址&…

Java面试题(自己不会的查大佬的贴,持续记录中)

目录 1.Java运算符优先级... 9 2.HTML&#xff0c;JS&#xff0c;CSS的区别... 10 1、HTML—Hypertext Markup Language. 10 2、CSS—Cascading Style Sheet 10 3、JavaScript 10 3.从输入URL到网页呈现的过程... 10 TCP/IP请求... 11 三次握手的步骤&#xff1a;&…

python代码示例-Python代码样例列表

├─algorithm │ Python用户推荐系统曼哈顿算法实现.py │ NFA引擎,Python正则测试工具应用示例.py │ Python datetime计时程序的实现方法.py │ python du熊学斐波那契实现.py │ python lambda实现求素数的简短代码.py │ Python localtime()方法计算今天是一年中第几…