博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Codeforces 758D Ability To Convert(区间DP)
阅读量:6919 次
发布时间:2019-06-27

本文共 892 字,大约阅读时间需要 2 分钟。

题目链接:

 

题意:一个n进制下的数k,其中k不会用字母,如果有A就用10代替了。求k这个数对应的,在10进制下最小的数。

分析:

本质上是把数字分成若干段使得每一段 <n 且没有前导 0
dp[i] 表示前 i 个字符划分好之后能得到的最小数。
状态枚举下一段怎么切。
1 #include
2 #include
3 #include
4 #include
5 #include
6 #include
7 using namespace std; 8 typedef long long ll; 9 const ll INF=(1LL<<62)-1;10 char s[105];11 ll dp[105];12 int main()13 {14 int n;15 scanf("%d%s",&n,s+1);16 int len=strlen(s+1);17 for(int i=0; i<=len; i++)18 dp[i]=INF;19 dp[0]=0;20 for(int i=1; i<=len; i++)21 {22 ll now=0;23 for(int j=i; j<=len; j++)24 {25 now=now*10+s[j]-'0';26 if(now>=n)break;27 if(s[i]=='0' && j>i)break;28 if(1.0*dp[i-1]*n+now>2e18)continue;29 dp[j]=min(dp[j],dp[i-1]*n+now);30 }31 }32 printf("%lld",dp[len]);33 return 0;34 }

 

 

转载于:https://www.cnblogs.com/TreeDream/p/6322755.html

你可能感兴趣的文章
PHP 设计模式(杂项)
查看>>
Flutter状态管理学习手册(一)——ScopedModel
查看>>
Vue-cli升级webpack4以及各种loader升级配置
查看>>
java学习笔记-4.20
查看>>
Java集合-ArrayList源码解析-JDK1.8
查看>>
Audio Queue Services Programming Guide
查看>>
Dubbo成熟度
查看>>
LeetCode每日一题:链表的中间结点(No.876)
查看>>
Android触摸事件传递机制
查看>>
MRouter(Android路由)
查看>>
面试官问我注解的使用有没有踩过坑
查看>>
Vue-js 零基础 国外案例 DEMO 全课程讲解 1 我是---- 静静
查看>>
藏古拉雍官方旗舰店,藏古拉雍贴膏
查看>>
linux 创建连接命令 ln -s 软链接
查看>>
使用canvas绘制圆弧动画
查看>>
MySQL Binlog 解析工具 Maxwell 详解
查看>>
golang 使用pprof和go-torch做性能分析
查看>>
腾讯赋能小程序,互联网平台拥抱微信小程序已成趋势
查看>>
用自定义注解替代@RequestBody实现xss过滤的尝试
查看>>
CocoaPods安装、使用
查看>>