ZZNUOJ-2155: 单身MAN集合

 题目描述:
单身man们突然集结起来了,虽然我们不知道它们想要干什么。你作为单身man的首领需要管理好每一只单身man,机智的你给每一只单身man编了一个编号。但是单身man们不喜欢相邻的两个数字是相同数字(例如 ,, 1223等),单身man们也不喜欢一个数字的左右两边的数字是相同数字(例如 ,2323等),因为它们觉得中间的数字太可怜了。
作为单身man的首领的你不想刺激这些单身man,决定把这些编号里面含有7或者各位数字之和为7的倍数编号去掉,免得单身man们收到刺激。 输入 输入一个整数T ( <= T <= )开始,表示测试用例的数量。
每一行输入一个整数 l ,r (<= l <= r <= )表示编号的范围。 输出 在 l 到 r 的范围里面最多有多少个可用编号。 样例输入 样例输出

大致思路:

求区间【L,R】的结果,可以转化成【1,R】-【1,L-1】的结果,自行画图即可!

提前存一些节点,后面计算的时候直接调用即可!

例如下面代码中的F[i] 表示X 整除100000后得到i,然后从1到 i*100000的结果是F[i].依次类推,这样每次跑的话,从1--i*100000的地方已经可以从F数组中O(1)的时间内调用出来!只需要跑i*100000+1到X的结果了!(针对每组数据,时间复杂度不超过10^5)

打表代码:

然后找到与main.cpp同目录级别的output.txt,用记事本打开即可!然后把这些结果全部存进你的另一个工程的F[ ]数组中!

 #include <iostream>
#include<stdio.h>
#include<string.h>
#include<string>
#include<algorithm>
#include<queue>
#define ll long long
using namespace std;
#include<math.h>
#define N 100008
#define ll long long
#define inf 0x3f3f3f3f
int F[]; bool judge(int x)
{
int a[]= {};
int len=,s=;
while(x>)
{
a[++len]=x%;
x/=;
if(a[len]==)return false;
if(len>=&&a[len]==a[len-])return false;
if(len>=&&a[len]==a[len-])return false;
s+=a[len];
}
if(s%!=)
return true;
return false;
} int main(){
freopen("output.txt","w",stdout); int s=;
int n=;
for(int i=;i<=n;i++){
if(judge(i))
s++;
if(i%==)
F[i/]=s;
}
cout<<"{0";
for(int i=;i<=;i++)
printf(",%d",F[i]);
cout<<"}"; return ;
}

题解代码:

记得加上F[N]数组!

 #include <iostream>
#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<vector>
#include<queue>
#include<math.h>
#include<stack>
#define ll long long
using namespace std;
const double eps=1e-;
#define PI acos(-1.0)
#define N 100008
int F[]= {,,,,,,,,,,
,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
}; /****/
bool judge(int x)
{
int a[]= {};
int len=,s=;
while(x>)
{
a[++len]=x%;
x/=;
if(a[len]==)return false;
if(len>=&&a[len]==a[len-])return false;
if(len>=&&a[len]==a[len-])return false;
s+=a[len];
}
if(s%!=)
return true;
return false;
}
int fact(int l,int r)
{
int sum=;
for(int i=l; i<=r; i++)
{
if(judge(i))
sum++;
}
return sum;
}
int solve(int x) //从[1--x]的闭区间的包含的数
{
int id1=x/;
return F[id1]+fact(id1*+,x );
}
int main()
{
int T,l,r;
scanf("%d",&T);
while(T--)
{
scanf("%d%d",&l,&r);
// cout<<"***"<<fact(l,r)<<"****";
if(r<)
{
printf("%d\n",fact(l,r));
}
else
{
printf("%d\n",solve(r)-solve(l-));
// cout<<"r: "<<solve(r)<<endl;
// cout<<"l: "<<solve(l-1)<<endl;
}
} return ;
} /**************************************************************
Problem: 2155
User: 137666
Language: C++
Result: 正确
Time:8 ms
Memory:2032 kb
****************************************************************/

(灰常简单的代码)

ZZNUOJ-2155-单身man集合-【标程做法:数位DP-1-10^8,提前暴力打表法: 砍时间复杂度到10^5】的更多相关文章

  1. [求助][SPOJ MARIOGAM]-高斯消元(内含标程,数据等)

    小蒟蒻开始做概率的题之后,遇到了这道题,然而,他发现自己的程序调试了无数次也无法通过,系统总是返回令人伤心的WA, 于是,他决定把这一天半的时间收集到的资料放在网上, 寻求大家的帮助, 也可以节省后来 ...

  2. hdu6435 Problem J. CSGO标程讲解以及改正标程的一个错误(本来第一个样例过不了2333) 以及 poj2926 五维曼哈顿距离模板

    比赛的时候抄poj2926的模板,但改不来啊orz #include <iostream> #include <cstdio> #include <cstring> ...

  3. [转]关于一些SPFA的标程

    SPFA算法 求单源最短路的SPFA算法的全称是:Shortest Path Faster Algorithm. 最短路径快速算法-SPFA算法是西南交通大学段凡丁于1994年发表的. 适用范围:给定 ...

  4. SCUT - 365 - 鹏哥的数字集合 - wqs二分 - 斜率优化dp

    https://scut.online/p/365 https://www.luogu.org/problemnew/solution/P2365 写这篇的时候还不是很明白,看一下这个东西. http ...

  5. 集合框架-Map集合练习-Map查表法

    1 package cn.itcast.p10.map.test; 2 3 import java.util.HashMap; 4 import java.util.Map; 5 6 public c ...

  6. 大家AK杯 灰天飞雁NOIP模拟赛题解/数据/标程

    数据 http://files.cnblogs.com/htfy/data.zip 简要题解 桌球碰撞 纯模拟,注意一开始就在袋口和v=0的情况.v和坐标可以是小数.为保险起见最好用extended/ ...

  7. 王学长的LCT标程

    善良的王学长竟然亲自打了一遍QAQ好感动QAQ #include<iostream> #include<cstdio> #include<cmath> #inclu ...

  8. BJOI2019Day1 数据&标程&题解

    链接: https://pan.baidu.com/s/16L5GHvo9WtY20sZoqjuQNQ 提取码: 3iur

  9. HDU4631(标程代码)

    /*将x从小到大排序,每次插入一个点,直接找比这个点的x大的第一个,然后从这个开始向两边找 ,找点的下标用多重容器实现*/ #include<stdio.h> #include<st ...

随机推荐

  1. 【VS开发】【C++开发】const在函数前与函数后的区别

    const在函数前与函数后的区别 一   const基础           如果const关键字不涉及到指针,我们很好理解,下面是涉及到指针的情况:           int   b   =   ...

  2. GNU makefile 学习 - ongoing

    资料: <跟我一起写makefile>---中文,baiduNetdisk http://www.gnu.org/software/make/manual/make.html

  3. [转帖]一文看懂mysql数据库本质及存储引擎innodb+myisam

    一文看懂mysql数据库本质及存储引擎innodb+myisam https://www.toutiao.com/i6740201316745740807/ 原创 波波说运维 2019-09-29 0 ...

  4. php去掉字符串中的最后一个字符和汉字

    ###php去掉字符串中的最后一个字符和汉字 1.php去掉字符串中的最后一个字符: //方法一: $newstr = substr($str,0,strlen($str)-1); //方法二: $n ...

  5. 数据分析之--Mataplotlib入门

    目录 Mataplotlib Seaborn 绘制线性图 图片的标题 点和线的样式 X和Y轴可读的映射 直方图 柱状图 条件性柱状图 饼图 箱图 散步图 3D图 Excel数据导入数据库 Matapl ...

  6. dict字典

    dict字典 字典的概述 • 概述:使⽤键-值(key-value)⽅式存储. • key的特点: • 1.字典中的key必须是唯⼀的 • 2.key值必须是不可变的数据类型:字符串.元组.Numbe ...

  7. sql 计算奇数还是偶数

    & 运算符来判断奇数还是偶数 sql判断奇数还是偶数 3&1 返回 1 2&1  返回0 0&1 返回 0

  8. 怎样理解script标签的defer属性和async属性

    如果script标签是引用的外部js文件, 那就会有一个下载js文件这一过程, 为了不因为这个下载过程而阻塞页面解析与渲染, 我们需要一种机制来解决这一问题, 方法之一就是使用 defer和async ...

  9. (六)maven之常用插件

    一.maven的插件 maven官方插件:http://maven.apache.org/plugins/index.html 二.常用插件之:javadoc 作用:生成代码文档 2.1 编写代码,并 ...

  10. 利用贝叶斯算法实现手写体识别(Python)

    在开始介绍之前,先了解贝叶斯理论知识 https://www.cnblogs.com/zhoulujun/p/8893393.html 简单来说就是:贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯 ...