首页 > 其他分享 >HHKB Programming Contest 2025(AtCoder Beginner Contest 388)

HHKB Programming Contest 2025(AtCoder Beginner Contest 388)

时间:2025-01-11 22:10:40浏览次数:1  
标签:std AtCoder 匹配 题意 Beginner Contest int void cin

A - ?UPC

题意:给你一个字符串,把他的第一个字符和"UPC"输出。

输出即可。

点击查看代码
void solve() {
    std::string s;
    std::cin >> s;
    std::cout << s[0] << "UPC\n";
}

B - Heavy Snake

题意:n条蛇由厚度和长度,重量为厚度乘长度,问长度加上1~k时,最大的蛇的重量分别是多少。

直接模拟即可。

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

    for (int i = 1; i <= d; ++ i) {
    	int ans = 0;
    	for (int j = 1; j < n; ++ j) {
    		if (a[j] * (b[j] + i) > a[ans] * (b[ans] + i)) {
    			ans = j;
    		}
    	}
    	std::cout << a[ans] * (b[ans] + i) << "\n";
    }
}

**C - Various Kagamimochi **

题意:给你升序的n个数,一个数可以放在大于等于它的两倍的数上面,问有多少匹配的数。

从后往前双指针找可以匹配的最大的,那么前面的所有数都可以匹配。
也可以二分。

点击查看代码
void solve() {
    int n;
    std::cin >> n;
    std::vector<int> a(n);
    for (int i = 0; i < n; ++ i) {
    	std::cin >> a[i];
    }
    i64 ans = 0;
    for (int i = n - 1, j = n - 1; i >= 0; -- i) {
    	while (j >= 0 && a[j] > a[i] / 2) {
    		-- j;
    	}

    	ans += j + 1;
    }

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

D - Coming of Age Celebration8

题意:n个人,每个人有一些石头,每个人第i年会向前面的人要一个石头(如果有),问最后每个人手上的石头数。

第i个人要加上前面的石头,然后给后面连续的min(n - i, a[i])个人一个石头,加石头可以差分做,循环过去判断就行。

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

    std::vector<int> d(n + 2);
    for (int i = 1; i <= n; ++ i) {
    	d[i] += d[i - 1];
    	a[i] += d[i];
    	if (a[i]) {
    		d[i + 1] += 1;
    		d[std::min(n + 1, i + a[i] + 1)] -= 1;
    	}

    	a[i] = std::max(0, a[i] - (n - i));
    }

    for (int i = 1; i <= n; ++ i) {
    	std::cout << a[i] << " \n"[i == n];
    }
}

E - Simultaneous Kagamimochi

题意:给你升序的n个数,一个数可以放在大于等于它的两倍的数上面,问最多匹配多少个。

刚开始想着贪心匹配wa了两发,然后二分写挂一发。。。
我们肯定要选前面最小的几个和后面最大的匹配,二分这个匹配数,看对应的数能否匹配上就行。

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

    auto check = [&](int p) -> bool {
    	for (int i = n - 1; p >= 0 ; -- i, -- p) {
    		if (a[p] * 2 > a[i]) {
    			return false;
    		}
    	}

    	return true;
    };

    int l = 0, r = n / 2 - (n % 2 == 0);
    while (l < r) {
    	int mid = l + r + 1 >> 1;
    	if (check(mid)) {
    		l = mid;
    	} else {
    		r = mid - 1;
    	}
    }

    if (!check(l)) {
    	std::cout << 0 << "\n";
    } else {
    	std::cout << l + 1 << "\n";
    }
}

F - Dangerous Sugoroku

看了一发感觉会又不会,然后看g过的多就去看g了
待补。

G - Simultaneous Kagamimochi 2

题意:e的加强版,改为q个询问,每次问一个区间的匹配数

想半天写了个线段树二分没搞出来。
待补。

标签:std,AtCoder,匹配,题意,Beginner,Contest,int,void,cin
From: https://www.cnblogs.com/maburb/p/18666270

相关文章

  • AtCoder Beginner Contest 387
    A-HappyNewYear2025题意给定正整数\(A,B\),求\((A+B)^2\)思路模拟代码点击查看代码#include<bits/stdc++.h>usingnamespacestd;#defineintlonglongtypedefpair<int,int>pii;constintmxn=1e6+5;voidsolve(){ inta,b; cin>>a......
  • VP UNIQUE VISION Programming Contest 2024 Christmas (AtCoder Beginner Contest 38
    A-Equally题意:给你三个数,判断能不能分成大于一组后每组和相等。只可能分成两个和一个或者三组一个的。点击查看代码voidsolve(){inta,b,c;std::cin>>a>>b>>c;if((a==b&&b==c)||(a+b==c)||(b+c)==a||(a+c)==b){ s......
  • cf-800 a b c:https://codeforces.com/contest/1694
    cf-800链接:https://codeforces.com/contest/1694题a正常循环输入01,多的最后输入就行你要的代码在这里usingnamespacestd;typedeflonglongll;intmain(){intu;cin>>u;while(u--){inta,b;cin>>a>>b;into=abs(a-b);......
  • Atcoder ABC329E Stamp 题解 [ 绿 ] [ 线性 dp ]
    Stamp:难点主要在dp转移的细节与分讨上,但通过改变状态设计可以大大简化分讨细节的题。观察首先要有一个观察:只要某一个前缀能被覆盖出来,那么无论它后面多出来多少,后面的字符串都可以帮他重新覆盖回去。这也就是dp为啥没有后效性的原因。除此之外,还要注意一个字符串不仅能在......
  • VP AtCoder Beginner Contest 387
    A-HappyNewYear2025按题意输出即可。点击查看代码voidsolve(){inta,b;std::cin>>a>>b;std::cout<<(a+b)*(a+b)<<"\n";}B-9x9Sum直接遍历累加满足不等于x的数即可,注意这个九九乘法表是9*9的矩阵,不是我们学的下三角。点击查看......
  • AtCoder备赛刷题 ABC 361 | x = a^b
    学习C++从娃娃抓起!记录下AtCoder(日本算法竞技网站)备赛学习过程中的题目,记录每一个瞬间。附上汇总贴:AtCoder备赛刷题|汇总【ProblemStatement】Howmanyintegersxx......
  • AtCoder备赛刷题 ABC 361 | Go Territory
    学习C++从娃娃抓起!记录下AtCoder(日本算法竞技网站)备赛学习过程中的题目,记录每一个瞬间。附上汇总贴:AtCoder备赛刷题|汇总【ProblemStatement】ThereareNNNston......
  • atcoder 杂题 #05
    atcoder杂题#05abc340_gLeafColorabc340_fF-S=1abc361_gGoTerritoryabc386_fOperateKabc340_g独立想出了这道题。如果我们确定了子图的叶子,那么这个子图就确定了。又由于叶子的颜色要相同,所以每种颜色的贡献是互相独立的。首先如果一种颜色有\(x\)个点,那......
  • 2025 AtCoder 周寄
    目录前言\(\text{\color{#0000FF}ABC387\color{black}perf\color{#00C0C0}1398}\)前言赛时总结展望前言2024拜拜了。回首整个2024的OI历程,自己一直在摆烂。8月份的暑假基本没碰过OI,10月底的CSP-J255pts遗憾2=,11月底的NOIP连T3暴力都没来得及打,年底五中请lx......
  • AtCoder Beginner Contest 387 赛后复盘
    省流:A,B,C,D,FA-B模拟即可。C数位dp。首先我们先将问题转换为\([1,R]\)中蛇数的个数减去\([1,L-1]\)中蛇数的个数。设\(num_i\)为数字的第\(i\)位(从左往右数)。我们设\(f_{dep,mx,lim,ze}\)表示当前第\(dep\)位,首位为\(mx\),有没有达到上限,有没有前导零。那么......