2023 SMU RoboCom-CAIP 选拔赛
前言
更详细题解可以参考咱学长的(
A. 小斧头

f_k 表示满足条件的j = k 的(i,j)对的数量.如上图中第四行即为f1至f5的元素,f1 = 1即有(1,1)满足条件,f2 = 2即有(1,2),(2,2)满足条件,后面同理,然后要找到一个last_k,即表示k开始向前和向后a数组或b数组最大值发生改变的地方.
得出f_k = last_k + (b[k] >= a[k]) * (k - last_k)
last_k可以用单调栈求出.

#include <map>
#include <set>
#include <cmath>
#include <queue>
#include <stack>
#include <cstdio>
#include <vector>
#include <climits>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>
#define inf 0x3f3f3f3f
#define endl '\n'
#define int long long using namespace std; const int N = 1e5 + 10, mod = 1e9 +7; //typedef long long ll;
typedef pair<int,int> PII;
//queue<PII> q1;
map<vector<int>, int > mp;
//priority_queue <int,vector<int>,greater<int> > q2;
int n,m,t,k;
/*
*/
int ans;
void solve()
{
cin >> n;
vector<int> a(n + 1), b(n + 1), c(n + 1),f(n + 1);
for (int i = 1; i <=n ; ++i) {
cin >> a[i];
}
for (int i = 1; i <= n ; ++i) {
cin >> b[i];
}
for (int i = 1; i <= n ; ++i) {
c[i] = max(a[i], b[i]);
}
stack<int> stk1, stk2;
int lst;
for (int i = 1; i <= n ; ++i) {
while(!stk1.empty() && a[i] > c[stk1.top()])
stk1.pop();
while(!stk2.empty() && b[i] > c[stk2.top()])
stk2.pop();
if(b[i] >= a[i]){
if(stk2.empty())
lst = 0;
else
lst = stk2.top();
f[i] = f[lst] + i - lst;
}
else{
if(stk1.empty())
lst = 0;
else
lst = stk1.top();
f[i] = f[lst];
}
ans += f[i];
stk1.push(i);
stk2.push(i);
}
// for(auto i : f)
// cout << i << ' ';
// cout << endl;
cout << ans << endl;
return ;
}
signed main()
{
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
int Ke_scholar = 1;
//cin >> Ke_scholar ;
while(Ke_scholar--)
solve();
return 0;
}
B. 能不能整除?
蒟蒻只会40分做法,学长的有一百分做法(不过咱没看懂QAQ

40分:就是去统计一下每种A[i] / A[j]出现的次数
#include <bits/stdc++.h>
#define endl '\n'
#define int long long
#define inf 0x3f3f3f3f using namespace std;
const int N = 2e3 + 10; //typedef long long ll;
typedef pair<int,int> PII;
//queue<PII> q1;
map<int, int > mp;
int n,m,t,k;
int c;
priority_queue <int,vector<int>,greater<int> > C;
/*
*/
int mod,ans;
vector<int> a;
void solve()
{
cin >> n >> t >> mod;
for(int i = 0;i < n;i ++){
int x;
cin >> x;
a.push_back(x);
}
for(auto i : a){
for(auto j : a)
mp[i / j] ++;
}
for(auto [i,j] : mp){
if(mp.find(t - i) != mp.end()){
ans = (ans + j % mod * (mp.find(t - i)->second % mod)) % mod;
}
}
cout << ans << endl;
}
signed main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);cout.tie(nullptr);
int Ke_scholar = 1;
//cin >> Ke_scholar;
while(Ke_scholar--)
solve();
return 0;
}
C. 又是一道构造题
实际上就是构造的矩阵中每一个元素是a,b数组中的公因数,构造完后再对该矩阵每行每列的乘积判断一下,不合理直接输出-1退出即可.

#include <map>
#include <set>
#include <cmath>
#include <queue>
#include <cstdio>
#include <vector>
#include <climits>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>
#define inf 0x3f3f3f3f
#define endl '\n'
#define int long long using namespace std; const int N = 2e4 + 10, mod = 1e9 +7; //typedef long long ll;
typedef pair<int,int> PII;
//queue<PII> q1;
map<vector<int>, int > mp;
vector<int> a,b;
//priority_queue <int,vector<int>,greater<int> > q2;
int n,m,t,k;
/**/
int ans; void solve()
{
a.clear();
b.clear();
ans = 0;
cin >> n >> m;
vector<vector<int> > ma(n,vector<int>(m,0));
for(int i = 0;i < n; i++){
int x;
cin >> x;
a.push_back(x);
}
for(int i = 0;i < m;i ++){
int x;
cin >> x;
b.push_back(x);
}
auto g = a;
auto gg = b;
for(int i = 0;i < n;i ++){
for(int j = 0;j < m;j ++){
int x = __gcd(a[i],b[j]);
a[i] /= x;
b[j] /= x;
ma[i][j] = x;
}
}
for(int i = 0;i < n;i ++){
int c = 1;
for(int j = 0;j < m;j ++){
c *= ma[i][j];
}
if(c != g[i]){
cout << -1 << endl;
return ;
}
}
for(int i = 0;i < m;i ++){
int c = 1;
for(int j = 0;j < n;j ++){
c *= ma[j][i];
}
if(c != gg[i]){
cout << -1 << endl;
return ;
}
}
for(auto i : ma){
for(auto j : i){
cout << j << ' ';
}
cout << endl;
}
}
signed main()
{
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
int Ke_scholar = 1;
cin >> Ke_scholar ;
while(Ke_scholar--){
solve();
cout << endl;
}
return 0;
}
2023 SMU RoboCom-CAIP 选拔赛的更多相关文章
- 2016中国大学生程序设计竞赛 - 网络选拔赛 C. Magic boy Bi Luo with his excited tree
Magic boy Bi Luo with his excited tree Problem Description Bi Luo is a magic boy, he also has a migi ...
- 2016 ccpc 网络选拔赛 F. Robots
Robots Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Subm ...
- Codevs 2296 仪仗队 2008年省队选拔赛山东
2296 仪仗队 2008年省队选拔赛山东 时间限制: 1 s 空间限制: 256000 KB 题目等级 : 大师 Master 题解 题目描述 Description 作为体育委员,C君负责这次运动 ...
- Codevs 2449 骑士精神 2005年省队选拔赛四川
2449 骑士精神 2005年省队选拔赛四川 时间限制: 1 s 空间限制: 128000 KB 题目等级 : **大师 Master** 题目描述 Description 在一个5×5的棋盘上有12 ...
- JSU省赛队员选拔赛个人赛1(Coin Change、Fibbonacci Number、Max Num、单词数、无限的路、叠筐)
JSU省赛队员选拔赛个人赛1 一.题目概述: A.Coin Change(暴力求解.动态规划) B.Fibbonacci Number(递推求解) C.Max Num(排序.比较) D.单词数 ...
- 2013 CSU校队选拔赛(1) 部分题解
A: Decimal Time Limit: 1 Sec Memory Limit: 128 MB Submit: 99 Solved: 10 [ Submit][ Status][ Web ...
- 1630/2023: [Usaco2005 Nov]Ant Counting 数蚂蚁
2023: [Usaco2005 Nov]Ant Counting 数蚂蚁 Time Limit: 4 Sec Memory Limit: 64 MBSubmit: 85 Solved: 40[S ...
- 「LOJ2000~2023」各省省选题选做
「LOJ2000~2023」各省省选题选做 「SDOI2017」数字表格 莫比乌斯反演. 「SDOI2017」树点涂色 咕咕咕. 「SDOI2017」序列计数 多项式快速幂. 我们将超过 \(p\) ...
- HDU 2023 求平均成绩
Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Status Practice HDU ...
- HDU 6447 - YJJ's Salesman - [树状数组优化DP][2018CCPC网络选拔赛第10题]
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6447 Problem DescriptionYJJ is a salesman who has tra ...
随机推荐
- 技嘉BIOS超频设置操作路径
关闭超线程 频率电压控制 > 进阶处理器设置 > Hyper_THreading 关小核心 频率电压控制 > GIGABYTE PerfDrive > Ecore Disabl ...
- mysql在把子查询结果作为删除表中数据的条件,mysql不允许在子查询的同时删除原表数据
在上一文中发布了多表删除指定记录,发现达不到我想要的效果,找了很多资料,发现以下方法. 数据库不能边查询边删除, 尝试以下操作 delete from push_msg_overview where ...
- HarmonyOS SDK助力中国建设银行探索金融领域创新场景
今年年初,中国建设银行(以下简称建行)手机银行首批适配HarmonyOS NEXT,并高效实现其应用的核心功能迁移.同时,建行手机银行在HarmonyOS SDK的加持下,充分发挥鸿蒙原生应用在原生智 ...
- NXP i.MX 8M Mini工业级核心板规格书(四核ARM Cortex-A53 + 单核ARM Cortex-M4,主频1.6GHz)
1 核心板简介 创龙科技SOM-TLIMX8是一款基于NXP i.MX 8M Mini的四核ARM Cortex-A53 + 单核ARM Cortex-M4异构多核处理器设计的高端工业级核心板,AR ...
- ElasticSearch不区分字母大小写搜索
0.停止使用该索引的服务(避免新加了数据没备份) 1.备份filesearch索引(检查备份的索引和原索引数据条数是否一致) 1 POST http://127.0.0.1:9200/_reindex ...
- ELK日志缺失问题排查-多行日志聚合Logstash配置问题
1. 背景 推荐系统的推荐请求追踪日志,通过ELK收集,方便遇到问题时,可以通过唯一标识sid来复现推荐过程 最近在碰到了几个bad case,需要通过sid来查询推荐日志,但发现部分无法在kiban ...
- Vue2 整理(一):基础篇
前言 首先说明:要直接上手简单得很,看官网熟悉大概有哪些东西.怎么用的,然后简单练一下就可以做出程序来了,最多两天,无论Vue2还是Vue3,就都完全可以了,Vue3就是比Vue2多了一些东西而已,所 ...
- Idea 2020.1 编译SpringBoot项目Kotlin报错
导读 今天公司有个项目莫名其妙的运行不起来,提示Kotlin版本兼容问题,网上找到解决方案后,整理下来. 错误信息 Error:Kotlin: Module was compiled with an ...
- 松灵机器人scout mini小车 自主导航(2)——仿真指南
松灵机器人Scout mini小车仿真指南 之前介绍了如何通过CAN TO USB串口实现用键盘控制小车移动.但是一直用小车测试缺乏安全性.而松灵官方贴心的为我们准备了gazebo仿真环境,提供了完整 ...
- 【算法】在vue3的ts代码中分组group聚合源数据列表
有一个IList<any>()对象列表, 示例数据为[{id:'1',fieldName:'field1',value:'1'},{id:'1',fieldName:'field2',va ...