首页 > 其他分享 >西南民族大学 春季 2023 训练赛 7

西南民族大学 春季 2023 训练赛 7

时间:2023-04-15 17:01:56浏览次数:40  
标签:ch cur int ans 春季 read vector 训练赛 2023

L1-1 人与神

To iterate is human, to recurse divine.

L1-2 两小时学完C语言

#include <bits/stdc++.h>

using namespace std;

int main() {
    int n, m, k;
    cin >> n >> m >> k;
    cout << max(0, n - m * k);
    return 0;
}

L1-3 强迫症

#include <bits/stdc++.h>

using namespace std;

int main() {
    string s;
    cin >> s;
    if (s.size() == 6) {
        cout << s.substr(0, 4) << "-" << s.substr(4, 2);
    } else {
        int t = (s[0] - '0') * 10 + s[1] - '0';
        if (t < 22) cout << 20;
        else cout << 19;
        cout << s[0] << s[1] << "-" << s[2] << s[3];
    }
    return 0;
}

L1-4 降价提醒机器人

#include <bits/stdc++.h>

using namespace std;

int main() {
    int n;
    double m;
    cin >> n >> m;
    for (double x; n; n--) {
        cin >> x;
        if (m > x) printf("On Sale! %.1lf\n", x);
    }
}

L1-5 大笨钟的心情

#include <bits/stdc++.h>
using namespace std;

int main(){
	vector<int> a(24);
	for( auto &i : a ) cin >> i;
	for( int x ; true; ){
		cin >> x;
		if( x < 0 || x > 23 ) break;
		cout << a[x];
		if( a[x] > 50 ) cout << " Yes\n";
		else cout << " No\n";
	}
}

L1-6 吉老师的回归

#include <bits/stdc++.h>

using namespace std;

int main() {
    int n, m;
    cin >> n >> m;
    if (n == m) {
        cout << "Wo AK le\n";
        return 0;
    }
    getchar();
    for (int i = 1; i <= n; i++) {
        string s;
        getline(cin, s);

        if (s.find("easy") == -1 && s.find("qiandao") == -1) {
            if (m > 0) m--;
            else {
                cout << s << "\n";
                return 0;
            }
        }
    }
    cout << "Wo AK le\n";
    return 0;
}

L1-7 天梯赛的善良

#include <bits/stdc++.h>

using namespace std;

int main() {
    int n;
    int a = 0, b = 0, c = INT_MAX, d = INT_MIN;

    cin >> n;
    for (int x; n; n--) {
        cin >> x;
        if (x < c) c = x, a = 1;
        else if (x == c) a++;

        if (x > d) d = x, b = 1;
        else if (x == d) b++;
    }
    cout << c << " " << a << "\n" << d << " " << b << "\n";
    return 0;
}

L1-8 乘法口诀数列

#include <bits/stdc++.h>
using namespace std;

int main(){
	int a , b , n ;
	cin >> a >> b >> n;
	vector<int> v(2);
	v[0] = a , v[1] = b;
	for( int i = 2 , x ; i < n ; i ++ ){
		x = v[i-1] * v[i-2];
		if( x > 9 ) v.push_back(x / 10) , v.push_back(x % 10);
		else v.push_back(x);
	}
	for( int i = 0 ; i < n ; i ++ )
		cout << v[i] << " \n"[i == n-1 ];
	return 0;
}

L2-1 包装机

小模拟,用栈模拟一下筐就好了。注意对筐的操作前一定要先检查筐的状态。

#include <bits/stdc++.h>

using namespace std;

int main() {
    int n, m, s;
    cin >> n >> m >> s;
    vector<int> pos(n + 1, 0);
    vector<string> t(n + 1);
    stack<char> box;
    string ans;

    for (int i = 1; i <= n; i++)
        cin >> t[i];
    for (int x;;) {
        cin >> x;
        if (x == -1) break;
        else if (x == 0) {
            if (!box.empty()) ans += box.top(), box.pop();
        } else {
            if (pos[x] == m) continue;
            if (box.size() == s) ans += box.top(), box.pop();
            box.push(t[x][pos[x]]), pos[x]++;
        }
    }
    cout << ans << "\n";
    return 0;
}

L2-2 病毒溯源

从所有的叶子简单,方向还原出序列后,统计最长且最小的即可

#include <bits/stdc++.h>

using namespace std;

int read() {
    int x = 0, f = 1, ch = getchar();
    while ((ch < '0' || ch > '9') && ch != '-') ch = getchar();
    if (ch == '-') f = -1, ch = getchar();
    while (ch >= '0' && ch <= '9') x = (x << 3) + (x << 1) + ch - '0', ch = getchar();
    return x * f;
}

int main() {
    int n = read();
    vector<int> cur, ans, fa(n, -1), d(n, 0);
    for (int i = 0, k, x; i < n; i++) {
        d[i] = k = read();
        for (; k; k--)
            x = read(), fa[x] = i;
    }
    for (int i = 0, t; i < n; i++) {
        if (d[i]) continue;
        cur.clear();
        t = i;
        while (t != -1) cur.push_back(t), t = fa[t];

        reverse(cur.begin(), cur.end());

        if (cur.size() > ans.size()) ans = cur;
        else if (cur.size() == ans.size() && cur < ans) ans = cur;
    }
    cout << ans.size() << "\n";
    for (auto i: ans)
        cout << i << " \n"[i == ans.back()];

    return 0;
}

L2-3 清点代码库

用 map统计没种出现的次数。然后对所有的种类进行排序

#include <bits/stdc++.h>

using namespace std;

int read() {
    int x = 0, f = 1, ch = getchar();
    while ((ch < '0' || ch > '9') && ch != '-') ch = getchar();
    if (ch == '-') f = -1, ch = getchar();
    while (ch >= '0' && ch <= '9') x = (x << 3) + (x << 1) + ch - '0', ch = getchar();
    return x * f;
}

int main() {
    int n = read();
    vector<int> cur, ans, fa(n, -1), d(n, 0);
    for (int i = 0, k, x; i < n; i++) {
        d[i] = k = read();
        for (; k; k--)
            x = read(), fa[x] = i;
    }
    for (int i = 0, t; i < n; i++) {
        if (d[i]) continue;
        cur.clear();
        t = i;
        while (t != -1) cur.push_back(t), t = fa[t];

        reverse(cur.begin(), cur.end());

        if (cur.size() > ans.size()) ans = cur;
        else if (cur.size() == ans.size() && cur < ans) ans = cur;
    }
    cout << ans.size() << "\n";
    for (auto i: ans)
        cout << i << " \n"[i == ans.back()];

    return 0;
}

L2-4 哲哲打游戏

建图然后模拟一下即可

#include <bits/stdc++.h>

using namespace std;

int read() {
    int x = 0, f = 1, ch = getchar();
    while ((ch < '0' || ch > '9') && ch != '-') ch = getchar();
    if (ch == '-') f = -1, ch = getchar();
    while (ch >= '0' && ch <= '9') x = (x << 3) + (x << 1) + ch - '0', ch = getchar();
    return x * f;
}

int main() {
    int n = read(), m = read();
    vector<vector<int>> e(n + 1);
    for (int i = 1, k; i <= n; i++) {
        k = read(), e[i] = vector<int>(k);
        for (auto &j: e[i]) j = read();
    }
    vector<int> p(105);
    int now = 1;
    for (int op, x; m; m--) {
        op = read(), x = read();
        if (op == 0) now = e[now][x - 1];
        else if (op == 1) cout << now << "\n", p[x] = now;
        else now = p[x];
    }
    cout << now << "\n";
    return 0;
}

L3-1 森森旅游

正向建图以现金为代价,反向建图以旅游金为代价。分别从起点和终点两边 dij 统计最小花费,然后枚举兑换旅游金的点统计出全局最优解。

对于修改汇率,用multiset维护说有点兑换的代价,每次删掉就插入新的,begin()就是每次修改后的答案。

#include <bits/stdc++.h>

using namespace std;

#define int long long

int read() {
    int x = 0, f = 1, ch = getchar();
    while ((ch < '0' || ch > '9') && ch != '-') ch = getchar();
    if (ch == '-') f = -1, ch = getchar();
    while (ch >= '0' && ch <= '9') x = (x << 3) + (x << 1) + ch - '0', ch = getchar();
    return x * f;
}

const int INF = 1e18;

int n, m, p;

typedef pair<int, int> pii;


int32_t main() {
    n = read(), m = read(), p = read();
    vector<int> a(n + 1);
    vector<vector<pii>> e(n + 1), g(n + 1);
    for (int u, v, c, d; m; m--) {
        u = read(), v = read(), c = read(), d = read();
        e[u].emplace_back(v, c);
        g[v].emplace_back(u, d);
    }

    vector<int> d1(n + 1, INF), d2(n + 1, LLONG_MAX);

    d1[1] = 0;
    priority_queue<pii, vector<pii>, greater<pii> > q;
    q.emplace(0, 1);
    vector<bool> vis(n + 1, false);
    while (!q.empty()) {
        auto [d, u] = q.top();
        q.pop();
        if (vis[u]) continue;
        vis[u] = true;
        for (auto [v, w]: e[u]) {
            if (vis[v] || d1[v] <= d + w) continue;
            d1[v] = d + w, q.emplace(d1[v], v);
        }
    }

    d2[n] = 0;
    q.emplace(0, n);
    vis = vector<bool>(n + 1, false);
    while (!q.empty()) {
        auto [d, u] = q.top();
        q.pop();
        if (vis[u]) continue;
        vis[u] = true;
        for (auto [v, w]: g[u]) {
            if (vis[v] || d2[v] <= d + w) continue;
            d2[v] = d + w, q.emplace(d2[v], v);
        }
    }

    for (int i = 1; i <= n; i++) a[i] = read();

    vector<int> b(n + 1, INF);
    multiset<int> ans;
    for (int i = 1; i <= n; i++) {
        if (d1[i] != LLONG_MAX && d2[i] != LLONG_MAX)
            b[i] = d1[i] + (d2[i] + a[i] - 1ll) / a[i];
        ans.insert(b[i]);
    }
    for (int x, y; p; p--) {
        x = read(), y = read();
        if (d1[x] != LLONG_MAX && d2[x] != LLONG_MAX) {
            ans.erase(ans.lower_bound(b[x]));
            a[x] = y, b[x] = d1[x] + (d2[x] + y - 1ll) / y;
            ans.insert(b[x]);
        }
        printf("%lld\n", *ans.begin());
    }
    return 0;
}

L3-2 还原文件

其实就是写一个暴搜,每次暴力匹配出可以放进去的碎片即可。

#include <bits/stdc++.h>
using namespace std;

int read() {
    int x = 0, f = 1, ch = getchar();
    while ((ch < '0' || ch > '9') && ch != '-') ch = getchar();
    if (ch == '-') f = -1, ch = getchar();
    while (ch >= '0' && ch <= '9') x = (x << 3) + (x << 1) + ch - '0', ch = getchar();
    return x * f;
}

int n , m;
vector<int> h;
vector<vector<int>> g;
vector<bool> vis;
vector<int> ans;

void dfs( int pos ){
	if( pos == n-1 ){
		for( auto i : ans )
			cout << i << " \n"[i==ans.back()];
		exit(0);
	}
	for( int i = 0 ; i < m ; i ++ ){
		if( vis[i] ) continue;
		bool flag = true;
		for( int j = 0 , k = pos ; flag && j < g[i].size() ; j ++ , k ++ )
			if( h[k] != g[i][j] ) flag = false;
		if( flag == false ) continue;
		vis[i] = true , ans.push_back(i+1);
		dfs( pos + g[i].size() - 1 );
		vis[i] = false , ans.pop_back();
	}
}

int main(){
	n = read();
	h = vector<int>(n);
	for( auto & i : h ) i = read();
	m = read();
	g = vector<vector<int>>(m);
	vis = vector<bool>(m , false);
	for( int i = 0 , x ; i < m ; i ++ ){
		x = read() , g[i] = vector<int>(x);
		for( int j = 0 ; j < x ; j ++ ) g[i][j] = read();
	}
	dfs( 0 );
	return 0;
}

标签:ch,cur,int,ans,春季,read,vector,训练赛,2023
From: https://www.cnblogs.com/PHarr/p/17321411.html

相关文章

  • CVPR 2023 深挖无标签数据价值!SOLIDER:用于以人为中心的视觉
    前言 在现今的各种视觉智能场景中,对图像中人的理解和分析一直都是一个非常重要的环节。SOLIDER是CVPR2023录用的一篇来自于阿里达摩院的工作,是一个专门用于支持各种人体任务的视觉预训练模型。它提供一种自监督训练方式,让我们可以充分利用市面上大量的人体无标注数据训练出一......
  • 阿里云智能春季2024届实习生招聘启动啦,快来加入IoT安全吧
    职位名称: 安全工程师/研发工程师C/C++工作地点: 杭州市/北京市毕业时间:2023年11月-2024年10月面试:远程我们是谁?阿里云IoT安全部负责阿里云物联网安全产品的系统性规划、研发、创新拓展与业务落地。聚焦物联网安全能力在云-边缘计算-设备端的产品化建设,协同阿里云的多条产品线,业......
  • 2023五一高速公路免费几天?高速免费时间段用手机提醒
    进入2023年的4月中旬,相信很多网友都在期待着一个重要节日的到来,这就是五一劳动节。在每年的五一黄金周,为了鼓励公众出游、回乡探亲等,高速公路会实施临时免费政策,那么今年五一高速公路免费几天?按照相关规定来看,今年五一高速免费时间段是从4月29日0时—5月3日24时,共5天。如果你想要......
  • 【流水】2023.04.15
    省选了,省选完了,省选出分了令人意外的是殷教退了当时我,zas,mizuki,2k22,crs都不信但是是真的看到gtm进了似乎kaguya和joke没进最近数学在开排列组合实验的水平也就我当年那样(笑或许比我强不少?不清楚但是格路计数\(\binom{n+m}{m}\)在做学案的时候没一个人会也是真的。期待......
  • C/C++人事信息系统[2023-04-15]
    C/C++人事信息系统[2023-04-15]课程设计题目1——链表综合算法设计一、设计内容已知简单的人事信息系统中职工记录包含职工编号(no)、职工姓名(name)部门名称(depname)、职称(title)和工资数(salary)等信息,设计并完成一个简单的人事信息管理系统,要求完成但不限于以下功能:(1)......
  • C/C++校园导航图[2023-04-15]
    C/C++校园导航图[2023-04-15]课程设计题目2——校园导航图的实现一、设计内容(1)设计一个学校的校园平面图,所选结点不少于30个。以图中顶点表示校园各景点,存放景点名称、代号、简介等信息;以边表示路径,存放路径长度等相关信息。(2)为来往客人提供图中任意景点相关信息的查询......
  • C/C++校园管理系统[2023-04-15]
    C/C++校园管理系统[2023-04-15]校园管理系统(100分)1.系统界面设计(5分)(1)登录界面。该界面实现系统的登录。(1分)(2)系统主界面。该界面应该包含链接到各个二级子功能的菜单,提供进入二级栏目(1分)(3)各个子功能界面。该界面应该能够实现对数据的各种操作,并实现返回上一......
  • 2023-04-14 Fatal error: Call to a member function fetch_assoc() on a non-object
    问题:php报错。业务场景:使用update语句去更新数据库字段。原因:update接收值不正确。原代码:$query="UPDATEstudentSETdate=now()WHEREid=$id";$result=$mysqli->query($query2)ordie($mysqli->error);//问题出在这$data=$result->fetch_assoc(); i......
  • 20230414小记
    所以我选择被人讨厌————纯白↑快来一起听感受相仿的情绪。如果你可以共情。现在发现自己的精神状态真的堪忧。感觉被拉扯着还前进不了。看看成绩就突然不想活了。没意思。何必被牵扯着前进呢。在想学文化课的时候被竞赛打乱,在学竞赛的时候天天被磨叨文化课。被别人的......
  • 总结20230414
    今天周五,一周课最多了,但是今天也是很开心的!今天上的是计算机网络、概率论、web应用开发技术、数学建模B。计算机网络讲的是ARP协议以及具体传输时的传输过程,这几节课感觉听得挺不错的,挺轻松的。概率论讲的是二维随机变量分布的函数以及习题,一开始听的有点懵,但是后来悟明白了,边......