【枚举】Southwestern Europe Regional Contest H - Sheldon Numbers
https://vjudge.net/contest/174235#problem/H
【题意】
- 求[x,y]之间有多少个Sheldon Number
- Sheldon Number是二进制满足以下条件的数:
- 可以写成ABABAB . . . ABA或ABABAB . . . AB,其中,A是连续的n个1,B是连续的m个0
- 这个二进制数可以没有0但不能没有1
【思路】
- 对于确定的n,m,和二进制数的长度len,二进制数唯一确定的,所以按n,m,len枚举的话复杂度为64^3
- 我们可以预处理所有的Sheldon Number,保存在数组中,排序
- 可能有重复,所以要去重
- 对所求的[x,y],在数组中二分查找x和y,x为lower_bound,y为upper_bound-1
【Accepted】
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
#include<cmath> using namespace std;
typedef unsigned long long ull;
typedef long long ll;
ll x,y;
ll two[];
ll ans[];
void init()
{
two[]=1ll;
for(int i=;i<=;i++)
{
two[i]=two[i-]*;
}
}
ll calc(int n,int m,int len)
{
int digit[];
int cntn=,cntm=;
for(int i=;i<len;i++)
{
if(cntn<n)
{
digit[i]=;
cntn++;
if(cntn==n)
{
cntm=;
}
}
else
{
digit[i]=;
cntm++;
if(cntm==m)
{
cntn=;
}
}
}
ll res=0ll;
for(int i=;i<len;i++)
{
res+=1ll*digit[i]*two[len--i];
}
return res; }
int main()
{
init();
int cnt=;
for(int i=;i<=;i++)
{
for(int j=;j<=;j++)
{
for(int k=;k<=;k++)
{
if((j==&&k%i==&&k/i>=)||(j!=&&k%(i+j)==&&k/(i+j)>=)||(j!=&&(k+j)%(i+j)==&&(k+j)/(i+j)>=))
{
ans[cnt++]=calc(i,j,k);
}
}
}
}
sort(ans,ans+cnt);
cnt=unique(ans,ans+cnt)-ans;
while(~scanf("%lld%lld",&x,&y))
{
int p=lower_bound(ans,ans+cnt,x)-ans;
int q=upper_bound(ans,ans+cnt,y)-ans-;
cout<<q-p+<<endl;
}
return ;
}
【枚举】Southwestern Europe Regional Contest H - Sheldon Numbers的更多相关文章
- Southwestern Europe Regional Contest 2015 题解
题目链接:http://codeforces.com/gym/101128 题目数7/10 Rank 34/209 A: 题意:给出一张n个点的有向图表示一家有n个员工的公司的隶属图,u->v表 ...
- Southwestern Europe Regional Contest 2014 题解
时间:2017/9/8 题目8/10 Rank 5/150 体会:三星的题目和国内区域赛差距大,大多数题读懂题意就能做,所以静心读题是关键,套路性太深. A: 题意:给出一个算式,算式中的数字用大写字 ...
- 【优先级队列】Southwestern Europe Regional Contest Canvas Painting
https://vjudge.net/contest/174235#problem/D [题意] 给定n个已知size的帆布,要给这n块帆布涂上不同的颜色,规则是这样的: 每次选择一种颜色C 对于颜色 ...
- 2015-2016 ACM-ICPC Southwestern Europe Regional Contest (SWERC 15)
C. Canvas Painting 合并果子. E. Wooden Signs \(dp(i,l,r)\)表示第\(i\)块木板的长度区间为\([l,r]\)的方案数,根据题意,\(l\)或\(r\ ...
- Gym 101128A :Promotions (Southwestern Europe Regional Contest )
题意 一个公司里有E个员工P个上下级关系.这个公司有一种晋升制度.如果要晋升员工a,那么必须要先晋升a的所有领导.给出一个区间[A,B],如果要晋升A个员工,有哪些员工是一定会被晋升的?如果要晋升B个 ...
- ACM ICPC Central Europe Regional Contest 2013 Jagiellonian University Kraków
ACM ICPC Central Europe Regional Contest 2013 Jagiellonian University Kraków Problem A: Rubik’s Rect ...
- Central Europe Regional Contest 2012 Problem H: Darts
http://acm.hunnu.edu.cn/online/problem_pdf/CERC2012/H.pdf HUNNU11377 题意:飞镖环有十个环,没个环从外到里对应一个得分1~10,每个 ...
- 2017-2018 ACM-ICPC, Central Europe Regional Contest (CERC 17)
A. Assignment Algorithm 按题意模拟即可. #include<stdio.h> #include<iostream> #include<string ...
- The 2019 ICPC Asia Shanghai Regional Contest H Tree Partition k、Color Graph
H题意: 给你一个n个节点n-1条无向边构成的树,每一个节点有一个权值wi,你需要把这棵树划分成k个子树,每一个子树的权值是这棵子树上所有节点权值之和. 你要输出这k棵子树的权值中那个最大的.你需要让 ...
随机推荐
- Hadoop工作流不足(六)
不多说,直接上干货! 为此,需要第三方框架.如Azkaban或Oozie! Azkaban https://azkaban.github.io/ 具体,见我的博客,Azkaban概念学习系列.http ...
- Windows下Apache应用环境塔建安全设置(目录权限设置)
目的:为Apache,php配置受限制的用户权限.保护系统安全.需要的朋友可以参考下. 环境配置情况: apache安装目录:d:\www-s\apache php目录:d:\www-s\php5 m ...
- P1664 每日打卡心情好
题目背景 在洛谷中,打卡不只是一个简单的鼠标点击动作,通过每天在洛谷打卡,可以清晰地记录下自己在洛谷学习的足迹.通过每天打卡,来不断地暗示自己:我又在洛谷学习了一天,进而帮助自己培养恒心.耐心.细心. ...
- 关于Control.Dispatcher.BeginInvoke卡界面
Control.Dispatcher.BeginInvoke里的逻辑由UI线程执行,如果内部包含耗时操作就会造成界面卡住. Action.BeginInvoke里的逻辑,将在一个新开的线程中执行,而不 ...
- IDEA下MyBatis错误总结
1. Pom.xml配置 语法顺序 <properties resource="config.properties"> </properties> < ...
- bat判断服务是否启动
sc query|find "tomcat6" && echo yes || echo nosc query|find "eventlog" & ...
- qt5.8+vs2015使用Qt5WebEngine搭建环境
转载请注明出处:http://www.cnblogs.com/dachen408/p/7575094.html 1.项目属性,C/C++,所有选项,附加包含目录新增. $(QTDIR)\include ...
- ie 导出不行,不兼容问题,或只出现后缀文件无法识别
// 下载模板 @RequestMapping("/download") @ResponseBody public ResponseEntity<byte[]> dow ...
- 合并百度影音的离线数据 with python 2.3 格式更新
很久没有更新了. 这次新增支持四种格式的解析. filelist slicelist download.cfg third_party_download.cfg 还是2个文件.替换之前版本即可. 初步 ...
- 5 秒创建 k8s 集群[转]
据说 Google 的数据中心里运行着超过 20 亿个容器,而且 Google 十年前就开始使用容器技术. 最初,Google 开发了一个叫 Borg 的系统(现在命令为 Omega)来调度如此庞大数 ...