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 ...
随机推荐
- Pycharm创建的虚拟环境,使用命令行指定库的版本进行安装
Pycharm创建的项目,使用了虚拟环境,对库的版本进行管理:有些项目的对第三方库的版本 要求不同,可使用虚拟环境进行管理 直接想通过pip命令安装,直接看第3点 操作步骤: 1.找到当前项目的虚拟环 ...
- 用pm2命令管理你的node项目
文章目录 前言 安装 运行项目 pm2的命令 前言 我在服务器上运行node项目,使用命令nohup npm start &,结果关闭终端之后,进程就会停止,看来nohup也不是万能的后台运行 ...
- Java面试知识点(四)重写和重载
重写override 在 java 中有很多的继承,继承下来的有变量.方法.在有一些子类要实现的方法中,方法名.传的参数.返回值跟父类中的方法一样,但具体实现又跟父类的不一样,这时候我们就需要重写父类 ...
- Vim的移动大法
Vim的移动大法 移动光标的按键 "h" 向左移动 "j"向下移动 "k"向上移动 "l"向右移动 在单词之间移动 注: ...
- 机器学习(三)——K最临近方法构建分类模型(matlab)
K最临近(K-Nearest Neighbors,KNN)方法是一种简单且直观的分类和回归算法,主要用于分类任务.其基本原理是用到表决的方法,找到距离其最近的K个样本,然后通过K个样本的标签进行表决, ...
- ajax - 接口、表单、模板引擎
1. 今天继续ajax的一个学习,首先明确一个观念,接口,什么是接口,当使用ajax请求数据时,被请求的url就叫做数据接口也就是接口,注意每个接口必须有请求方式,这里有一个接口的测试工具,postm ...
- 复习-jQuery
咱就是说,发现了一个更好的方法每次把效果图制作成了一个gif,另外推荐个免费软件GIFcam很方便制作gif图,毕竟js是一门动态交互的语言对吧,没有动态的图那就是没有灵魂的所以以后就用这种方式来上传 ...
- mysql 授权远程连接
解决方案 改表法 可能是你的帐号不允许从远程登陆,只能在localhost.这个时候只要在localhost的那台电脑,登入mysql后,更改 "mysql" 数据库里的 &quo ...
- Java socket 获取gps定位
1.Java socket 获取gps定位的方法 在Java中使用Socket来直接获取GPS定位信息并不直接可行,因为GPS数据通常不是通过Socket通信来获取的.GPS数据通常由设备(如智能手机 ...
- Luogu P5745 区间最大和
原题链接:Luogu P5745 区间最大和 初看这道题,