首页 > 其他分享 >VP Toyota Programming Contest 2024#12(AtCoder Beginner Contest 384)

VP Toyota Programming Contest 2024#12(AtCoder Beginner Contest 384)

时间:2025-01-13 21:55:05浏览次数:1  
标签:std nx 12 Contest int sum 2024 ny ans

A - aaaadaa

题意:给你一个字符串和两个字符\(c_1\),\(c_2\),把字符串里的所有不等于\(c_1\)的字符都换成\(c_2\)。

模拟即可。

点击查看代码
void solve() {
    int n;
    char a, b;
    std::cin >> n >> a >> b;
    std::string s;
    std::cin >> s;
    for (auto & c : s) {
    	if (c != a) {
    		c = b;
    	}
    }

    std::cout << s << "\n";
}

B - ARC Division

题意:你有一个初始分,按顺序参加比赛,比赛由两种,有不同的计分范围,如果你的分数在这个比赛的计分范围内,就会加上\(a_i\),求最后分数。

也是模拟。

点击查看代码
void solve() {
    int n, ans;
    std::cin >> n >> ans;
    for (int i = 0; i < n; ++ i) {
    	int d, a;
    	std::cin >> d >> a;
    	if (d == 1 && ans >= 1600 && ans <= 2799) {
    		ans += a;
    	} else if (d == 2 && ans >= 1200 && ans <= 2399) {
    		ans += a;
    	}
    }
    std::cout << ans << "\n";
}

C - Perfect 排名表

题意:有五个题目,每个题目有一个分数,你要求出做出这五题其中一些题的所有排列的分数,然后按分数从大到小输出,如果分数相同那就字典序小的输出。

dfs搜出所有排列,然后排序。

点击查看代码
void solve() {
    std::vector<int> a(5);
    for (int i = 0; i < 5; ++ i) {
    	std::cin >> a[i];
    }

    std::vector<std::pair<std::string, int> > ans;
    auto dfs = [&](auto self, int u, std::string s, int val) -> void {
    	if (u == 5) {
    		if (s.size()) {
    			ans.push_back({s, val});
    		}
    		return;
    	}

    	self(self, u + 1, s, val);
    	s += 'A' + u;
    	val += a[u];
    	self(self, u + 1, s, val);
    };

    dfs(dfs, 0, "", 0);
    std::sort(ans.begin(), ans.end(), [&](std::pair<std::string, int> & a, std::pair<std::string, int> & b) {
    	if (a.second == b.second) {
    		return a.first < b.first;
    	}
    	return a.second > b.second;
    });

    for (auto & [s, v] : ans) {
    	std::cout << s << "\n";
    }
}

D - Repeated Sequence
题意:有一个无限长的序列,以n为周期,现在给你一个周期里的数,求这个序列有没有一段连续区间的和等于s。

记sum等于一个周期的和,如果s <= sum, 我们延长一倍数组双指针模拟就行。如果s > sum,我们选的区间应该是一些完整周期加上结尾一些数和开头一些数,那么我们把所有前缀和记录起来,从后枚举后缀和,已知当前后缀和为x, 那么我们要求一个前缀y, 使得 (s - x - y) % sum = 0,因为y一定小于sum,那么也就是 y = (s - x) % sum。

点击查看代码
void solve() {
    int n;
    i64 s;
    std::cin >> n >> s;
    std::vector<i64> a(n);
    for (int i = 0; i < n; ++ i) {
    	std::cin >> a[i];
    }

    std::set<i64> set;
    i64 sum = 0;
    for (int i = 0; i < n; ++ i) {
    	sum += a[i];
    	set.insert(sum);
    }

    if (sum >= s) {
		i64 sum = 0;
    	for (int i = 0, j = 0; i < n; ++ i) {
    		j = std::max(j, i);
    		while (j < 2 * n && sum < s) {
    			sum += a[j % n];
    			++ j;
    		}

    		if (sum == s) {
    			std::cout << "Yes\n";
    			return;
    		}

    		sum -= a[i];
    	}
    	std::cout << "No\n";
    	return;
    }

    set.insert(0);

    i64 x = 0;;
    for (int i = n - 1; i >= 0 && x <= s; -- i) {
    	x += a[i];
    	if (set.count((s - x) % sum)) {
    		std::cout << "Yes\n";
    		return;
    	}
    }

    std::cout << "No\n";
}

E - Takahashi is Slime 2

题意:一个矩阵,你有一个初始点,你可以往你相邻的点扩展,如果这个点 <= 你的值 / x,那么你可以吃它,并且占领它的格子。问你最大的值是多少。

我们把所有可以吃的格子用小根堆维护起来,每次吃最小的格子然后把它的邻格入队。如果连最小的都吃不了,就只能退出。

点击查看代码
void solve() {
    i64 n, m, X, sx, sy;
    std::cin >> n >> m >> X >> sx >> sy;
    -- sx, -- sy;
    std::vector a(n, std::vector<i64>(m));
    for (int i = 0; i < n; ++ i) {
    	for (int j = 0; j < m; ++ j) {
    		std::cin >> a[i][j];
    	}
    }

    const int dx[] = {-1, 0, 1, 0}, dy[] = {0, 1, 0, -1};
    using A = std::array<i64, 3>;
    std::priority_queue<A, std::vector<A>, std::greater<A> > heap;

    std::vector st(n, std::vector<int>(m));
    st[sx][sy] = 1;
    i64 ans = a[sx][sy];
    for (int i = 0; i < 4; ++ i) {
    	int nx = sx + dx[i], ny = sy + dy[i];
    	if (nx < 0 || nx >= n || ny < 0 || ny >= m) {
    		continue;
    	}

    	st[nx][ny] = 1;
    	heap.push({a[nx][ny], nx, ny});
    }

    while (heap.size()) {
    	auto [val, x, y] = heap.top(); heap.pop();
    	if ((__int128)val * X >= ans) {
    		break;
    	}

    	ans += val;
    	for (int i = 0; i < 4; ++ i) {
    		int nx = x + dx[i], ny = y + dy[i];
    		if (nx < 0 || nx >= n || ny < 0 || ny >= m || st[nx][ny]) {
    			continue;
    		}

    		st[nx][ny] = 1;
    		heap.push({a[nx][ny], nx, ny});
    	}
    }

    std::cout << ans << "\n";
}

F - Double Sum 2

这题没往位运算那方面想。。。
待补

标签:std,nx,12,Contest,int,sum,2024,ny,ans
From: https://www.cnblogs.com/maburb/p/18669495

相关文章

  • 高级java每日一道面试题-2025年01月12日-框架篇[Mybatis]-什么是MyBatis?
    如果有遗漏,评论区告诉我进行补充面试官:什么是MyBatis?我回答:在Java高级面试中,MyBatis是一个常见的讨论话题。以下是对MyBatis的详细解释:一、MyBatis简介MyBatis是一个开源的持久层框架,它提供了将SQL语句和Java对象进行映射的功能。MyBatis简化了JDBC的开发,减少了手......
  • 2024ICPC(香港)游记
    转自MyBlog虽然2025了再写好像有点迟就是了。day-180?大一xdx太nb导致的,本来预估网络赛400有两场,600校内出线,结果被xdx搞成网络赛200有两场,400校内出线。632遗憾退场。day-100?老师给南京站争取了一个外卡,可惜20分罚时之差给了我们前一队。这么说去年邀请赛也是,虽然298分过了......
  • 【事件分析】20250112-Usual 赎回机制调整事件
    背景信息https://docs.usual.money/Usual是一个聚合RWA的稳定币发行协议,经济模型中存在三种代币:USD0:Usual发行的稳定币。USD0++:USD0++是USD0的质押版本,为期4年,可获得USUAL代币奖励。USUAL:Usual协议的治理代币。事发缘由https://usual.money/blog/usual-s-next-......
  • 痞子衡嵌入式:我评上了2024年度电子星球(eestar)最强大脑
    今天收到了「电源网旗下电子星球」颁发的2024年度最强大脑奖牌,这是电子星球第二年给痞子衡颁奖了。这个奖牌设计得非常用心,区别于去年奖牌只能捧在手上,今年痞子衡可以把奖牌挂脖子上出去拉风了。从23年8月开始,电子星球小编每个工作日会转发一篇痞子衡的技术原创文章,直到24年6......
  • 八点八数字入选AI年度榜单《2024 AIGC赋能行业创新引领者》
    近日,由中国产业海外发展协会指导、极新主办、前海香港科技青年之家与粤港澳大湾区青年创新创业中心联合主办的「重度垂直·2024极新AIGC峰会」在深圳、香港两地隆重举行。峰会期间,「2024AIGC赋能行业创新引领者」重磅发布,八点八数字荣登榜单。该峰会从企业的创新能力、技术实......
  • 大模型实战项目最新:2024年大模型开源项目大盘点
    当大模型成本逐渐降低,可靠性提升后,这意味着越来越多的业务应用将会与LLM结合,为了让这种结合更加顺畅,需要有与现有基础设施相兼容的工具和框架来支撑LLM应用开发的快速开发通用大模型性能评测参见:github:https://github.com/CLUEbenchmark/SuperCLUE在线报告:https://www......
  • abb涂装机械手维修齿轮泵电机3HNA012841-001
    ABB喷涂机器人齿轮泵电机维修步骤1、拆卸与检查环节严格按照拆卸指南,将ABB涂装机械手上的齿轮泵电机拆解下来。对拆卸下来的齿轮泵电机进行全面仔细检查,包括电机外壳、轴承、密封件等关键部件的磨损与损坏情况。 2、清洁与润滑步骤彻底清洗ABB喷涂机械臂齿轮泵电机3HNA012841-00......
  • oracle12.2.0.1交互快速部署脚本(shell)
    背景有些项目会用到oracle,以前大佬写的脚本不好用,拿来改一改,能用起来先,回头再适配更高版本的oracle。如果使用过程中有什么问题,还请批评指正。脚本#!/bin/bash####################Steup1Installoraclesoftware#####################script_name:oracle12.2.0.1_inst......
  • 每日新闻掌握【2024年1月13日 星期一】
    2025年1月13日星期一 农历腊月十四 大公司/大事件美股三大指数集体收跌,热门中概股普跌36氪获悉,1月10日收盘,美股三大指数集体下跌,纳指跌1.63%,道指跌1.63%,标普500指数跌1.54%。大型科技股多数下跌,AMD、奈飞跌超4%,英特尔跌超3%,英伟达跌3%,苹果跌超2%,亚马逊、微软跌超1%,M......
  • 1.12-1.13总结
    这两天读了本小说,余华的《活着》。讲的是徐福贵的人生,开头写福贵骑着牛,牛叫福贵,福贵还骗牛,说还有家珍,有庆,凤霞,二喜都在地里耕作,让牛不觉得自己孤单,我当时以为名字是随便取的。早年福贵是个地主少爷,他有一个老婆家珍,家珍是个千金,福贵什么浪荡事都干过,吃喝嫖赌,在赌博上,他觉得自己能......