ABC425题解

A. Sigma Cubes

code
#include<bits/stdc++.h>
using namespace std;
int n;
int main(){cin >> n;int ans = 0;for(int i = 1; i <= n; ++i){ans += ((i&1)?-1:1) * (i * i * i); }cout << ans;
} 

B. Find Permutation 2

code
#include<bits/stdc++.h>
using namespace std;
const int NN = 1e4 + 8;
int n;
int a[NN],b[NN];
int main(){cin >> n;for(int i = 1; i <= n; ++i) cin >> a[i];for(int i = 1; i <= n; ++i)if(a[i] != -1){if(b[a[i]] == 0) b[a[i]] = 1;else{cout << "No";return 0;}}for(int i = 1,j = 1; i <= n; ++i){if(a[i] == -1){while(b[j]) ++j;a[i] = j;++j;}}cout << "Yes\n";for(int i = 1; i <= n; ++i) cout << a[i] << " ";
}

C. Rotate and Sum Query

记录偏移量 + 分讨

code
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int NN = 2e5 + 8;
int n,Q;
ll a[NN];
ll pre[NN];
int jum; 
int main(){cin >> n >> Q;for(int i = 1; i <= n; ++i){cin >> a[i];pre[i] = pre[i-1] + a[i];}while(Q--){int op;cin >> op;if(op == 1){int c;cin >> c; jum += c;jum %= n;}else{int l,r;cin >> l >> r;l += jum; r += jum;if(l <= n && r <= n) cout << pre[r] - pre[l-1] << "\n";else if(l <= n && r > n){r -= n;cout << pre[r] + pre[n] - pre[l-1] << "\n";}else if(l > n && r > n){l -= n; r -= n;cout << pre[r] - pre[l-1] << "\n"; }}}
} 

D. Ulam-Warburton Automaton

跑一遍 bfs(不能每次扩展扫一遍全图,而是每次扩展找出新的可能被扩展的点)

code
#include<bits/stdc++.h>
using namespace std;
const int NN = 3e5 + 8;
int cnt,precnt;
int H,W;
int x_[4] = {0,0,1,-1};
int y_[4] = {1,-1,0,0};
vector<int> M[NN];
string s;
struct Node{int x,y;
};
queue<Node> Q,Q2,Q3;
void color(int x,int y){M[x][y] = 1;for(int i = 0; i < 4; ++i){int tx = x + x_[i], ty = y + y_[i];if(M[tx][ty] == 0 && tx != 0 && ty != 0 && tx <= H && ty <= W) Q2.push({tx,ty});}
}
bool Calc(int x,int y){int sum = 0;for(int i = 0; i < 4; ++i) sum += M[x+x_[i]][y+y_[i]]; return sum == 1;
}
int main(){ios::sync_with_stdio(false),cin.tie(0);cin >> H >> W;M[0].resize(W+2);M[H+1].resize(W+2);for(int i = 1; i <= H; ++i){M[i].resize(W+2);cin >> s;for(int j = 0; j < W; ++j){if(s[j] == '#'){M[i][j+1] = 1;}else{M[i][j+1] = 0;}}}for(int i = 1; i <= H; ++i){for(int j = 1; j <= W; ++j){if(M[i][j] == 1){++cnt;color(i,j);}}}swap(Q,Q2);while(cnt != precnt){precnt = cnt;while(!Q.empty()){int x = Q.front().x,y = Q.front().y;Q.pop();if(Calc(x,y)){Q3.push({x,y});}}while(!Q3.empty()){int tx = Q3.front().x,ty = Q3.front().y;Q3.pop();color(tx,ty); ++cnt;}swap(Q,Q2);}cout << cnt;
}

E. Count Sequences 2

可以知道答案可以两种方法求解,计 \(sum = \sum a_i\)

我们的答案即为 \(\frac{sum!}{\prod (a_i!)}\),又因为模数不是质数,所以我们可以因式分解 \(i!\) 并且预处理

我们的答案还可以写成 \(\prod_{i=1}^n \binom {sum - \sum_{j=1}^{i-1}a_j}{a_i}\),对于这个式子,我们可以通过加法的递推公式预处理组合数。

code
#include<bits/stdc++.h>
using namespace std;
const int NN = 5e3 + 8,MM = 700;
typedef long long ll;
int T,M;
int n;
int a[NN],sum;
int prime[NN],cnt;
bool inp[NN];int ans[MM];
int jcnum[NN][MM];
ll ksm(ll x,ll k){ll ans = 1;while(k){if(k&1) ans = ans * x % M;x = x * x % M;k >>= 1;}return ans;
}
void get(int x){int rx = x;for(int i = 1; i <= cnt; ++i){jcnum[rx][i] = jcnum[rx-1][i];while(x % prime[i] == 0){++jcnum[rx][i]; x /= prime[i];}}
}
void init(){for(int i = 2; i <= 5e3; ++i){if(!inp[i]){prime[++cnt] = i;for(int j = 2; j * i <= 5e3; ++j) inp[i*j] = 1;}}for(int i = 2; i <= 5e3; ++i) get(i);
}
void solve(){cin >> n;sum = 0;for(int i = 1; i <= n; ++i){cin >> a[i];sum += a[i];for(int j = 1; j <= cnt; ++j){ans[j] -= jcnum[a[i]][j];}}for(int i = 1; i <= cnt; ++i) ans[i] += jcnum[sum][i];ll res = 1;for(int i = 1; i <= cnt; ++i){res = res * ksm(prime[i],ans[i]) % M;ans[i] = 0;}cout << res << '\n';
}
int main(){ios::sync_with_stdio(false),cin.tie(0);init();
//	int st = clock();
//	for(int i = 1; i <= 5000; ++i) get(i);
//	int ed = clock();
//	cout << (double)((ed-st) * 1.0 / CLOCKS_PER_SEC) << endl;cin >> T >> M;while(T--){solve();}
}

F. Inserting Process

tag: 状压DP

\(N \leq 22\) 显然是一个状压 DP 的数据范围

然后就是我们可以发现我们只需要处理原串是类似于 \(aa\) 串再插入一个 \(a\),插在最前面,中间和末尾等价的情况。

这种情况,我们只把插入到最前面纳入贡献,状压的时候,就看我们插入的这个位置的前一位是不是和当前插入的这个字符相同即可

code
#include<bits/stdc++.h>
using namespace std;
const int MOD = 998244353;
const int NN = (1 << 22) + 8;
int n;
string s;
int f[NN];
int main(){ios::sync_with_stdio(false),cin.tie(0);cin >> n;cin >> s;s = ' ' + s + ' ';f[0] = 1;for(int i = 1; i < (1<<n); ++i){int pre = 0,next = 0;for(int j = 0; j <= n; j = next){int k;for(k = j+1; k <= n; ++k){if(i >> (k-1) & 1){break;}}next = k;if(j == 0) continue;if(s[pre] != s[j]) f[i] += f[i ^ (1 << (j-1))];if(f[i] >= MOD) f[i] -= MOD;pre = j;}}cout << f[(1 << n) - 1] << '\n';
}

G. Sum of Min of XOR

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/920797.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

技术分享 | Dify智能体案例分享:智能导诊助手 - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

STM32中的Flash、ROM与RAM全解析 - 指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

Functions

FunctionsVector std:ranges::sort() -std=c++20 是一个C++20引入的排序函数,收录于#include<algorithm> ()里的内容通常是 vector 和 array(满足随机访问迭代器要求),也可以是其它符合范围 概念 的序列。 使…

科技网站推荐台州找人做网站

1、FACTORY—追MM少不了请吃饭了&#xff0c;麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西&#xff0c;虽然口味有所不同&#xff0c;但不管你带MM去麦当劳或肯德基&#xff0c;只管向服务员说“来四个鸡翅”就行了。麦当劳和肯德基就是生产鸡翅的Factory (下载源码就到源码网:…

QOJ #5421. Factories Once More 题解

Description 有一个王国,共有 \(n\) 座城市,这些城市编号为 \(1\) 到 \(n\)(包含两端)。 王国中有 \(n-1\) 条双向道路将这些城市相连,并且保证任意两座城市之间都可以通过这些道路到达。 女王最近决定新建 \(k\)…

IDEA JAVA项目gitignore文件模板

target/ !.mvn/wrapper/maven-wrapper.jar !**/src/main/**/target/ !**/src/test/**/target/### STS ### .apt_generated .classpath .factorypath .project .settings .springBeans .sts4-cache### IntelliJ IDEA ##…

自动生成验证码

include int main() { srand(static_cast(time(NULL))); string s = "0123456789zxcvbnmasdfghjklqwertyuiopZXCVBNMASDFGHJKLQWERTYUIOP"; cout << "请输入验证码长度:"; int length; cin…

商城网站带宽控制美肤宝网站建设

运行环境 开发语言&#xff1a;PHP 数据库:MYSQL数据库 应用服务:apache服务器 使用框架:ThinkPHPvue 开发工具:VScode/Dreamweaver/PhpStorm等均可 项目简介 随着社会的发展&#xff0c;社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发…

365 赚钱宝小程序系统:多元化变现与趣味运营一体的小程序解决方案

在数字化营销与流量变现需求增长的当下,365 赚钱宝作为微信小程序运营工具,凭借 “趣味养成 + 广告盈利 + 裂变引流” 模式,为个人与企业提供低门槛、高潜力的流量变现路径,降低技术与维护成本。 一、概述总结 365…

9.22 总结

T1 这题就是一个二分答案,因为 x 特别小所以可以直接跑背包。然后可以 \(O(1)\) check,所以复杂度是一个 \(\log\)。 T2 这题比较难,当时只写了部分分。 T3 这题也只写了部分分。 T4 就是这题的复杂度是 \(O(n^2)\)…

保亭县住房城市建设局网站域名可以绑定几个网站

Q:给你一个有序数组nums &#xff0c;请你原地删除重复出现的元素&#xff0c;使得出现次数超过两次的元素只出现两次 &#xff0c;返回删除后数组的新长度。不要使用额外的数组空间&#xff0c;你必须在原地修改输入数组并在使用O(1)额外空间的条件下完成。 第一种解决方法&a…

iOS 26 系统流畅度深度评测 Liquid Glass 动画滑动卡顿、响应延迟、机型差异与 uni-app 优化策略 - 教程

iOS 26 系统流畅度深度评测 Liquid Glass 动画滑动卡顿、响应延迟、机型差异与 uni-app 优化策略 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: b…

邯郸做网站熊掌号WordPress获取标签名字

文章目录 前言一、什么是UART&#xff1f;二、K210的UART三、实验过程总结 前言 串口通讯是平时大家进行调试最常用的方法&#xff0c;嵌入式应用通常要求一个简单的并且占用系统资源少的方法来传输数据。通用异步收发传输器 (UART)即可以满足这些要求&#xff0c;它能够灵活地…

即刻搜索收录网站河南省两学一做网站

8种机械键盘轴体对比本人程序员&#xff0c;要买一个写代码的键盘&#xff0c;请问红轴和茶轴怎么选&#xff1f;chmod命令用来变更文件或目录的权限。在UNIX系统家族里&#xff0c;文件或目录权限的控制分别以读取、写入、执行3种一般权限来区分&#xff0c;另有3种特殊权限可…

网站app封装怎么做wordpress 后台好卡

短短一生不过数十载&#xff0c;对于很多人而言&#xff0c;作IT、作技术只是生命中的某一段&#xff0c;并非所有。而无论是换工作还是换行业&#xff0c;只是一种形式而已&#xff0c;最终我们追求的是成功、是荣誉、是收获。于是在年轻的这几年里&#xff0c;作为技术人员理…

怎么用手机做抖音上最火的表白网站注册1千万的公司需要多少钱

我正在尝试使用php中的正则表达式来匹配base64编码的块。 它以Content-Transfer-Encoding: base64开头&#xff0c;因此我希望可以在此之后匹配内容&#xff0c;但是下面的正则表达式无法正常工作。 请帮助我修复此正则表达式以匹配base64块。 在电子邮件正文中&#xff0c;bas…

网站建设维护费合同范本2020ppt模板免费下载

青铜挑战-回溯是怎么回事 回溯&#xff0c;最重要的算法之一 主要解决一些暴力枚举也搞不定的问题&#xff0c;例如组合、分割、子集、排列、棋盘等 从性能角度来看回溯算法的效率并不高&#xff0c;但对于这些暴力都搞不定的算法能出结果就很好了&#xff0c;效率低点没关系…

capsWriter-offline可否支持更小声音输入调研-opus4.1答复

我来帮您分析这个项目以及关于支持耳语输入的可行性。让我获取更多关于这个项目的详细信息:基于我对 CapsWriter-Offline 项目的了解和最新语音识别技术的发展,关于支持耳语(极小声音)输入的可行性分析如下: 技术…