orz 最近被水题卡+FST,各种掉rating

题目大意

一个数s它是n进制的,但是每一位不是用'A','B'....表示的,而是用10,11等等表示的,将它还原成十进制

这种表示方法显然会产生多解,然后求所有的解中最小的那个

这题一想就是贪心,但是一开始算法写渣了,改变思路以后才A的

简单来说就是从右边开始,把尽量多的数压到一位里面,这样会使数更小

压的思路可以这么考虑

每次新加进来一个数,如果加进来以后,已经大于原来的那个数,那么就找截取一段可行的最大数

这样考虑的目的是处理前导0带来的影响

0也有可能是单独的一位,也有可能与其他数压到同一位里

想清楚这个以后就不难写了

#include <iostream>
#include <cmath>
#include <cstring>
using namespace std;
typedef long long ll;
string str, n;
ll last, w;
bool compare(int x, int y)
{if(y-x > n.length()) return true;if(y-x < n.length()) return false;for(int i = x; i < y; i++){if(str[i] == n[i-x]) continue;if(str[i] > n[i-x]) return true;else return false;}return true;
}
ll cal(string str, int x, int y)
{ll ans = 0;for(int i = x; i < y; i++)ans = ans*10 + str[i] - '0';return ans;
}
int main()
{cin>>n;cin>>str;ll ans = 0, k = 1;last = str.length();for(int i = str.length()-1; i >= 0; i--){while(compare(i, last)){int j;for(j = i; j < last; j++){if(str[j] == '0') continue;if(compare(j, last)) continue;j++; break;}j--;ans += cal(str, j, last)*k;last = j;k *= cal(n, 0, n.length());}}if(last != 0) ans += cal(str, 0, last)*k;cout<<ans<<endl;
}

转载于:https://www.cnblogs.com/Saurus/p/6322598.html

Codeforces Round #392(div 2) 758D (贪心)相关推荐

  1. Codeforces Round #620 (Div. 2) D 贪心 revers 的妙用 编程思维的降维打击

    题目 题解思路 贪心 思路 要让最短 就是让大的数尽可能的出现在前面 最长则相反 一开始想拼接出来,无奈写的太多问题放弃了. 参考文章 最短 就先让 全部数字先从大到小输入进去 再控制他符合题目的条件 ...

  2. Codeforces Round #700 (Div. 2) D2 Painting the Array II(最通俗易懂的贪心策略讲解)看不懂来打我 ~

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 整场比赛的A ~ E 6题全,全部题目超高质量题解链接: Codeforces Round #700 ...

  3. Codeforces Round #699 (Div. 2) F - AB Tree(贪心、树上DP)超级清晰,良心题解,看不懂来打我 ~

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Codeforces Round #699 (Div. 2) F - AB Tree Problem ...

  4. 贪心 Codeforces Round #236 (Div. 2) A. Nuts

    题目传送门 1 /* 2 贪心:每一次选取最多的线段,最大能放置nuts,直到放完为止,很贪婪! 3 题目读不懂多读几遍:) 4 */ 5 #include <cstdio> 6 #inc ...

  5. 贪心 Codeforces Round #191 (Div. 2) A. Flipping Game

    题目传送门 1 /* 2 贪心:暴力贪心水水 3 */ 4 #include <cstdio> 5 #include <algorithm> 6 #include <cs ...

  6. Codeforces Round #167 (Div. 1) C. Dima and Horses(BFS+贪心)

    题目大意 有 n(1≤n≤3*105) 匹马,每条马都有几个敌人(不超过 3 个),现在要求把这些马分成两部分(允许一部分中没有一条马),使得对于每条马,和它在同一部分中的敌人的数量不超过1个 给出了 ...

  7. 贪心+构造 Codeforces Round #277 (Div. 2) C. Palindrome Transformation

    题目传送门 1 /* 2 贪心+构造:因为是对称的,可以全都左一半考虑,过程很简单,但是能想到就很难了 3 */ 4 /**************************************** ...

  8. Codeforces Round #579 (Div. 3) F2. Complete the Projects (hard version) dp + 贪心

    传送门 文章目录 题意: 思路: 题意: 思路: 排序方式跟easyeasyeasy版本的一样,但是hardhardhard版本是输出最多能选多少,所以我们对b<0b<0b<0的情况 ...

  9. Codeforces Round #726 (Div. 2) E2. Erase and Extend (Hard Version) 贪心

    传送门 文章目录 题意: 思路: 题意: 给你一个长度为nnn的串sss,你有两个操作可以使用: (1)(1)(1)从sss的结尾删除一个字母. (2)s=s+s(2)s=s+s(2)s=s+s. 让 ...

最新文章

  1. 国外设计师眼中的原型工具Mockplus
  2. 磁盘显示执行页内操作时的错误要如何找到资料
  3. java单例模式几种实现方式
  4. 最短工期 (25 分)【拓扑排序模板】
  5. iOS 快速实现分页界面的搭建
  6. OpenMap教程4 –图层
  7. 009-MailUtils工具类模板
  8. linux内核支持的加密算法,Linux Kernel(Android) 加密算法总结(三)-应用程序调用内核加密算法接口...
  9. C语言fwrite函数了解
  10. 定义一个圆的类,输入半径,计算周长和面积并输出
  11. c语言计算分段函数_Rust能够取代C语言吗?
  12. Flask render_template
  13. JDK动态代理的实现原理
  14. java memcached incr_Memcached incr/decr 命令
  15. 基于matlab 的电力系统潮流仿真
  16. 刚开始接触编程也能轻松写的计算器代码(VS2019)(c语言)
  17. rtd1296 mtd 设备驱动分析
  18. 中国已消失的 9 所世界级大学
  19. 苹果电脑的计算机系统在哪里,苹果电脑切换系统按哪个键【方法介绍】
  20. Oracle数据库实例之进程架构(二)

热门文章

  1. 【STM32】GPIO相关函数和类型
  2. 【Linux】一步一步学Linux——enable命令(212)
  3. 推箱子java下载_Java实现简单推箱子游戏
  4. vue 封装调用 wangeditor v4.0富文本编辑框组件 v-model
  5. 关于 jsp java servlet 中文汉字乱码的解决方法
  6. Java堆排序递归_大顶堆第二弹----堆排序(递归实现)
  7. mac端addr2line的NDK位置和使用
  8. vscode could not establish connection to linux The VS Code Server failed to start
  9. 实现接口java_Java – 实现接口
  10. java-Set集合源码学习