首页 > 其他分享 >VP Educational Codeforces Round 159 (Rated for Div. 2)

VP Educational Codeforces Round 159 (Rated for Div. 2)

时间:2025-01-14 17:23:38浏览次数:1  
标签:std Educational Rated 159 max cnt cin i64 任务

A. Binary Imbalance

题意:给你一个01串,每次选一个01或者一个10在他们中间插一个0进去,问能不能让0的个数大于1。

我们进行一次插入操作后,显然还可以继续操作,所以只要有0和1就一定可以。注意特判全0的情况。

点击查看代码
void solve() {
   	int n;
   	std::cin >> n;
   	std::string s;
   	std::cin >> s;
   	if (s.find('1') == s.npos || s.find('0') != s.npos) {
   		std::cout << "YES\n";
   	} else {
   		std::cout << "NO\n";
   	}
}

B. Getting Points

题意:一共n天,你要在n天获得m分,让自己不被开除。每过七天会增加一个任务,每天可以上课,上课可以加x分,做任务可以加y分,每天只能上一次课,一次课可以最多做两个任务,如果每天都去上课也可以不被开除。但你想让自己休息的天数最多。

先计算有多少任务可以做,那么优先上课做两个任务,这样可以得 cnt / 2 * (x + 2 * y)分,如果m小于等于这个就直接输出 max(0, n - $\lceil $$\frac{m}{x+2*y}$$ \rceil$),否则先看剩下还有没有一个单独的任务,做完所有任务后判断还需要上多少天课就行。

点击查看代码
void solve() {
 	i64 n, m, x, y;
 	std::cin >> n >> m >> x >> y;
 	i64 cnt = (n + 6) / 7;
 	if (cnt / 2 * (x + 2 * y) < m) {
 		m -= cnt / 2 * (x + 2 * y);
 		i64 ans = cnt / 2;
 		if (cnt & 1) {
 			m -= x + y;
 			++ ans;
 		}

 		ans += std::max(0ll, (m + x - 1) / x);
 		std::cout << std::max(0ll, n - ans) << "\n";
 	} else {
 		std::cout << std::max(0ll, n - (m + x + 2 * y - 1) / (x + 2 * y)) << "\n";
 	}
}

C. Insert and Equalize

题意:给你一个数组,你要加一个不在这个数组里的数\(a_{n+1}\)进去,然后选一个x(x > 0),然后每个数不断加x到每个数相等。问最少加多少次。

对a排序后,x就是所有 \(a_i\) - \(a_{i-1}\)的最大公约数,因为它要满足能从\(a_{n-1}\)变到\(a_n\)那么x是\(a_{n-1}\)-\(a_n\)的因子,\(a_{n-2}\)变到\(a_n\)的过程中肯定要经过\(a_{n-1}\), 所以x是\(a_{n-1}\)-\(a_{n-2}\)的因子,同理,他应该是所有 \(a_i\) - \(a_{i-1}\)的最大公约数。\(a_{n+1}\)选一个最大的不在a里的x的倍数就行。

点击查看代码
void solve() {
    int n;
    std::cin >> n;
    std::vector<i64> a(n);
    i64 max = -2e9;
    std::set<i64> s;
    for (int i = 0; i < n; ++ i) {
    	std::cin >> a[i];
    	s.insert(a[i]);
    	max = std::max(max, a[i]);
    }

    if (n == 1) {
    	std::cout << 1 << "\n";
    	return;
    }

    std::sort(a.begin(), a.end());
    i64 d = 0;
    for (int i = 1; i < n; ++ i) {
    	d = std::gcd(d, a[i] - a[i - 1]);
    }

    d = std::abs(d);
    i64 an = max - d;
    for (i64 i = max - d; ; i -= d) {
    	if (!s.count(i)) {
    		an = i;
    		break;
    	}
    }
 
    i64 ans = (max - an) / d;
    for (int i = 0; i < n; ++ i) {
    	ans += (max - a[i]) / d;
    }

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

D. Robot Queries

感觉是要讨论变化后的坐标对称关系。不会。
待补。

标签:std,Educational,Rated,159,max,cnt,cin,i64,任务
From: https://www.cnblogs.com/maburb/p/18671175

相关文章

  • CodeTON Round 6 (Div. 1 + Div. 2, Rated, Prizes!) B. Friendly Arrays
    Codeforces题解-[B.FriendlyArrays]题目链接题目描述Youaregiventwoarraysofintegers—\(a_1,\ldots,a_n\)oflength\(n\),and\(b_1,\ldots,b_m\)oflength\(m\).Youcanchooseanyelement\(b_j\)fromarray\(b\)(\(1\leqj\leqm......
  • [BZOJ3159] 决战 题解
    个人感觉各方面难度高于《在美妙的数学王国中畅游》,也不知道是不是求导的关系,这题\(luogu\)难度评级还更低。不过感觉这题作完对\(LCT\)理解更顺畅了。前四个操作简单,关键在第五人格操作。注意力惊人的注意到我们无法像普通\(Splay\)一样,直接对\(LCT\)中的\(Splay\)......
  • Educational Codeforces Round 166
    Dashboard-EducationalCodeforcesRound166Problem-A-Codeforces签到(写的有点烦...)#include<bits/stdc++.h>usingnamespacestd;constintN=2e5+10;voidsolve(){ intn;cin>>n; strings;cin>>s; vector<int>a;vector<char>b;......
  • Educational Codeforces Round 165
    EducationalCodeforcesRound165Problem-A-Codeforces答案只会是2或3,分类一下就好了#include<bits/stdc++.h>usingnamespacestd;constintN=2e5+10;intn;inta[N];voidsolve(){ cin>>n; for(inti=1;i<=n;i++) { scanf("%d",&a[i]......
  • 吃透LeetCode 159:至多包含两个不同字符的最长子串
    开篇:刷题党必看!在算法学习的江湖里,LeetCode可是众多程序员的“练武场”,其重要性不言而喻。从初出茅庐的新手,到经验丰富的技术大拿,大家都热衷于在这个平台上切磋算法技艺,提升编程功力。这里汇聚了各种巧妙构思的算法题,堪称是检验我们编程能力的“试金石”。而掌握经典题目的解......
  • 《计算机组成及汇编语言原理》阅读笔记:p133-p159
    《计算机组成及汇编语言原理》学习第11天,p133-p159总结,总计27页。一、技术总结1.segment(1)定义Broadlyspeaking,acontiguoussectionofmemory.Morespecifically,asectionofmemoryreferencedbyoneofthesegmentregistersofthe80x86family.Theme......
  • Chain-of-Exemplar: Enhancing Distractor Generation for Multimodal Educational Qu
    题目样本链:增强干扰项生成以实现多模式教育问题生成论文地址:https://aclanthology.org/2024.acl-long.432/项目地址:https://github.com/Luohh5/Chain-of-Exemplar摘要    多项选择题(MCQ)对于加强概念学习和学生参与度以实现教育目的非常重要。尽管教育内容具......
  • 3159. 查询数组中元素的出现位置
    给你一个整数数组 nums ,一个整数数组 queries 和一个整数 x 。对于每个查询 queries[i] ,你需要找到 nums 中第 queries[i] 个 x 的位置,并返回它的下标。如果数组中 x 的出现次数少于 queries[i] ,该查询的答案为-1。请你返回一个整数数组 answer ,......
  • Educational Codeforces Round 172 (Rated for Div. 2)(C-D)
    题目链接:Dashboard-EducationalCodeforcesRound172(RatedforDiv.2)-CodeforcesC.CompetitiveFishingtag:后缀和+思维Description:有一个序列含\(n\)个数(每个数是\(0\)或\(-1\)),将其分为\(m\)个区间,从前往后每个区间中第\(i\)个区间的权值为\((i-1)\),求序列权值和......
  • Educational Codeforces Round 173 B.Digits
    Codeforces题解-[EducationalCodeforcesRound173B.Digits]题目链接题目大意n!个d组成的形如dd'''d(n!个)求能被1-9中哪些奇数整除每个用例按升序输出输入3267185输出13137913579解题思路解法1  这个数可以看作C=d*1111'''1(n......