CF1428 G1,G2 . Lucky Numbers

首先可以发现写下的这些数中最多只有一个数不是全部由0,3,6,9构成的。

然后其余的必须是3的倍数。可以发现这就是一个多重背包问题,将每一额物品拆分成log⁡2\log_2log2​个就行了。

/*
{
######################
#       Author       #
#        Gary        #
#        2020        #
######################
*/
//#pragma GCC target ("avx2")
//#pragma GCC optimization ("O3")
//#pragma GCC optimization ("unroll-loops")
#pragma GCC optimize(2)
#include<bits/stdc++.h>
#define rb(a,b,c) for(int a=b;a<=c;++a)
#define rl(a,b,c) for(int a=b;a>=c;--a)
#define LL long long
#define IT iterator
#define PB push_back
#define II(a,b) make_pair(a,b)
#define FIR first
#define SEC second
#define FREO freopen("check.out","w",stdout)
#define rep(a,b) for(int a=0;a<b;++a)
#define SRAND mt19937 rng(chrono::steady_clock::now().time_since_epoch().count())
#define random(a) rng()%a
#define ALL(a) a.begin(),a.end()
#define POB pop_back
#define ff fflush(stdout)
#define fastio ios::sync_with_stdio(false)
#define check_min(a,b) a=min(a,b)
#define check_max(a,b) a=max(a,b)
using namespace std;
const int INF=0x3f3f3f3f;
typedef pair<int,int> mp;
/*}
*/
const int MAXN=1000000;
int k;
int f[6];
int num=1;
LL dp[MAXN+20];
LL calc(int num){LL ret=0;rb(i,0,5){if((num%10)%3==0){ret+=1ll*(num%10)/3*f[i];}num/=10;}return ret;
}
int main(){scanf("%d",&k);k--;memset(dp,-127,sizeof(dp));dp[0]=0;rb(i,0,5){vector<pair<LL,LL> > obj; scanf("%d",&f[i]);int cnt_obj=3*k;int z=1;while(cnt_obj>=z){cnt_obj-=z;    if(1ll*z*num<=1ll*MAXN)obj.PB(II(1ll*3*z*num,1ll*z*f[i]));
//          cout<<z*num<<' '<<z*f[i]<<endl;z<<=1;  }if(cnt_obj){if(1ll*cnt_obj*num<=1ll*MAXN)obj.PB(II(1ll*3*cnt_obj*num,1ll*cnt_obj*f[i]));}for(auto it:obj){rl(ii,MAXN,it.FIR){check_max(dp[ii],dp[ii-it.FIR]+it.SEC);}}rl(ii,MAXN,0)rb(j,0,9){if(j*num<=ii){check_max(dp[ii],dp[ii-j*num]+(j%3==0? 1ll*(j/3)*f[i]:0ll));}   else break;}num*=10;}int q;scanf("%d",&q);while(q--){int ni;scanf("%d",&ni);printf("%I64d\n",dp[ni]);
//      LL rest=0;
//      rb(i,0,ni){//          if((ni-i)%3==0){//              check_max(rest,dp[(ni-i)/3]+calc(i));
//          }
//      }
//      cout<<rest<<endl;}return 0;
}

CF1428 G1,G2 . Lucky Numbers题解相关推荐

  1. Codeforces791:Ordinary Numbers题解

    Codeforces Round#791(Div.3) B.Ordinary Numbers Ordinary Numbers题解 Codeforces Round#791(Div.3) B.Ordi ...

  2. HDU 5676 ztr loves lucky numbers

    -亚信科技,巴卡斯(杭州),壹晨仟阳(杭州),英雄互娱(杭州)  (包括2016级新生)除了校赛,还有什么途径可以申请加入ACM校队?  ztr loves lucky numbers Time Li ...

  3. D - Undoubtedly Lucky Numbers CodeForces - 244B(数论 )

    Polycarpus loves lucky numbers. Everybody knows that lucky numbers are positive integers, whose deci ...

  4. 【CodeForces - 244B】Undoubtedly Lucky Numbers (dfs打表 + 二分)

    题干: Polycarpus loves lucky numbers. Everybody knows that lucky numbers are positive integers, whose ...

  5. UVA10909 Lucky Number题解

    原文链接:http://www.algorithmist.com/index.php/User:Sweepline/UVa_10909.cpp AC的C++语言程序: /** Solution for ...

  6. [ZZ]google G1,G2,G3比较

    其实G1,G2,G3的主要不同点有以下几个: 1.CPU G1,G2都是Qualcomm MSM7201A 528 MHz G3是Qualcomm MSM7200A 528 MHz 应该说7201A出 ...

  7. google G1,G2,G3比较(YY)

    其实G1,G2,G3的主要不同点有以下几个: 1.CPU G1,G2都是Qualcomm MSM7201A    528 MHz G3是Qualcomm      MSM7200A    528 MH ...

  8. codeforces #235 D. Roman and Numbers 题解

    转载请注明:http://blog.csdn.net/jiangshibiao/article/details/23100595 [原题] D. Roman and Numbers time limi ...

  9. Hexadecimal's Numbers 题解

    点此打开原题链接:传送门 !!!!!: C. Hexadecimal's Numbers time limit per test 1 second memory limit per test 64 m ...

  10. HUST 1600 Lucky Numbers

    暴力打表. #include<cstdio> #include<cstring> #include<cmath> #include<string> #i ...

最新文章

  1. 《CCNP TSHOOT 300-135认证考试指南》——6.4节SVI故障检测与排除
  2. Android驱动之 Linux Input子系统之TP——A/B(Slot)协议
  3. php动态网页设计教材,PHP动态网页设计(第2版)
  4. Microsoft SharePoint Server 2010 的新增功能
  5. vue 单独页面定时器 离开页面销毁定时器
  6. HTML 5 会让iOS和Android开发者转行吗?
  7. 手把手教你云服务器如何搭建typecho博客网站(包括配置免费SSL证书)
  8. [转载]Mysql导出表结构及表数据 mysqldump用法
  9. 阿里云前端周刊 - 第 18 期
  10. Ubuntu 安装 Libmodbus
  11. ARQ协议与滑动窗口协议
  12. Unity 导入图片安卓和IOS自动转换格式ETC2或者ASTC
  13. 去中心化和中心化哪个才是未来,Dex.top教你熊市生存指南
  14. 【PDF密码删除软件】Enolsoft PDF Password Remover for Mac
  15. cd与cd /d命令
  16. erdas查看灰度直方图_ERDAS图像的基本操作
  17. 魔术的逻辑(三)——明明是假的,但为何奇迹依旧美妙?
  18. 彻底删除软件,删除注册列表信息
  19. 服务器能用系统急救箱吗,360急救(乱用360系统急救箱后果)
  20. logicaldoc的外部认证——AD集成

热门文章

  1. Android中仿微信选择图片并展示在RecyclerView中
  2. 云服务器安卓虚拟机,云服务器安装安卓虚拟机
  3. j1900做网站服务器,j1900可以跟云服务器
  4. led伏安特性实验误差分析_1实验数据的误差分析与处理.doc
  5. C#ObjectArx Cad将图形范围缩放至指定实体
  6. android 源代码分析 绘制,Android源码分析(View的绘制流程)
  7. Linux第7章Gdk及Cairo基础,GNOME 平台的2D图形编程(GTK,GDK,Cairo...) 简介 [转]...
  8. 在vue中使用marked解析markdown文件
  9. 腾讯与阿里巴巴投资可编程芯片公司Barefoot Networks
  10. 【柒穆雨】什么是平面设计,学习平面设计需要具备什么条件?