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_ 阅读详情

相关推荐

AtCoder Beginner Contest 200 题解

A.B比较简单,题解就不放了,主要想说下C的几种做法 C-Ringo’s Favorite Numbers 2 题目链接 本题我在比赛中用的是类似埃氏筛的思想,用一个vis[]数组来标记。但是赛后看队友的做法和editorial提供的做法时,感觉有所启发,故记录一下,感觉还蛮有意思的,主要想分享一下一步步优化的过程。具体做法见我的代码。 #include<bits/stdc++.h> using namespace std; /* //1.法1:埃氏筛的思想,我的做法,核心是统计每一类的个数,然

bogedaye的博客 1054

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

IT资产管理(三)之GLPI资产录入

glpi 在 10 版本之后已经有自带的 glpi-agent 代理程序可自动获取服务器、电脑等的信息并进行自动录入和更新,不再依赖 10 版本之前的 fusioninventory 插件或者第三方资产统计平台 OCS Inventory 等

予挚之的博客 2983

AtCoder题解集锦

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

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

【faers数据库-R语言】

摘要:本文详细介绍了FAERS数据库不良反应信号挖掘的完整流程,包括数据解压导入(R代码示例)、数据结构理解、数据清洗(缺失值处理、标准化、合并和编码映射)、信号挖掘准备(药物-反应组合表创建)以及信号强度指标计算(PRR和ROR)。重点阐述了数据清洗的关键步骤,如缺失值处理(colSums(is.na()))、数据标准化(toupper()、as.Date())和表合并(merge()),并提供了完整的R语言实现代码。最后强调结果需结合临床知识解读,建议使用data.table等高效工具处理大数据。整个流

weixin_46587777的博客 1500

Win11实时字幕还能这么玩?手把手教你打造专属‘AI字幕机’,告别视频网站无字幕困扰

本文详细介绍了如何利用Win11的实时字幕功能打造全平台通用的AI字幕系统。通过C#抓取程序、Node.js中转服务和前端展示界面的组合,实现自动抓取系统字幕并实时推送到任意网页视频的方案,有效解决在线视频无字幕的困扰。

weixin_33735077的博客 391

AtCoder Beginner Contest 288题解(A-G)

AtCoder Beginner Contest 288题解(A-G)

weixin_64008869的博客 1230

扫地机器人行业 企业篇-产业总部地理分布

中国扫地机器人产业呈现区域集聚特征,广东省以13家企业领跑全国,其中深圳独占9家(如大疆、云鲸智能等),佛山、广州、东莞各有分布。江苏省6家企业主要集中在苏州(科沃斯、追觅科技等)。北京聚集了石头科技、小米等4家品牌。浙江、山东、湖南等地也有代表性企业分布。国际品牌方面,美国iRobot、韩国三星/LG、日本松下等均在各自国家设立总部,而戴森、飞利浦等欧洲品牌则将中国运营中心设在上海或苏州。值得注意的是,部分品牌如由利、宝家丽虽为外资起源,但主要运营实体已落户中国。

智能硬件研发,欢迎交流 362

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

1.4 点云数据获取方式——结构光相机

与此同时,利用相机从特定角度捕捉变形后的图案,基于三角测量原理,通过精确计算相机与投影仪之间的几何关系以及图案的变形程度,就能准确计算出物体表面各点的三维坐标,从而获取高精度的三维点云数据。在高端制造业中,对于微小零部件的尺寸测量和缺陷检测,结构光相机能够提供极其精确的数据,确保产品质量符合严格的标准。时序编码:这类相机通过序列投射多幅不同图案,如格雷码、相移条纹等,通过对这一系列图案的时间序列进行解码分析,就能够获取亚像素级精度的三维信息,其单点误差能够控制在≤0.1mm,展现出极高的测量精度。

qq625924821的博客 924

AI人工智能 Agent:在仓储物流中的应用

AI人工智能 Agent:在仓储物流中的应用 1. 背景介绍 1.1 问题的由来 仓储物流行业是全球经济运行的基石之一,涉及商品的存储、运输、分拣和配送等多个环节。随着电子商务的普及和消费者对物流速度和精确性的要求不断提高,仓储物流

AGI×大数据,开启智能时代的认知跃迁;解码AGI,赋能数据驱动的智能革命。 862

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

Python 爬虫教程:金融数据定向抓取(银行 + 投资网站数据结构化提取)

在当今数字化时代,金融数据的获取和分析对于投资者、分析师以及金融机构来说至关重要。Python 爬虫技术可以帮助我们高效地从各种网站上抓取金融数据,从而为投资决策、风险评估和市场分析提供支持。本文将详细介绍如何使用 Python 爬虫技术来定向抓取银行和投资网站的数据,并将其结构化提取,以便进一步分析和使用。

u014481728的博客 881

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

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

weixin_30364147的博客 330

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

AtCoder Regular Contest

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

weixin_34150503的博客 1225

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

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

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

[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

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

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值