ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

AtCoder Grand Contest 044

2021-11-05 18:32:02  阅读:226  来源: 互联网

标签:AtCoder 题意 Contest ll sol lld% zz judge 044


题外话,昨天我写的题解被电脑重启还原卡搞没了


A - Pay to Win

题意:简单来说 题意就是 给一个N 然后给了4种操作的代价 求最小的代价。

sol.可以发现,对于每一次操作,如果要进行乘除法操作,那么肯定应该不留余数

那么只要对 数进行上下取证考虑就好了

#include<bits/stdc++.h>
typedef long long ll;
#define INF 0x7fffffffffffffff
using namespace std;

ll T,n,a[5],p[5] = {2 , 3 , 5},D;

map<ll , ll>judge;

ll f(ll x){
	if(judge.count(x))return judge[x];
	ll zz = INF;
	ll L,R;
	for(int i = 0 ; i < 3 ; i++){
		L = (x / p[i]) * p[i];
		R = ((x + p[i] - 1ll) / p[i]) * p[i];
		zz = min(zz , f(L / p[i]) + abs(x - L) * D + a[i]);
		zz = min(zz , f(R / p[i]) + abs(R - x) * D + a[i]);
	}
	if(x < zz / D)zz = x * D;
	judge[x] = zz;
	return zz;
}

int main(){
	scanf("%lld" , &T);
	while(T--){
		judge.clear();
		scanf("%lld%lld%lld%lld%lld" , &n , &a[0] , &a[1] , &a[2] , &D);
		judge[0] = 0 , judge[1] = D;
		cout<<f(n)<<endl;
	}
}

B - Joker

题意:在\(n\times n的矩阵里面\),有一个 人依次出来的顺序,要求每次出来的人 经过已经有人的格子的个数尽量少,问总和

sol.发现你bfs的过程,答案是一个单调的,每次bfs直接继承就好了

C - Strange Dance

题意:给你\(0-->3^n-1\)的排列,有两种操作,

1> 将排列的每一个数3进制下,1转变为2,2转变为1,

2> 每一个数 + 1 , 且\(mod\ 3^n\)

问最后整个序列的每一个元素的值

sol.直接建一个(0/1/2 trie)就好了,好像还是联合省选原题,zroi原题

标签:AtCoder,题意,Contest,ll,sol,lld%,zz,judge,044
来源: https://www.cnblogs.com/Yeyuqing0913/p/15514669.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有