Codeforces Round #392(div 2) 758D (贪心)
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 (贪心)相关推荐
- Codeforces Round #620 (Div. 2) D 贪心 revers 的妙用 编程思维的降维打击
题目 题解思路 贪心 思路 要让最短 就是让大的数尽可能的出现在前面 最长则相反 一开始想拼接出来,无奈写的太多问题放弃了. 参考文章 最短 就先让 全部数字先从大到小输入进去 再控制他符合题目的条件 ...
- Codeforces Round #700 (Div. 2) D2 Painting the Array II(最通俗易懂的贪心策略讲解)看不懂来打我 ~
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 整场比赛的A ~ E 6题全,全部题目超高质量题解链接: Codeforces Round #700 ...
- Codeforces Round #699 (Div. 2) F - AB Tree(贪心、树上DP)超级清晰,良心题解,看不懂来打我 ~
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Codeforces Round #699 (Div. 2) F - AB Tree Problem ...
- 贪心 Codeforces Round #236 (Div. 2) A. Nuts
题目传送门 1 /* 2 贪心:每一次选取最多的线段,最大能放置nuts,直到放完为止,很贪婪! 3 题目读不懂多读几遍:) 4 */ 5 #include <cstdio> 6 #inc ...
- 贪心 Codeforces Round #191 (Div. 2) A. Flipping Game
题目传送门 1 /* 2 贪心:暴力贪心水水 3 */ 4 #include <cstdio> 5 #include <algorithm> 6 #include <cs ...
- Codeforces Round #167 (Div. 1) C. Dima and Horses(BFS+贪心)
题目大意 有 n(1≤n≤3*105) 匹马,每条马都有几个敌人(不超过 3 个),现在要求把这些马分成两部分(允许一部分中没有一条马),使得对于每条马,和它在同一部分中的敌人的数量不超过1个 给出了 ...
- 贪心+构造 Codeforces Round #277 (Div. 2) C. Palindrome Transformation
题目传送门 1 /* 2 贪心+构造:因为是对称的,可以全都左一半考虑,过程很简单,但是能想到就很难了 3 */ 4 /**************************************** ...
- Codeforces Round #579 (Div. 3) F2. Complete the Projects (hard version) dp + 贪心
传送门 文章目录 题意: 思路: 题意: 思路: 排序方式跟easyeasyeasy版本的一样,但是hardhardhard版本是输出最多能选多少,所以我们对b<0b<0b<0的情况 ...
- 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. 让 ...
最新文章
- 国外设计师眼中的原型工具Mockplus
- 磁盘显示执行页内操作时的错误要如何找到资料
- java单例模式几种实现方式
- 最短工期 (25 分)【拓扑排序模板】
- iOS 快速实现分页界面的搭建
- OpenMap教程4 –图层
- 009-MailUtils工具类模板
- linux内核支持的加密算法,Linux Kernel(Android) 加密算法总结(三)-应用程序调用内核加密算法接口...
- C语言fwrite函数了解
- 定义一个圆的类,输入半径,计算周长和面积并输出
- c语言计算分段函数_Rust能够取代C语言吗?
- Flask render_template
- JDK动态代理的实现原理
- java memcached incr_Memcached incr/decr 命令
- 基于matlab 的电力系统潮流仿真
- 刚开始接触编程也能轻松写的计算器代码(VS2019)(c语言)
- rtd1296 mtd 设备驱动分析
- 中国已消失的 9 所世界级大学
- 苹果电脑的计算机系统在哪里,苹果电脑切换系统按哪个键【方法介绍】
- Oracle数据库实例之进程架构(二)
热门文章
- 【STM32】GPIO相关函数和类型
- 【Linux】一步一步学Linux——enable命令(212)
- 推箱子java下载_Java实现简单推箱子游戏
- vue 封装调用 wangeditor v4.0富文本编辑框组件 v-model
- 关于 jsp java servlet 中文汉字乱码的解决方法
- Java堆排序递归_大顶堆第二弹----堆排序(递归实现)
- mac端addr2line的NDK位置和使用
- vscode could not establish connection to linux The VS Code Server failed to start
- 实现接口java_Java – 实现接口
- java-Set集合源码学习