SMU 2024 spring 天梯赛1

7-1 种钻石 - SMU 2024 spring 天梯赛1 (pintia.cn)

#include <bits/stdc++.h>
#define debug(a) cout<<#a<<"="<<a<<'\n'; using namespace std;
using i64 = long long; typedef pair<i64, i64> PII; int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr); int n, v;
cin >> n >> v;
cout << n / v << '\n'; return 0;
}

7-2 1-1 输出金字塔图案 - SMU 2024 spring 天梯赛1 (pintia.cn)

   *
***
*****
*******
//PHP

7-3 强迫症 - SMU 2024 spring 天梯赛1 (pintia.cn)

#include <bits/stdc++.h>
#define debug(a) cout<<#a<<"="<<a<<'\n'; using namespace std;
using i64 = long long; typedef pair<i64, i64> PII; int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr); string n;
cin >> n;
if (n.size() < 6) {
if (n.substr(0, 2) < "22") {
n = "20" + n;
} else
n = "19" + n;
} cout << n.substr(0, 4) << '-' << n.substr(4) << '\n'; return 0;
}

7-4 小孩子才做选择,大人全都要 - SMU 2024 spring 天梯赛1 (pintia.cn)

注意点,一个空碗一个不为空时,这时都处于亏的状态,但是全都要不一定就代表一点也吃不到

#include <bits/stdc++.h>
#define debug(a) cout<<#a<<"="<<a<<'\n'; using namespace std;
using i64 = long long; typedef pair<i64, i64> PII; int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr); int x,y;
cin >> x >> y;
if(x > 0 && y > 0){
cout << max(x,y) << ' ' << x + y << "\n^_^";
}else if(x < 0 && y < 0) {
cout << "0 0\n-_-";
}else{
cout << max(x,y) << ' ' << max(0,x+y) << "\nT_T";
} return 0;
}

7-5 胎压监测 - SMU 2024 spring 天梯赛1 (pintia.cn)

模拟

#include <bits/stdc++.h>
#define debug(a) cout<<#a<<"="<<a<<'\n'; using namespace std;
using i64 = long long; typedef pair<i64, i64> PII; int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr); vector<int> lun(6);
for (auto &i : lun) cin >> i; int ma = lun[0];
for (int i = 0; i < 4; i ++)
ma = max(ma, lun[i]); int ck = -1,num = 0;
for(int i = 0;i < 4;i ++){
int x = abs(lun[i] - ma);
if(x > lun[5] || lun[i] < lun[4]){
num ++, ck = i;
}
}
if(!num){
cout << "Normal";
}else if(num == 1){
cout << "Warning: please check #" << ck + 1 << '!';
}else{
cout << "Warning: please check all the tires!";
} return 0;
}

7-6 吉老师的回归 - SMU 2024 spring 天梯赛1 (pintia.cn)

考察字符串

#include <bits/stdc++.h>
#define debug(a) cout<<#a<<"="<<a<<'\n'; using namespace std;
using i64 = long long; typedef pair<i64, i64> PII; int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr); int n, m;
cin >> n >> m; string s;
getline(cin, s);
for (int i = 0; i < n; i ++) {
getline(cin, s);
if(s.find("qiandao") == -1 && s.find("easy") == -1){
m --;
if(m == -1){
cout << s << '\n';
exit(0);
}
}
} cout << "Wo AK le"; return 0;
}

7-7 静静的推荐 - SMU 2024 spring 天梯赛1 (pintia.cn)

两个成绩都满足要求的,直接答案加一即可,就不参与推荐名额,把满足天梯赛成绩的筛选出来后,取每个分数段的前k个即可

#include <bits/stdc++.h>
#define debug(a) cout<<#a<<"="<<a<<'\n'; using namespace std;
using i64 = long long; typedef pair<i64, i64> PII; int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr); int n,k,s;
cin >> n >> k >> s; int ans = 0;
vector<int> m(300);
for(int i = 0;i < n;i ++){
int a,b;
cin >> a >> b;
if(a < 175) continue;
if(b >= s) {
ans ++;
continue;
}
m[a] ++;
} for(int i = 175;i <= 290;i ++)
ans += (m[i] > k ? k : m[i]); cout << ans << '\n'; return 0;
}

7-8 机工士姆斯塔迪奥 - SMU 2024 spring 天梯赛1 (pintia.cn)

把选中的行和列都移到边界,最终答案仍然是个矩形,注意重复选择的行和列

#include <bits/stdc++.h>
#define debug(a) cout<<#a<<"="<<a<<'\n'; using namespace std;
using i64 = long long; typedef pair<i64, i64> PII; int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr); i64 n,m,q;
cin >> n >> m >> q;
vector<array<int,2>> vis(100100);
for(int i = 0;i < q;i ++){
int op,x;
cin >> op >> x;
if(vis[x][op]) continue;
vis[x][op] ++;
if(op) m--;
else n --;
} cout << n * m << '\n'; return 0;
}

7-9 彩虹瓶 - SMU 2024 spring 天梯赛1 (pintia.cn)

模拟

#include <bits/stdc++.h>
#define debug(a) cout<<#a<<"="<<a<<'\n'; using namespace std;
using i64 = long long; typedef pair<i64, i64> PII; int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr); int n,m,k;
cin >> n >> m >> k;
while(k--){
stack<int> Q,now;
for(int i = 0;i < n;i ++){
int x;
cin >> x;
if(Q.size() > m) continue;
if(now.empty() && x == 1){
now.push(x);
}else if(now.size() && x == now.top() + 1){
now.push(x);
}else Q.push(x);
if(now.size()){
while(Q.size() && Q.top() == now.top() + 1){
now.push(Q.top());
Q.pop();
}
}
}
if(now.size() != n)
cout << "NO\n";
else cout << "YES\n";
} return 0;
}

7-10 简单计算器 - SMU 2024 spring 天梯赛1 (pintia.cn)

模拟

#include <bits/stdc++.h>
#define debug(a) cout<<#a<<"="<<a<<'\n'; using namespace std;
using i64 = long long; typedef pair<i64, i64> PII; int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr); int n;
cin >> n;
vector<int> num(n);
for (auto &i : num) cin >> i; vector<char> op(n - 1);
for (auto &i : op) cin >> i; while (num.size() > 1) {
int x = num.back();
num.pop_back();
int y = num.back();
num.pop_back(); char z = op.back();
op.pop_back(); switch (z) {
case '+': num.push_back(x + y);
break;
case '-': num.push_back(y - x);
break;
case '*': num.push_back(x * y);
break;
case'/': if (!x) {
cout << "ERROR: " << y << "/0\n";
exit(0);
} else {
num.push_back(y / x);
break;
}
}
} cout << num[0] << '\n'; return 0;
}

7-11 龙龙送外卖 - SMU 2024 spring 天梯赛1 (pintia.cn)

假设每次送完后都要回到外卖站,则通过画图可以发现,其实每条路都走了两遍,现在加上不必返回外卖站,那我们只要把离外卖站即根节点最远的那条路线放到最后走,即只需走一遍,在之前的每条路的基础上减去最远的那条线即可

刚开始用了LCA,不过跟这题没关系,只需要计算每个点的深度以及记录其父节点,然后往上递归即可;

#include <bits/stdc++.h>
#define debug(a) cout<<#a<<"="<<a<<'\n'; using namespace std;
using i64 = long long; typedef pair<i64, i64> PII; struct LCA {
int n;
vector<i64> dep;
vector<vector<int>> e;
vector<array<int, 21>> fa;
LCA() {}
LCA(int n) {
dep.resize(n + 1);
e.resize(n + 1);
fa.resize(n + 1);
} void add(int u, int v) {
e[u].push_back(v);
e[v].push_back(u);
} //计算深度,处理各点祖先
void dfs(int u, int father) {
dep[u] = dep[father] + 1; fa[u][0] = father;
for (int i = 1; i < 20; i ++)
fa[u][i] = fa[fa[u][i - 1]][i - 1]; for (auto v : e[u])
if (v != father)
dfs(v, u);
} //最近公共祖先
//两点集并的最近公共祖先为两点几分别的最近公共祖先的最近公共祖先,
//即LCA(A∪B) = LCA(LCA(A), LCA(B));
int lca(int u, int v) {
if (dep[u] < dep[v]) swap(u, v);
for (int i = 19; i >= 0; i --)
if (dep[fa[u][i]] >= dep[v])
u = fa[u][i]; if (u == v) return v; for (int i = 19; i >= 0; i --)
if (fa[u][i] != fa[v][i])
u = fa[u][i], v = fa[v][i];
return fa[u][0];
} //d(u,v) = h(u) + h(v) - 2h(LCA(u,v));
//其中d是树上两点间的距离,h代表某点到树根的距离
int get_dis(int u, int v) {
return dep[u] + dep[v] - 2 * dep[lca(u, v)];
}
}; int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr); int n, m, root;
cin >> n >> m;
LCA lca(n);
for (int i = 1; i <= n; i ++) {
int x;
cin >> x;
if (x == -1) root = i, x ++;
lca.add(x, i);
} lca.dfs(root, 0); i64 ans = 0;
vector<bool> vis(n + 1);
vis[root] = 1;
auto dfs = [&](auto self, int u)->void{
if (vis[u]) return ;
vis[u] = 1;
ans += 2;
self(self, lca.fa[u][0]);
}; i64 ma = 0;
while (m --) {
int x;
cin >> x;
ma = max(ma, lca.dep[x]);
dfs(dfs, x);
cout << ans - ma + 1 << '\n';
} return 0;
}

7-12 智能护理中心统计 - SMU 2024 spring 天梯赛1(补题) (pintia.cn)

维护每个管理节点的人数,管理中心与管理中心的从属关系,老人与管理中心的从属关系;

每加入/移除一个老人,从当前老人的管理中心往上递归加一/减一;

管理中心之间从属关系,就往上递归给其上级添加此中心的人数;

查询时,先将老人从原来的管理中心移除,再添加到新的管理中心;

#include <bits/stdc++.h>
#define debug(a) cout<<#a<<"="<<a<<'\n'; using namespace std;
using i64 = long long; typedef pair<i64, i64> PII; int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr); int n, m;
cin >> n >> m; map<int, int> num, fa, people;
map<string, int> id; auto up = [&](auto up, int x)->void{
if (!x) return;
num[x] ++;
up(up, fa[x]);
}; auto down = [&](auto down, int x)->void{
if (!x) return ;
num[x] --;
down(down, fa[x]);
}; auto pass = [&](auto pass, int x, int val)->void{
if (!x) return ;
num[x] += val;
pass(pass, fa[x], val);
}; int cnt = 0;
for (int i = 0; i < m; i ++) {
string x, y;
cin >> x >> y;
if (!id[y]) id[y] = ++ cnt;
if (x[0] >= '0' && x[0] <= '9') {
people[stoi(x)] = id[y];
up(up, id[y]);
} else {
if (!id[x]) id[x] = ++ cnt;
fa[id[x]] = id[y];
pass(pass, id[y], num[id[x]]);
}
} char op;
while (cin >> op) {
int x;
string y;
if (op == 'E') break;
else if (op == 'T') {
cin >> x >> y;
down(down, people[x]);
people[x] = id[y];
up(up, id[y]);
} else {
cin >> y;
cout << num[id[y]] << '\n';
}
} return 0;
}

SMU 2024 spring 天梯赛1的更多相关文章

  1. 【CCCC天梯赛决赛】

    cccc的天梯赛决赛,水题一样的水,中档题以上的还是没做出来.补了一下题,觉得其实也不是很难,主要是练的少. L2-1:红色预警 并查集 我做的时候想不到并查集,想到了也不一定做的出来,都是其实不难. ...

  2. 记第一届 CCCC-团体程序设计天梯赛决赛 参赛

    其他都没什么,上午报道,下午比赛两个半小时,最后139分 但四我超遗憾的是,最后在做L3-1二叉搜索树,因为看到有辣么多人做出来,可是我没做出来啊 比赛结束后看了看其他两道当场吐血,L3-3直捣黄龙不 ...

  3. L1-049 天梯赛座位分配​​​​​​​

    L1-049 天梯赛座位分配 (20 分) 天梯赛每年有大量参赛队员,要保证同一所学校的所有队员都不能相邻,分配座位就成为一件比较麻烦的事情.为此我们制定如下策略:假设某赛场有 N 所学校参赛,第 i ...

  4. 团体程序设计天梯赛(CCCC) L3021 神坛 的一些错误做法(目前网上的方法没一个是对的) 和 一些想法

    团体程序设计天梯赛代码.体现代码技巧,比赛技巧.  https://github.com/congmingyige/cccc_code

  5. 团体程序设计天梯赛(CCCC) L3019 代码排版 方法与编译原理密切相关,只有一个测试点段错误

    团体程序设计天梯赛代码.体现代码技巧,比赛技巧.  https://github.com/congmingyige/cccc_code

  6. 团体程序设计天梯赛(CCCC) L3015 球队“食物链” 状态压缩

    团体程序设计天梯赛代码.体现代码技巧,比赛技巧.  https://github.com/congmingyige/cccc_code #include <cstdio> #include ...

  7. 第四届CCCC团体程序设计天梯赛 后记

    一不小心又翻车了,第二次痛失200分 1.开局7分钟A了L2-3,一看榜已经有七个大兄弟排在前面了,翻车 * 1 2.把L1-3 A了18分,留了两分准备抢顽强拼搏奖,最后五秒钟把题过了,万万没想到还 ...

  8. 团体程序设计天梯赛(CCCC) L3014 周游世界 BFS证明

    团体程序设计天梯赛代码.体现代码技巧,比赛技巧.  https://github.com/congmingyige/cccc_code

  9. 团体程序设计天梯赛(CCCC) L3013 非常弹的球 不同思路

    团体程序设计天梯赛代码.体现代码技巧,比赛技巧.  https://github.com/congmingyige/cccc_code

  10. 团体程序设计天梯赛(CCCC) L3012 水果忍者 上凸或下凹的证明

    团体程序设计天梯赛代码.体现代码技巧,比赛技巧.  https://github.com/congmingyige/cccc_code #include <cstdio> #include ...

随机推荐

  1. spring-事务案例

    spring的案例场景 同一个事务中使用并发操作导致更新获取锁失败 @Autowired Service service1; @Transactional public void methodA(){ ...

  2. 算法金 | A - Z,115 个数据科学 机器学习 江湖黑话(全面)

    大侠幸会,在下全网同名「算法金」 0 基础转 AI 上岸,多个算法赛 Top 「日更万日,让更多人享受智能乐趣」 机器学习本质上和数据科学一样都是依赖概率统计,今天整整那些听起来让人头大的机器学习江湖 ...

  3. .NET 认识日志系统-2

    .NET 日志系统2 上一篇文章是将日志打印到控制台,这篇文章将日志写入到文本文件中. 文本日志一般按照日期区分 如何避免文本日志把磁盘撑爆? 限制日志总个数或者总大小 如何避免一个日志文件太大? 限 ...

  4. 使用sqlcel导入数据时出现“a column named '***' already belongs to this datatable”问题的解决办法

    我修改编码为GBK之后,选择导入部分字段,如下: 这样就不会出现之前的问题了,完美 ----------------------------------------------- 但是出现一个问题,我 ...

  5. position的值, relative和absolute分别是相对于谁进行定位的?

    relative:  相对定位,相对于自己本身在正常文档流中的位置进行定位 相对它原来的位置,在走100px.原来在标准流中的位置继续占有. absolute: 生成绝对定位,相对于最近一级定位不为s ...

  6. Luogu P2036 [COCI2008-2009 #2] PERKET

    今天我们来看一道题:Luogu P2036 [COCI2008-2009 #2] PERKET 这道题不难,典型的暴力枚举 由于食材数量随机,无法直接用循环解,但是可以使用递归 \(MY_{CODE: ...

  7. 解决方案 | win10任务栏假死,桌面鼠标可以动但是无法点击任务栏图标

    1 背景 今天电脑不知道什么原因,鼠标出现了无法点击任务栏图标的情况,但是桌面上可以晃动. 2 解决过程 (方法1-3对我无效,但是不代表对你们无效,) 方法1:重启资源管理器. 方法2:电脑重启.或 ...

  8. 安装PHP拓展

    win环境下: php扩展下载地址:http://pecl.php.net/ 需要知道:  php版本,操作系统位数,线程是否安全.想要知道这3个,在php中输入.如下图所示:phpinfo();di ...

  9. 判断浏览器是否是 IE 及 IE8 以下版本

    作为一个前端,避免不了会遇见IE的坑,其他浏览器都好好的,测到IE就完蛋,各种不支持,服气了 有些属性和方法是所有版本IE都不支持,而有些则是部分支持,在项目中能够,主要分界岭为IE8,我相信目前大部 ...

  10. 前端太卷了,不玩了,写写node.js全栈涨工资,赶紧学起来吧!!!!!

    首先聊下node.js的优缺点和应用场景 Node.js的优点和应用场景 Node.js作为后端开发的选择具有许多优点,以下是其中一些: 高性能: Node.js采用了事件驱动.非阻塞I/O模型,使得 ...