hdoj5327【前缀和思想】
2016-07-22 21:50
211 查看
题意:
找给定区间的美丽数,美丽数的意思就是这个数每个位上的数都是唯一的。
思路:
前缀和的思想。
感想:
就是你当前位置代表某个特性的前面的所有和(瞎比比的,说了下感觉)。前提是你必须找到这样的特性,比如CF的很多题目都是这样子,给你1e5的查询,题解马上一堆线段树,这种区间的预处理,前缀和的思想很好。还有就有一题实现区间的压缩,也是很棒啊。
找给定区间的美丽数,美丽数的意思就是这个数每个位上的数都是唯一的。
思路:
前缀和的思想。
感想:
就是你当前位置代表某个特性的前面的所有和(瞎比比的,说了下感觉)。前提是你必须找到这样的特性,比如CF的很多题目都是这样子,给你1e5的查询,题解马上一堆线段树,这种区间的预处理,前缀和的思想很好。还有就有一题实现区间的压缩,也是很棒啊。
#include <bits/stdc++.h> using namespace std; typedef long long LL; typedef unsigned long long ULL; const double eps=1e-6; const double pi=acos(-1.0); const int mod=998244353; const int INF=0x3f3f3f3f; const int N=1e5+10; bool vis[15]; int d ; int shi(int x) { int k; memset(vis,0,sizeof(vis)); for(int i=1;;i++){ k=x%10; if(!vis[k]) vis[k]=1; else return 0; x/=10; if(!x) break; } return 1; } void init() { memset(d,0,sizeof(d)); for(int i=1;i<=N;i++){ if(shi(i)) d[i]=1; else d[i]=0; } for(int i=2;i<=N;i++) d[i]+=d[i-1]; } int main() { int t; cin>>t; init(); while(t--){ int a,b; scanf("%d%d",&a,&b); printf("%d\n",d[b]-d[a-1]); } return 0; }
相关文章推荐
- Lua教程(二十二)
- 冒泡排序巩固,拼图游戏逻辑
- codeforces 691F Couple Cover(暴力预处理)
- 基数排序简单Java实现
- final,finally,finalize
- 暑假集训第一天
- POJ 2480 Longge's problem (欧拉函数)
- tjut 4879
- Sublime Text 2 安装Package Control和插件
- springMVC和Shiro框架整合使用简单示例
- BZOJ 2124: 等差子序列
- 利用C#自带组件强壮程序日志
- 51NOD 1070 Bash游戏 V4
- GitHub控件之BadgeView(数字提醒)
- poj 3040 <经典贪心>
- 2016 Multi-University Training Contest 2(补题ing)
- SQL业务审核与优化
- nagios系列(五)之nagios图形显示的配置及自定义插件检测密码是否修改详解
- MachineLearning03_SVM算法
- 【七】Deep Learning模型之:CNN卷积神经网络(三)CNN常见问题总结