AtCoder | ARC064 | 题解

AtCoder ABC336 A-D题解 AtCoder ABC336 题解 阅读详情

ARC064

感觉这场还是挺简单的(但这并不影响我仍然不会做QwQ

E E E题感觉啥都想到了。…知道要去求最短路…但却没有想到dij…???(smg

C. Boxes and Candies

肯定是尽量改 [ 2 , n − 1 ] [2,n-1] [2,n−1]的嘛…所以你就一遍扫下来就行啦呀

#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int N = 1e5 + 10;
ll a[N];

int main() {
	int n, x;
	cin >> n >> x;
	for(int i = 1; i <= n; ++i) {
		scanf("%lld", &a[i]);
	}
	ll pos = 0;
	for(int i = 2; i <= n; ++i) {
		ll gg = max(0ll, (a[i] + a[i - 1]) - x);
		a[i] -= min(a[i], gg);
		pos += gg;
	}
	printf("%lld\n", pos);
	return 0;
}
D.An Ordinary Game

可以发现

  • 如果头和尾是相同的话 假设这么一个串 a b a b a ababa ababa( b b b可以为任意字符)

    那么长度为奇数的话必败

  • 如果头和尾不相同 那么这么一个串 a c a c acac acac( a , c a,c a,c也可以为任意字符)

    那么长度为偶数的话必败

#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
char lx[N];

int main() {
	scanf("%s", lx + 1);
	int len = strlen(lx + 1);
	if(lx[1] == lx[len]) {
		if(len & 1) printf("Second\n");
		else printf("First\n");
	} else {
		if(len & 1) printf("First\n");
		else printf("Second\n");
	}
	return 0;
}
E.Cosmic Rays

把每一个圆当作一个点 (圆和圆之间的距离是圆心距离-半径和 和 0 0 0取个max就行啦)

然后你跑一遍最短路就行了

#include <bits/stdc++.h>
using namespace std;
const int N = 1010;
const double inf = 1e-12;
struct Point {
	double x, y;
} c[N];
int vis[N];
double R[N], f[N];

double pf(double x) {
	return x * x;
}

double dis(Point A, Point B) {
	return sqrt(pf(A.x - B.x) + pf(A.y - B.y));
}

double get(int k, int j) {
	return max(0.0, dis(c[k], c[j]) - (R[k] + R[j]));
}

int main() {
	for(int i = 1; i <= 2; ++i) {
		scanf("%lf%lf", &c[i].x, &c[i].y);
		R[i] = 0;
	}
	int n;
	scanf("%d", &n);
	n += 2;
	for(int i = 1; i <= n; ++i) f[i] = 3e9;
	for(int i = 3; i <= n; ++i) {
		scanf("%lf%lf%lf", &c[i].x, &c[i].y, &R[i]);
	}
	f[1] = 0;
	for(;;) {
		int be = -1;
		for(int i = 1; i <= n; ++i) {
			if(vis[i]) continue;
			if(be == -1 || f[be] > f[i]) be = i;
		}
		if(be == -1) break;
		vis[be] = 1;
		for(int i = 1; i <= n; ++i) {
			f[i] = min(f[i], f[be] + get(i, be));
		}
	}
	printf("%.12f\n", f[2]);
	return 0;
}
F.Rotated Palindromes

我们设 f [ i ] f[i] f[i]表示长度为 i i i且没有长度大于1的循环节的回文串个数

那么显然 f [ i ] = k ⌈ i 2 ⌉ − ∑ d ∣ i f [ d ] f[i]=k^{\lceil{\dfrac{i}{2}}\rceil}-\sum_{d|i}f[d] f[i]=k⌈2i​⌉−∑d∣i​f[d]

由于每次你只需要根号级别复杂度…所以这个可以很快处理出来

那么最后的 a n s = ∑ d ∣ n [ d &amp; 1 ] ∗ d ∗ f [ d ] + [ ! ( d &amp; 1 ) ] ∗ d 2 ∗ f [ d ] ans=\sum_{d|n}[d\&amp;1]*d*f[d]+[!(d\&amp;1)]*\dfrac{d}{2}*f[d] ans=∑d∣n​[d&1]∗d∗f[d]+[!(d&1)]∗2d​∗f[d]

因为长度为偶数时 移到一半的时候就会开始重复 所以要除以2

#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int mod = 1e9 + 7;
int n, k;
map<int, ll> f;

ll add(ll x, ll y) {
	return (x + y + mod) % mod;
}

void Add(ll &x, ll y) {
	x = (x + y + mod) % mod;
}

ll mul(ll x, ll y) {
	return (x * y) % mod;
}

void Mul(ll &x, ll y) {
	x = (x * y) % mod;
}

ll q_pow(ll x, int y) {
	ll ans = 1;
	for(; y; y >>= 1) {
		if(y & 1) Mul(ans, x);
		Mul(x, x);
	}
	return ans;
}

ll get(int x) {
	if(!f.count(x)) {
		int len = sqrt(x);
		ll pos = q_pow(k, (x / 2) + (x & 1));
		for(int i = 2; i <= len; ++i) {
			if(x % i) continue;
			Add(pos, -get(i));
			if(i * i != x) Add(pos, -get(x / i));
		}
		if(x != 1) Add(pos, -k);
		return f[x] = pos;
	} else return f[x];
}

int main() {
	scanf("%d%d", &n, &k);
	int len = sqrt(n);
	ll ans = 0;
	for(int i = 1; i <= len; ++i) {
		if(n % i) continue;
		if(i & 1) Add(ans, mul(i, get(i)));
		else Add(ans, mul(i / 2, get(i)));
		if(i * i != n) {
			int now = n / i;
			if(now & 1) Add(ans, mul(now, get(now)));
			else Add(ans, mul(now / 2, get(now)));
		}
	}
	printf("%lld\n", (ans + mod) % mod);
	return 0;
}

本文作者:Averyta

博客地址:https://blog.youkuaiyun.com/AngryVegetable

AtCoder Beginner Contest 172 E - NEQ(二项式反演) AtCoder Beginner Contest 172 E - NEQ 题意: 求满足下列条件的长度为 NNN且包含 [1,M][1, M][1,M]范围内整数的序列 A1,A2,⋯ ,ANA_1, A_2, \cdots, A_NA1​,A2​,⋯,AN​及 B1,B2,⋯ ,BNB_1, B_2, \cdots, B_NB1​,B2​,⋯,BN​组成的序列对数量。 ∀1≤i<j≤N,  Ai≠Aj∧Bi≠Bj\forall 1 \le i \lt j \le N, \; A_i \neq A_ 阅读详情

相关推荐

深入解析.Net中SM2与sm-crypto的跨平台加解密实践

本文深入探讨了在.Net平台与前端sm-crypto库之间实现SM2国密算法跨平台加解密的实践方案。针对对接中常见的密钥格式、密文拼接顺序(C1C3C2与C1C2C3)等核心难点,提供了基于BouncyCastle的完整工具类实现、前后端联调示例及问题排查指南,旨在帮助开发者构建安全、兼容的数据加密通道。

weixin_29322855的博客 369

AtCoder Regular Contest 064 ,D An Ordinary Game(博弈,一定会产生某种结果)

题目描述: D - An Ordinary Game Time Limit: 2 sec / Memory Limit: 256 MB Score :500500points Problem Statement There is a stringssof length33or greater...

又菜又爱玩 315

BEV感知技术全景解析:从纯视觉到多传感器融合的实战指南

本文全面解析了自动驾驶中的BEV感知技术,从纯视觉到多传感器融合的实战应用。文章深入探讨了BEV如何提供“上帝视角”,对比了IPM、Lift-Splat-Shoot及Transformer等核心实现范式,并详细阐述了多传感器融合(尤其是中融合)的工程实践与优势,为开发者提供了从理论到原型搭建的完整指南。

win55的博客 1139

AtCoder题解集锦

AtCoder题解集锦 自己从全网整理的一些优质AtCoder题解,目前只有ABC(AtCoder Beginner Contest)的C~F。不定期更新。 如您有更多需求,欢迎私信我或在评论区留言! 用法 表格查找 找到对应比赛的行 找到对应题目的列 该位置即为对应的题解 题号查找 在浏览器中按下搜索快捷键Ctrl+F,调出搜索窗口。 输入对应的题号,如244F 找到对应题解 标题查找 在浏览器中按下搜索快捷键Ctrl+F,调出搜索窗口。 输入题目标题,如Shortest Good

天生我材必有用,千金散尽还复来。 1万+

Windows下用VS2022编译libcurl全流程(含openssl配置避坑指南)

本文详细介绍了在Windows平台使用Visual Studio 2022编译libcurl库的完整流程,重点解决了集成OpenSSL支持HTTPS功能时的常见配置难题。从环境准备、源码获取、依赖编译到工程配置,提供了清晰的步骤和针对非默认安装路径的避坑指南,帮助开发者高效完成网络库的集成工作。

weixin_29291185的博客 245

ubuntu22.04降级安装CUDA11.3

ubuntu22.04原CUDA12.1降级安装11.3

gls_nuaa的博客 1779

AtCoder Beginner Contest 288题解(A-G)

AtCoder Beginner Contest 288题解(A-G)

weixin_64008869的博客 1230

宏基因组分析|从Binning到MAG优化的全流程实战指南

本文提供了一份宏基因组分析从Binning到MAG优化的全流程实战指南。详细解析了宏基因组分箱(Binning)的核心原理与必要性,并手把手指导如何利用Bowtie2、MetaBAT2和CheckM等工具构建分箱流水线,进行质量评估与筛选,最终获得高质量宏基因组组装基因组(MAG)。文章还分享了常见问题排查与进阶优化策略,为后续物种分类、功能注释等深度分析奠定坚实基础。

weixin_29260291的博客 455

AtCoder Beginner Contest 214 G. Three Permutations(组合数学 容斥 背包 二项式反演)

剩下n-i个随便选(可能冲突),乘以n-i的阶乘,转化成至少冲突i次的方案数。1. 如果选了(1,n),对应长为n-2的链上选k-1对匹配的方案,在新环上:则认为是在长度为2*n的环上,选择一对相邻的点两两匹配,剩下的随便选,转化成至少冲突k次的方案数,利用二项式反演解决。2. 如果没选(1,n),对应长为n的链选k对匹配的方案,暴力合并背包,得到恰好选了i个冲突的点的方案数,由于原来长为n的环变为新的长为2n的环,考虑容斥,算恰好冲突的k次的方案数,对于环来说,一个长为n的环,

小衣同学的博客 546

虚拟机安装VMware Tools

单击虚拟机-->安装VMware Tool 安装之后会有一个VMware Tools硬盘,里面有VMware Tools.tar.gz的压缩包 按照提示解压它,然后执行vmware-install.pl安装VMware Tools 将安装包放到/tmp目录下。可以直接拽过去,也可以使用cp或者mv命令 进入tmp文件目录并解压此文件包 cd /tmp ...

afei001 620

有限元分析-静力学分析-与分析解对比-——以阶梯轴的静力分析为例——静态结构分析

150mm,a=300mm{a=300mm}a=300mm,b=200mm{b=200mm}b=200mm,L=1000mm{L=1000mm}L=1000mm,F=300kN{F=300kN}F=300kN,材料为45,弹性模量E=2.1e11Pa{E=2.1e11Pa}E=2.1e11Pa,泊松比v=0.28{v=0.28}v=0.28,屈服应力δs=355MPa{δ_s=355MPa}δ。使用line body生成的模型,可以选择自动划分网格的,WB会将以梁单元将其划分完成,例如图2所示。

qq_15963745的博客 66

AtCoder整理(持续更新中……)

做了那么久的atcoder觉得自己的题解发的很乱 给有想和我一起交流atcoder题目(或者指出我做法的很菜)(或者指责我为什么整场比赛只会抄题解)的同学一个索引的机会??? 于是写了个爬虫爬了下 AtCoder整理 AGC 【AtCoder】AGC034 【AtCoder】AGC033 【AtCoder】AGC032 【AtCoder】AGC031 【AtCoder】AGC030 【A...

weixin_30364147的博客 330

YOLOv12改进策略【卷积层】| CVPR-2020 利用DynamicConv 动态卷积 结合A2C2f进行二次创新,提高精度

在大规模视觉预训练中,通常模型的性能受到数据、参数和FLOP三个关键因素的影响。一般来说,模型的参数数量越多,FLOP也越高,但在移动设备等对计算资源有限制的场景下,需要低FLOP的模型同时又希望模型能从大规模预训练中受益。传统的方法很难在增加参数的同时保持低FLOP,因此需要一种新的设计来解决这个问题,模块应运而生。

Limiiiing的博客 827

AtCoder Regular Contest

一句话题解 因为上篇AGC的写的有点长……估计这篇也短不了所以放个一句话题解方便查阅啥的吧QwQ 具体的题意代码题解还是往下翻…… ARC 058 D:简单容斥计数。 E:用二进制表示放的数字,然后状压$DP$。 F:$biset$优化$DP$预处理,乱搞贪心。 ARC 059 D:傻题,存在长的合法子串就一定会存在短的。 E:前缀和优化$DP$。 F:每个长度为$len$的串...

weixin_34150503的博客 1225

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

ARC 刷题记录 · 壹 | 错题本

文章目录10.22[ARC058B] Iroha and a Grid[ARC058C] Iroha and Haiku[ARC059C] Children and Candies[ARC059D] Unhappy Hacking 标红的表示看了题解。 10.22 [ARC058B] Iroha and a Grid 简单计数题,总方案减不合法的即可,不合法的可以枚举 A×BA \times BA×B 的矩形的一个对角线计算。 #include <bits/stdc++.h> const in

ixRic 540

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

[AtCoder ARC077 .F] [字符串] [乱搞] SS

翻译下题解…可以发现一次变化是f(SS)=STSTf(SS)=STST,其中TT是S的一个前缀,|T||T|是S的最小周期 那么我们就只需要考虑变化g(S)=STg(S)=ST,因为不断变化1010010^{100}次的话,后面的部分就可以省去设TT的长度为dd,SS的长度是nn 可以证明如果d|nd|n,那么g(ST)=STTg(ST)=STT 否则,g(ST)=STSg(ST)=STS那么

CE玩家 1061

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

AtCoder - 2154 Cosmic Rays

E - Cosmic RaysTime limit : 2sec / Memory limit : 256MB Score : 600 pointsProblem StatementOn the xy-plane, Snuke is going to travel from the point (xs,ys) to the point (xt,yt).He can move in arbitra...

PinesL 503

atcoder:Tokio Marine & Nichido Fire Insurance Programming Contest 2020:E - O(rand)(位运算+二项式反演)

题目大意:从 N 个数字中选 1 到 k 个,使得这些数字的与运算结果为 s, 或运算结果为 t,为有多少种选择方案。 首先我们只关注 集合a 中满足 (x & s) == s && (x & t) == x 的元素 x,称这个集合为 X:{x},令 t = t ^ s,通过预处理,将 t 中为 1的位提出来,此时问题等价于:s = 0, t = 2L−12^L - 12L−1。 这相当于要从集合 X 中选出 [1,k] 个元素作为一个新的集合,使得这个新集合中在这 L .

qq_41997978的博客 914

ATCODER ABC C题解

set_target_properties(mypass1 PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS ON) #---->修改 项目名称。set(LLVM_DIR "D:/LLVM/llvm-project/build/lib/cmake/llvm")#---->修改 llvm cmake配置路径。target_compile_options(mypass1 PRIVATE /utf-8)#---->修改 项目名称,文件名。

sFi7abSRK的博客 186

AtCoder Beginner Contest 324题解(F,G)

为了让移除大于某个数操作的erase操作最少,可以用两个set以对顶堆的形式维护中位数,若给定数大于中位数,则把原序列不断弹出最大的,若小于中位数,则交换两序列位置,不断弹出最小的元素给原序列的位置。题意:给定一个1-N的排列作为序列0,然后不断从此前某个序列中要么移除第k个元素之后的所有元素组成新序列,要么移除大于某个数的所有元素构成新序列。原操作相当于对序列不断的分拆,我们倒过来考虑对序列不断的合并,而且总让序列短的合并进序列长的,被合并的元素由于每次合并后所在序列长度增加一倍,最多被合并。

weixin_44589861的博客 248

ABC 321 A-F

ABC321

qq_73994342的博客 446

Atcoder AGC002 题解

A - Range Product 如果区间包含0就输出Zero,如果负数的个数是奇数个就输出Negative,否则输出Positive #include&lt;bits/stdc++.h&gt; using namespace std; #define RI register int int a,b; int main() { scanf("%d%d",&amp;a,&amp;b); if(...

litble的成(tui)长(fei)史 742

Atcoder-abl_d-Flat Subsequence题解(线段树+dp)

ACL Beginner Contest D - Flat Subsequence(线段树+dp)

qq_42987482的博客 396

Atcoder Beginner Contest 356题解(D、E)

出现的次数,可以对这个桶数组再求个前缀和,则可以用这个前缀和数组。的二进制表示中1的个数,所以可以按位考虑,考虑有多少个。写代码时注意取模操作,传入函数中的参数也应该取模。,因为后者是调和级数,所以时间复杂度就是。,那么我们这样操作的时间复杂度就是。考虑如果a数组中的元素各不相同。排序以方便理解)从前往后枚举。,我们发现这个x的最大值就是。地求出某一连续值域中出现的。中的每一个元素,求当前位置。对于每个x,我们可以用。倍的情况并且注意把相同的。,那么这两个位一定都是。,可以开个桶来存储每个。

光mon的博客 1111
上一篇: 算法 | 动态dp学习笔记 | 未完待更
下一篇: 一些题解的传送门qwq
Averyta
博客等级 码龄7年 1粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值