题目大意:

就是现在给出10万个1e9以内的非负整数, 问他们两两相加一共会有多少次进位(10进制加法), 例如99 + 1有2次进位, 10 + 19没有进位

大致思路:

其实就是一个简单题, 比赛的时候想了半天一直束缚在按位考虑的范围内没有想到以一整段后缀位来考虑...数位DP做傻了么...

这个题考虑进位的位置即可, 首先枚举进位是因为达到了10, 100, 1000..., 1e9

对于每一次枚举10^t, 就是在10万个数中对于每一个数x % 10^t, 所有的数模10^t之后, 二分以下不小于10^t - x的数有多少个即可

总体时间复杂度O(9*n*logn)

代码如下:

Result  :  Accepted     Memory  :  2684 KB     Time  :  644 ms

/** Author: Gatevin* Created Time:  2015/10/1 19:33:14* File Name: A.cpp*/
#include<iostream>
#include<sstream>
#include<fstream>
#include<vector>
#include<list>
#include<deque>
#include<queue>
#include<stack>
#include<map>
#include<set>
#include<bitset>
#include<algorithm>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cctype>
#include<cmath>
#include<ctime>
#include<iomanip>
using namespace std;
const double eps(1e-8);
typedef long long lint;
int n;
int a[100010];
int rem[100010];
int get(int x)
{int ans = 0;int L = 1, R = n;while(L <= R){int mid = (L + R) >> 1;if(rem[mid] < x){ans = mid;L = mid + 1;}else R = mid - 1;}return n - ans;
}
int main()
{while(~scanf("%d", &n)){for(int i = 1; i <= n; i++)scanf("%d", &a[i]);lint ans = 0;for(int i = 10; i <= 1e9 && i > 0; i *= 10){for(int j = 1; j <= n; j++)rem[j] = a[j] % i;sort(rem + 1, rem + n + 1);for(int j = 1; j <= n; j++){int now = a[j] % i;ans += get(i - now);if((now << 1) >= i) ans--;}}printf("%lld\n", ans / 2);}return 0;
}

SCU 4437 Carries 想法题相关推荐

  1. 【思维】SCU 4437 Carries

    4437: Carries Submit your solution     Discuss this problem     Best solutions Carries frog has nn i ...

  2. SCU - 4437 Carries

    frog has n integers a1,a2,-,an, and she wants to add them pairwise. Unfortunately, frog is somehow a ...

  3. 「想法题系列」逗比三角形-二分

    传送门:「想法题系列」逗比三角形-hzwer 题解 因为限制了盒子的宽,所以贪心让每个三角形尽量高(即让最短边紧贴盒子底面所在直线). 考虑把每个三角形竖着剖分成宽为 d d d的矩形. 将所有矩形降 ...

  4. B - Carries SCU - 4437

    Carries frog has n integers a1,a2,-,an, and she wants to add them pairwise. Unfortunately, frog is s ...

  5. hdu3006 状态压缩+位运算+hash(小想法题)

    题意:        给了n个集合,问你这n个集合可以组合出多少种集合,可以自己,也可以两个,也可以三个....也可以n个集合组在一起. 思路:       是个小想法题目,要用到二进制压缩,位运算, ...

  6. hdu4020简单想法题

    题意:       给你一些人,这些人有很多广告,每个广告有自己的点击率和长度,每次有m组询问,问每个人点击率前K名的广告的总长度是多少. 思路:       数据很大,很容易超时,总的想法还是先so ...

  7. hdu 5063 不错的小想法题(逆向处理操作)

    题意:       刚开始的时候给你一个序列,长度为n,分别为a[1]=1,a[2]=2,a[3]=3,a[4]=4...a[n]=n,然后有4种操作如下: Type1: O 1 call fun1( ...

  8. hdu4415 不错的想法题

    题意: 一个人他有一定的血,有一些怪物,他去杀怪物,有的怪物杀死他后还可以在不费自己血的情况下任意杀死一些怪物,问你他最多杀死多少怪物,在最多杀怪前提下最好用多少血,(大体题意是这样). 思路: 首先 ...

  9. 【数论想法题】小C的问题 @科林明伦杯哈尔滨理工大学第八届程序设计竞赛...

    Time Limit: 1000 MS Memory Limit: 256000 K Description 小C是一个可爱的女孩,她特别喜欢世界上最稳定的图形:三角形.有一天她得到了n根木棍,她把这 ...

最新文章

  1. 动态链接到MFC的DLL(转)
  2. 微软将Bing变开放平台 同谷歌争夺开发者
  3. python算法与数据结构-选择排序算法(33)
  4. 前端工程师必备:学习资源全网罗
  5. php科学计算库,科学计算库numpy基础
  6. 【ArcGIS Pro微课1000例】0006:ArcGIS Pro 2.5三维显示DEM数字高程模型
  7. 前端学习(2828):数组和对象循环
  8. Linux下的基本常用命令解析
  9. zenmap工具说明及常用参数解释
  10. python程序实例讲解_Python编程之属性和方法实例详解
  11. 亿级Web系统负载均衡几种实现方式
  12. ESXi 中重新启动管理代理
  13. 怎么修改PDF文件内容
  14. 介绍一种养眼的IDEA/Pycharm/Clion配色方案
  15. nginx做反向代理网站加载验证码图片不出来
  16. Python自动化测试详解
  17. Sprite Kit 移动精灵
  18. Android -结束当前activity并返回上一个activity
  19. 用计算机弹咱们结婚吧乐谱,用计算器弹奏“周杰伦”,这些乐谱也太简单了吧!...
  20. linux下如何部署本jar包并且在后台运行

热门文章

  1. 必读论文|百篇最值得一读的“认知图谱”经典论
  2. 未能加载文件或程序集“Newtonsoft.Json,Version = 13.0.0.0,Culture = neutral,PublicKeyToken = 30ad4fe6b2a6aeed“..
  3. matlab lms算法,LMS算法
  4. 后台管理有什么作用?
  5. Developing Backbone.js Applications
  6. Android 后台服务(Service)
  7. IntelliJ IDEA 新版 UI 中的项目导航改进
  8. 深度残差收缩网络简要解读
  9. Ue4制作鼠标拖尾效果
  10. 勇闯掘金小游戏为一款多个小游戏的合集游戏,有五个关卡:找掘金、石头剪刀布、寻找藏宝图、打地鼠、抽奖。基于Vue