arc 166 b

2023-10-10 11:52
文章标签 arc 166

本文主要是介绍arc 166 b,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

#include<bits/stdc++.h>
using namespace std;
using VI = vector<int>;
using ll = long long;
using PII = pair <ll , int>;
const int mod = 998244353;
int n;
//第 i 个字母 状态为 j 的操作次数
//dp[i][j] = dp[i-1][k]ll a[200050];
ll dp[200050][8];//x  y   z
ll x,y,z,xy,xz,yz,xyz;ll calc(ll h, int cur , int pre){//1 0//0 1//0 1int g[3] = {0,0,0};for(int i = 0 ; i <= 2 ; i++){if((cur>>i) & 1 && ((pre>>i) & 1) == 0){g[i] = 1;}}ll t;//3 4//if(g[0] == 0 && g[1] == 0 && g[2] == 0){t = 0;}else if(g[0] == 1 && g[1] == 0 && g[2] == 0){t = x - h % x;t %= x;}else if(g[0] == 1 && g[1] == 1 && g[2] == 0){t = xy - h % xy;t %= xy;}else if(g[0] == 1 && g[1] == 1 && g[2] == 1){t = xyz - h % xyz;t %= xyz;}else if(g[0] == 0 && g[1] == 1 && g[2] == 0){t = y - h % y;t %= y;}else if(g[0] == 0 && g[1] == 1 && g[2] == 1){t = yz - h % yz;t %= yz;}else if(g[0] == 0 && g[1] == 0 && g[2] == 1){t = z - h % z;t %= z;}else if(g[0] == 1 && g[1] == 0 && g[2] == 1){t = xz - h % xz;t %= xz;}return t;}int main(){cin>>n>>x>>y>>z;xy = x * y / __gcd(x,y);xz = x * z / __gcd(x,z);yz = z * y / __gcd(z,y);xyz = xy * z / __gcd(xy,z);for(int i = 1 ; i <= n ; i++) cin>>a[i];for(int i = 0 ; i <= n ; i++){for(int j = 0 ; j <= 7 ; j++){dp[i][j] = 1e18;}dp[i][0] = 0;}for(int i = 1 ; i <= n ; i++){for(int j = 0 ; j <= 7 ; j++){for(int k = 0 ; k <= 7 ; k++){dp[i][j] = min(dp[i][j] , dp[i-1][k] + calc(a[i] , j , k));}}}/* cout<<calc(8 , 2 , 0);cout<<dp[1][2];*/cout<<dp[n][7];}

和网络赛没做出来的dp挺像的

类似就是状态枚举 , 考虑每个状态的花费 , 然后直接转移

这篇关于arc 166 b的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/180257

相关文章

区块链ARC如何能让节点能够大规模处理交易数据

​​发表时间:2024年8月7日 TAAL技术主管Michael Böckli表示,TAAL公司一直在对ARC进行测试,并准备在今年年底全面发布。因TAAL在区块链交易处理方面具备深厚的专业知识,BSV区块链委托TAAL进行ARC开源参考落地方案的开发。 ARC是一个多层交易处理系统,能够追踪交易在BSV区块链上的整个生命周期。 除了遵循BSV区块链的开源指南和要求开发ARC的开源版

将 MRC 项目转换为 ARC 项目

其实很简单,直接使用系统工具转换即可,以下是步骤: 1. 你之前的项目是MRC的   2. 里面有 release, dealloc 等.   3. 开始转化   4. 点击save转化完后,记得把工程重新设置成arc的.

修改后无警告全面支持non-ARC以及ARC的OpenUDID

OpenUDID Open source initiative for a universal and persistent UDID solution for iOS. 首创的给iOS提供设备唯一标示符的一个开源代码. https://github.com/ylechelle/OpenUDID 使用很简单,引入头文件后执行下面一句话即可: 由于原版OpenUDI

ARC下的block导致的循环引用问题解析

引言 使用block已经有一段时间了,感觉自己了解的还行,但是几天前看到CocoaChina上一个关于block的小测试主题:【小测试】你真的知道blocks在Objective-C中是怎么工作的吗?,发现竟然做错了几道,才知道自己想当然的理解是错误的,所以抽时间学习了下,并且通过一些测试代码进行测试,产生这篇博客。 Block简介(copy一段) Block作为C语言的扩展,并不是高新

JAVA毕业设计166—基于Java+Springboot+vue3的流浪宠物救助管理小程序(源代码+数据库)

毕设所有选题: https://blog.csdn.net/2303_76227485/article/details/131104075 基于Java+Springboot+vue3的流浪宠物救助管理小程序(源代码+数据库)166 一、系统介绍 本项目前后端分离带小程序(可以改为ssm版本),分为用户、救助站、管理员三种角色 1、用户: 注册、登录、宠物救助、论坛交流、救助站入驻、个人

ARC下 pop到Rootview 中间controller的内存控制

问题:在APP编写过程中,通常会使用popToRootviewController直接回到根视图,中间的视图控制器内存并没有被释放。 如上图,控制器A push 出B,B push出C, C又push出D,但是在DController中进行操作后pop回到A,在此情景下,控制器B和C里的内存不会释放,不走dealloc方法,        如果B和C加载高内存使用控件,如地图类,视频类,内

ARC学习(3)基本编程模型认识(三)

笔者来介绍arc的编程模型的中断流程和异常流程 1、中断介绍 主要介绍一下中断进入的流程,包括需要配置的寄存器等信息。 中断号:16-255,总共240个中断。触发类型:脉冲或者电平触发中断优先级:16个,0最大,15最小。中断向量表地址:地址0x400对齐,因为中断+异常的地址总共大小占用0x400的字节中断向量大小:32位 1.1 中断配置流程 配置全局优先级阈值,STATUS

Golang | Leetcode Golang题解之第166题分数到小数

题目: 题解: func fractionToDecimal(numerator, denominator int) string {if numerator%denominator == 0 {return strconv.Itoa(numerator / denominator)}s := []byte{}if numerator < 0 != (denominator < 0) {s

iOS程序发布测试4-打包(Arc…

原文地址:iOS程序发布测试4-打包(Archive)发布(share) 作者:我os 发布测试的最后一步打包(Archive),Xcode4帮助文档有比较详细介绍,但是居然是错的,这里说明一下。 1、设置“Build Settings”,下图是官方文档截图,留意那个红框,居然说反了。 "Skip install"一定要选NO,否则在下面的打包步骤后,Organizer看不到你的

一句话说清HDMI ARC eARC功能和区别

HDMI: 高清多媒体接口,主要用于传输高清音视频信号,High Definition Multimedia Interface。 ARC: 音频回传通道,Audio Return Channel eARC: 增强型音频回传通道,第一个E是增强的意思,Enhanced Audio Return Channel。 一句话说清ARC或EARC ARC或EARC的作用是将电视的声音信号送给