Codeforces 509C Sums of Digits 贪心
这道题目有人用DFS、有人用DP
我觉得还是最简单的贪心解决也是不错的选择。
Ok,不废话了,这道题目的意思就是
原先存在一个严格递增的Arrary_A,然后Array_A[i] 的每位之和为Array_B[i]
现在给你一个Array_B, 让你在条件:
Array_A[len] Minimize
下求出次数组
(当然我们很容易得出,如果Array_A[len] 不是最小化的,那么答案有无穷多,随意暴力一下都可以)
所以这题没有那么暴力= =
解题思路:
首先求出Array_B[i] 和 Array_B[i - 1]的差 delta
如果delta > 0, 那么对Array_A从右到左依次加上去,易得在数据范围内不会TLE
使得最后的Array_A 为 (Carry)9* // Carry为进位, 9*代表后面跟着n个0,n可为0
实现方法可以看下面的代码。
如果delta < 0,对Array_A 从右开始,低于delta的位数清零
同时把Array_A[i] 加进delta
因为接下来有一个操作,需要对Array_A[i]自加1
以防9 + 1 = 10这样的情形出现,所以需要将Array_A[i]开始连续为9的位都清零
同时把Array_A[i] 加进delta
然后重复delta > 0 的情形的操作
经测试最大的答案在300+位,所以数组可以适当开大一点...
Source code:
//#pragma comment(linker, "/STACK:16777216") //for c++ Compiler
#include <bits/stdc++.h>
#define Max(a,b) (((a) > (b)) ? (a) : (b))
#define Min(a,b) (((a) < (b)) ? (a) : (b))
#define Abs(x) (((x) > 0) ? (x) : (-(x)))
#define MOD 1000000007
#define pi acos(-1.0) using namespace std; typedef long long ll ;
typedef unsigned long long ull ;
typedef unsigned int uint ;
typedef unsigned char uchar ; template<class T> inline void checkmin(T &a,T b){if(a>b) a=b;}
template<class T> inline void checkmax(T &a,T b){if(a<b) a=b;} const double eps = 1e- ;
const int N = ;
const int M = ;
const ll P = 10000000097ll ;
const int INF = 0x3f3f3f3f ; int b1, b2;
int a[], len; void output(){
for(int i = len; i >= ; --i){
printf("%d",a[i]);
}
puts("");
} void add(int num){
int i = ;
while(num){
if( == a[i]){
++i;
}
else{
++a[i];
--num;
}
}
checkmax(len, i);
} void add_new(int num){
int i = ;
while(num <= ){
num += a[i];
a[i++] = ;
}
while( == a[i]){
num += a[i];
a[i++] = ;
}
++a[i];
--num;
checkmax(len, i);
add(num);
} int main(){
int i, j, t, n, m;
while(EOF != scanf("%d",&t)){
memset(a, , sizeof(a));
len = ;
scanf("%d",&b1);
add(b1);
output();
for(i = ; i < t; ++i){
scanf("%d",&b2);
int delta = b2 - b1;
b1 = b2;
if(delta > ) add(delta);
else add_new(delta);
output();
} } }
Codeforces 509C Sums of Digits 贪心的更多相关文章
- CodeForces 509C Sums of Digits(贪心乱搞)题解
题意:a是严格递增数列,bi是ai每一位的和,告诉你b1~bn,问你怎样搞才能让an最小 思路:让ai刚好大于ai-1弄出来的an最小.所以直接模拟贪心,如果当前位和前一个数的当前位一样并且后面还能生 ...
- Codeforces 509C Sums of Digits
http://codeforces.com/contest/509/problem/C 题目大意: 给出一个序列,代表原序列对应位置数的每一位的数字之和,原序列单调递增,问原序列的最后一个数最小的方 ...
- [codeforces 509]C. Sums of Digits
[codeforces 509]C. Sums of Digits 试题描述 Vasya had a strictly increasing sequence of positive integers ...
- cf509C Sums of Digits
C. Sums of Digits time limit per test 2 seconds memory limit per test 256 megabytes input standard i ...
- [模拟]Codeforces509C Sums of Digits
题目链接 题意:给n个数a[i], 要求b[i]每位数的和等于a[i], 并且b[i]要严格递增 求最小的b[i] b[0]最小一定是X9999...这样的形式 后面的b[i]位数一定大于等于前一个 ...
- codeforces Gym 100338E Numbers (贪心,实现)
题目:http://codeforces.com/gym/100338/attachments 贪心,每次枚举10的i次幂,除k后取余数r在用k-r补在10的幂上作为候选答案. #include< ...
- [Codeforces 1214A]Optimal Currency Exchange(贪心)
[Codeforces 1214A]Optimal Currency Exchange(贪心) 题面 题面较长,略 分析 这个A题稍微有点思维难度,比赛的时候被孙了一下 贪心的思路是,我们换面值越小的 ...
- Sums of Digits CodeForces - 509C (贪心,模拟)
大意: 一个未知严格递增数组$a$, 给定每个数的数位和, 求$a[n]$最小的数组$a$ #include <iostream> #include <algorithm> # ...
- 【codeforces 509C】Sums of Digits
[题目链接]:http://codeforces.com/contest/509/problem/C [题意] 给你一个数组b[i] 要求一个严格升序的数组a[i]; 使得a[i]是b[i]各个位上的 ...
随机推荐
- 过程需要类型为 'ntext/nchar/nvarchar' 的参数 '@statement'
declare @Sql Nvarchar(4000) SET @Sql = ' select * from a_table '要么这样, 要不然在执行存储过程变量前加N'' ALTER PR ...
- [LeetCode]题解(python):122-Best Time to Buy and Sell Stock II
题目来源: https://leetcode.com/problems/best-time-to-buy-and-sell-stock-ii/ 题意分析: 和上题类似,给定array,代表第i天物品i ...
- [LeetCode]题解(python):099-Recover Binary Search Tree
题目来源: https://leetcode.com/problems/recover-binary-search-tree/ 题意分析: 二叉搜索树中有两个点错了位置,恢复这棵树. 题目思路: 如果 ...
- 斯坦福 IOS讲义 课件总结 三
1,@property (nonatomic,readwrite)NSInteger score;注意这里有一个只读和只写的属性,readonly. 2,重写初始化方法也可以改名字和传参数,(改名一般 ...
- 将默认首页设置成index.do的方法
变态欺骗法,今天csdn一个前辈的,学习了,公司服务器是weblogic的,也可以欺骗. 但是我又非常迫切.非常盼望.非常渴望使用index.do做首页,怎么办? Tomcat中用一段注释: When ...
- 帝国cms本地搬家到服务器文章路径问题?
由于我的服务器不支持采集功能,我只能选择先在本地采集好文章发布于本地,再打算同步于服务器. 按照官方的做法, 1.先进后台备份了网站的所有数据,系统——备份与恢复数据——备份数据 2.将e\admin ...
- 一个最简的 USB Audio 示例
经过了两三个月的痛苦,USB 协议栈的 Audio Device Class 框架已具雏形了,用了两三天时间,使用这个框架实战了一个基于新唐 M0 的最简单的 USB Audio 程序,可以作为 US ...
- 01_什么是Elasticsearch
Logstash是一个开源的用于收集,分析和存储日志的工具. Kibana4用来搜索和查看Logstash已索引的日志的web接口.这两个工具都基于 Elasticsearch. Logstash: ...
- Dream
即使下着雨,天空依旧明亮,因为远方有我的梦想. ——forever97
- android LinearLayout和RelativeLayout实现精确布局
先明确几个概念的区别: padding margin:都是边距的含义,关键问题得明白是什么相对什么的边距padding:是控件的内容相对控件的边缘的边距. margin :是控件边缘相对父空间的边距 ...