首页 > 其他分享 >Atcoder Regular Contest 059 题解

Atcoder Regular Contest 059 题解

时间:2024-11-20 20:29:06浏览次数:1  
标签:Atcoder Pw ++ 题解 LL cin Regular MAXN tie

ARC059C. Be Together

签到题。枚举要改成哪个,因为值域只有 \([-100,100]\)。然后对总代价取个 \(\min\) 即可。

#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const LL MAXN = 105;
LL n, A[MAXN];
int main()
{
	ios::sync_with_stdio(false);
	cin.tie(0); cout.tie(0);
	cin >> n;
	for(LL i = 1; i <= n; i ++) cin >> A[i];
	LL ans = 1e18;
	for(LL i = -100; i <= 100; i ++)
	{
		LL anss = 0;
		for(LL j = 1; j <= n; j ++)
			anss += (A[j] - i) * (A[j] - i);
		ans = min(ans, anss);
	}
	cout << ans << '\n';
	return 0;
}

ARC059D. Unbalanced

小清新结论题,考虑怎样构造这个串。其重要条件就是两个相同的字母的位置的绝对值相差为 \(1\) 或 \(2\),然后判一下就做完了。思维难度主要在这个结论。

#include <bits/stdc++.h>
using namespace std;
int main()
{
	ios::sync_with_stdio(false);
	cin.tie(0); cout.tie(0);
	string s;
	cin >> s;
	for(int i = 1; i < (int)s.length(); i ++)
	{
		if(i >= 2) 
		{
			if(s[i] == s[i - 2])
			{
				cout << i - 1 << " " << i + 1 << '\n';
				return 0;
			}
		}
		if(s[i] == s[i - 1])
		{
			cout << i << " " << i + 1 << '\n';
			return 0;
		}
	}
	cout << -1 << " " << -1 << '\n';
	return 0;
}

ARC059E. Children and Candies

算贡献的题,又看起来是一个背包。所以我们考虑在背包的基础上做一做手脚。

定义 \(f_{i,j}\) 为考虑到第 \(i\) 个,选了 \(j\) 个糖果的价值总和。由于乘法具有分配率,所以

\[f_{i,j}=f_{i-1,j-k}\times \sum^{b_i}_{t=a_i} t^k \]

答案就是 \(f_{n,c}\),这样是 \(O(n^3)\) 的。然后注意到那个和式可以 \(O(n^2)\) 与处理掉做前缀和优化,于是总体复杂度降为 \(O(n^2)\)

#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const LL MAXN = 405;
const LL MOD = 1e9 + 7;
LL n, c, A[MAXN], B[MAXN], Pw[MAXN][MAXN], SumPw[MAXN][MAXN], DP[MAXN][MAXN];
int main()
{
	ios::sync_with_stdio(false);
	cin.tie(0); cout.tie(0);
	cin >> n >> c;
	for(LL i = 1; i <= n; i ++) cin >> A[i];
	for(LL i = 1; i <= n; i ++) cin >> B[i];
	for(LL i = 1; i < MAXN; i ++)
	{
		Pw[i][0] = 1ll;
		for(LL j = 1; j < MAXN; j ++)
			Pw[i][j] = (Pw[i][j - 1] * i) % MOD;
	}
	for(LL i = 1; i < MAXN; i ++)
		for(LL j = 0; j < MAXN; j ++)
			SumPw[i][j] = (SumPw[i - 1][j] + Pw[i][j]) % MOD;
	DP[0][0] = 1;
	for(LL i = 1; i <= n; i ++)
		for(LL j = 0; j <= c; j ++)
			for(LL k = 0; k <= j; k ++)
				DP[i][j] = (DP[i][j] + (DP[i - 1][j - k] * (SumPw[B[i]][k] - SumPw[A[i] - 1][k] + MOD)) % MOD) % MOD;
	cout << DP[n][c] << '\n';
	return 0;
}

标签:Atcoder,Pw,++,题解,LL,cin,Regular,MAXN,tie
From: https://www.cnblogs.com/FracturedAngel/p/18559221

相关文章

  • atcoder 专项2
    有些题其实都挺有价值的,搞得我都想每个都单独建随笔,但是这样还是太多太乱了,之前那个难度较低,部分题甚至可以直接删除,遂新开一个2记录更高质量的题目。[ABC379E]SumofAllSubstrings看到有思路但是想到要用高精度就头疼,但是这题并没有用到很复杂的高精度,相反甚至更像是一个......
  • [题解]CF1685B Linguistics
    @hzjoiineg为什么是神?思路首先将\(S\)中A的数量不等于\(a+c+d\)的情况判掉。然后将\(S\)划分为ABAB...和BABA...的若干段,对于长度为奇数的段构造方案只能是如下构成:A开头为例):AB和BA共\(\lfloor\frac{len}{2}\rfloor\)个,再加一个A。将\(a\)减一,并用......
  • Atcoder Regular Contest 058 题解
    ARC058C.Iroha'sObsession*1174\(n\)再大一点的就是巨大恶心分类讨论。但我们注意到\(n\leq10^4\),所以我们可以直接暴力枚举然后写个check。首先我们先把被ban掉的数存标记一下。然后从\(n\)开始往上查,一直查到\(10^6\)基本就可以了。然后每次检查一下有没有数位被......
  • 2022沈阳D题题解
    2022沈阳D题题解​ 这题在VP的时候成功把我卡死了,原因是我一直没有想到用KMP去大力匹配,导致我的算法复杂度一直是O(n^2logn),然后就很典的T了。​ VP完了之后想各种优化卡过去,但是都失败了,跑校园跑的时候突然想到怎么解了。​ 现在我是这样看待这个问题的,这个问题应该是可以被拆......
  • rk3588 银河麒麟自动锁屏问题解决
    rk3588适配的银河麒麟在设置-》电源选项中设置“从不”后依然会触发自动锁屏。通过gsettings设置依然无效。gsettingssetorg.ukui.screensaveridle-delay-1gsettingssetorg.ukui.screensaveridle-lock-1gsettingssetorg.ukui.screensaveridle-activation-enabledfa......
  • QT5.15.2 连接MySQL 驱动问题解决方案,无论菜鸟️还是老鸟,解决了就是好鸟
    最近在学QT,现在QT只能在线安装了,用了几天,看到数据库时,需要用MySQL,结果出现了问题。QSqlDatabase:QMYSQLdrivernotloaded、QSqlDatabase:availabledrivers:QSQLITEQODBCQODBC3QPSQLQPSQL7、Sqlconnectfailed、"DrivernotloadedDrivernotloaded"网上找到很多......
  • CF1846题解
    洛谷题面T1,T2,T4没什么价值,建议跳过,在此不提供T1,T2题解,套题T5,T7较为精彩,个人安利一下T3题面翻译给定 n个人做 m个题的时间分布情况,每题得一分,每题的完成时间是这道题的罚时,排名按照得分为第一关键字升序,罚时为第二关键字降序,计算在所有人都按最优顺序做题的情况下,第 1个......
  • AtCoder Beginner Contest 380
    AtCoderBeginnerContest380总结A用桶统计\(1\),\(2\),\(3\)出现的次数,判断即可。#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>#include<vector>#include<queue>#include......
  • 【题解】洛谷:P8593 「KDOI-02」一个弹的投
    P8593「KDOI-02」一个弹的投物理题。首先你要搞懂什么时候会炮弹碰撞,结论:y坐标相同时,水平位置\(x_i\lex_j\)且落点满足\(d_i\ged_j\),两炮弹必然碰撞。但是为什么呢,像我这种完全没学高中物理的伪高中生就不会了,下落时每个物体的相对的高度差是不变的,因为根据伽利略运动独......
  • P11290 【MX-S6-T2】「KDOI-11」飞船 题解
    注意到速度的形式是编号相乘,而又有\(x\in\{1,2,3,4\}\),所以最多\(\log_2y_i\)次速度就会达到\(10^9\)量级,而此时再加油最少需要\(1\)秒,所以再乘一定不优。直接dp,有\(f_{i,j,k}\)表示当前在第\(i\)个加油站,速度为\(2^j3^k\)的最短用时,后面的\(2^j3^k\)可以......