CF-937

在补题……

D

分析

我们发现这些因子都是二进制形式的十进制数,n的范围是$1e5$,16的二进制是$10000$,于是可以枚举1~16,把这些因子预处理出来,对于每个n就枚举因子再作除,看剩下的数每位是不是只有0与1

代码

#include <bits/stdc++.h>
using namespace std;
#define endl '\n'
#define int long long
#define db(x) cout<<x<<" "<<endl;
#define _db(a,n) for(int i=1;i<=n;i++) cout<<a[i]<<" ";cout<<endl;
#define mem(a) memset(a,0, sizeof(a))
#define rep(i,l,r) for(int i=l;i<=r;i++)
#define per(i,r,l) for(int i=r;i>=l;i--)
int s[16],b[33];
void solve(){
int n;cin>>n;
int tp=n,f=0;
while(tp){
if(tp%10>1) f=1;
tp/=10;
}
if(f){
rep(i,2,16){
while(n%b[i]==0){
n/=b[i];
}
}
int tp=n,ff=1;
while(tp){
if(tp%10>1) ff=0;
tp/=10;
}
if(ff) cout<<"YES";
else cout<<"NO";
}
else cout<<"YES";
cout<<endl;
}
signed main()
{
std::ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int e=0;
rep(i,1,32){//预处理因子
if(i&1){
int x=i,res=0,k=0;
while(x){
s[k++]=x%2;
x/=2;
}
per(j,k,0){
res=res*10+s[j];
}
b[++e]=res;
}
}
int t;cin>>t;while(t--)
solve();
return 0;
}

E

分析

因为所求长度一定是n的因子,我们可以暴力枚举长度$len$,再对遍历每个区间判断就行

操作

蒟蒻之前只会嵌套for循环把每个枚举到的对应区间取出来再遍历判断

难点在于如何简单的实现这个“周期性区间映射”

如$s=hshahaha$,$len$为2,且我们要映射到第一个长为$len$的区间,即要得到这样的映射关系:$s[0]-s[2],s[1]-s[3],s[0]-s[4],s[1]-s[5],s[0]-s[6],s[1]-s[7]$

我们可以简化为一个序列,已知序列$a[]$,设周期T,所选的一个周期长度的区间起点为st,用i枚举序列每一个数

则所求映射为 : $a[i]-a[i%T+s]$

rep(i,0,7) a[i]=i;
int T,st;cin>>T>>st;//周期长度与映射区间的起点
for(int i=0;i<=7;i++){
cout<<a[i]<<"-"<<a[i%T+st]<<endl;
}
/*
2 2
0--2
1--3
2--2
3--3
4--2
5--3
6--2
7--3
*/

代码

void solve(){
int n;cin>>n;
string s;cin>>s;
for(int len=1;len<=n;len++){
if(n%len!=0) continue;
for(int st=0;st<=len&&st<n;st+=len){//枚举起点,即第一个区间与第二个区间的起点
int sum=0;
rep(j,0,n-1){
sum+=(s[j]!=s[j%len+st]);
}
if(sum<=1){
cout<<len<<endl;
return;
}
}
}
}

F

#include <bits/stdc++.h>
using namespace std;
#define endl '\n'
#define int long long
#define db(x) cout<<x<<" "<<endl;
#define _db(a,n) for(int i=1;i<=n;i++) cout<<a[i]<<" ";cout<<endl;
#define mem(a) memset(a,0, sizeof(a))
#define rep(i,l,r) for(int i=l;i<=r;i++)
#define per(i,r,l) for(int i=r;i>=l;i--) void solve(){
int a,b,c;cin>>a>>b>>c;
if(c-a!=1){
cout<<"-1"<<endl;
return;
}
int x=0;
queue<int>q;
q.push(0);
while(q.size()){
x=q.front();
q.pop();
if(a){
a--;
q.push(x+1);
q.push(x+1);
}
else if(b){
b--;
q.push(x+1);
}
}
cout<<x<<endl;
}
signed main()
{
std::ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int t;cin>>t;while(t--)
solve();
return 0;
}

CF-937(D,E)的更多相关文章

  1. Karen and Coffee CF 816B(前缀和)

    Description To stay woke and attentive(专注的) during classes, Karen needs some coffee! Karen, a coffee ...

  2. CF#538(div 2) C. Trailing Loves (or L'oeufs?) 【经典数论 n!的素因子分解】

    任意门:http://codeforces.com/contest/1114/problem/C C. Trailing Loves (or L'oeufs?) time limit per test ...

  3. CF 439C(251C题)Devu and Partitioning of the Array

    Devu and Partitioning of the Array time limit per test 1 second memory limit per test 256 megabytes ...

  4. CF 518D(概率dp)

    传送门:Ilya and Escalator 题意:有n个人排队进车厢,每秒只能进一个人,而且第1个人进了后面的人才能进,第一个人每秒进入车厢的概率为p,不进的概率为1-p,求t秒后进入车厢总人数的数 ...

  5. CF 439D(251D题)Devu and his Brother

    Devu and his Brother time limit per test 1 second memory limit per test 256 megabytes input standard ...

  6. CF History(区间合并)

    这其实是一个简单的区间合并问题,但是我们第一交是过了,后来学长rejudge,我们又TLE了,这一下不仅耽误了我们的时间,也波动到了我们的心情,原先时间是2s,(原oj就是2s),后来改成了1s,我用 ...

  7. CF 86D 莫队(卡常数)

    CF 86D 莫队(卡常数) D. Powerful array time limit per test 5 seconds memory limit per test 256 megabytes i ...

  8. 清橙A1206.小Z的袜子 && CF 86D(莫队两题)

    清橙A1206.小Z的袜子 && CF 86D(莫队两题) 在网上看了一些别人写的关于莫队算法的介绍,我认为,莫队与其说是一种算法,不如说是一种思想,他通过先分块再排序来优化离线查询问 ...

  9. CF Round #600 (Div 2) 解题报告(A~E)

    CF Round #600 (Div 2) 解题报告(A~E) A:Single Push 采用差分的思想,让\(b-a=c\),然后观察\(c\)序列是不是一个满足要求的序列 #include< ...

  10. CF #552(div3)G 最小lcm

    题目链接:http://codeforces.com/contest/1154/problem/G 题意:lcm是最小公倍数,本题就是给你一个数组(可能会重复),要求你判断出那两个数的最小公倍数最小, ...

随机推荐

  1. ASP.NET Core MVC应用模型的构建[1]: 应用的蓝图

    我个人觉得这是ASP.NET Core MVC框架体系最核心的部分.原因很简单,MVC框架建立在ASP.NET Core路由终结点上,它最终的目的就是将每个Action方法映射为一个或者多个路由终结点 ...

  2. 海康摄像头开发笔记(一):连接防爆摄像头、配置摄像头网段、设置rtsp码流、播放rtsp流、获取rtsp流、调优rtsp流播放延迟以及录像存储

    前言   Hik防爆摄像头录像,因为防爆摄像头会有对应的APP软件,与普通的网络摄像头和球机不一样,默认认为它不可以通过web网页配置,所以弄了个来实测确认.  经测试实际上也是可以通过web网页配置 ...

  3. 钉钉机器人自动关联 GitHub 发送 approval prs

    摘要:用技术来解决 PM 枯燥的 approval pr 工作,本文将阐述如何自动化获取 GitHub Organization 下各个 repo 待 merge 的 pull requests 并通 ...

  4. Lua学习笔记3

    Lua学习笔记3 IO读写 Lua中读写使用自带的I/O库处理文件. 分为简单模式和完全模式. 简单模式(simple model)拥有一个当前输入文件和一个当前输出文件,并且提供针对这些文件相关的操 ...

  5. 1、dubbo的简介

    Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案.简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需要用的,只有在分布式的时候 ...

  6. 使用LabVIEW打开默认应用程序中的文档(PDF,Word,Excel,Html)

    问题详情 我想让我的LabVIEW VI使用默认应用程序打开硬盘上的文档.如何实现? 解决方案 有一个名为 "Open a Document on Disk.vi" 的 VI,它可 ...

  7. 利用Nginx正向代理实现局域网电脑访问外网

    引言 在网络环境中,有时候我们需要让局域网内的电脑访问外网,但是由于网络策略或其他原因,直接访问外网是不可行的.这时候,可以借助 Nginx 来搭建一个正向代理服务器,实现局域网内电脑通过 Nginx ...

  8. 软件发布时 生成发布日志文件 单点登录 getGitInfo.bat

    需求 每次发包的时候,前端是3个包,如果后期出现问题,不好回查 所以把当前项目的git信息记录下来 以便回查 第一次手动写了下,发现比较麻烦,所以写个脚本,每次发布的时候 运行下即可 上代码 软件发布 ...

  9. C#使用Stateless和箭头控件实现状态机的控制及显示

    之前开发一个小工具,内部实现一个状态机,并显示状态机当前状态及状态间的转移过程.我使用了Stateless开源类库及一个开源自定义箭头控件.自定义箭头控件是HZHControls其中一个控件,我单独把 ...

  10. Atom安装插件的几种方式

    界面安装 打开Atom->File->Settings->Install 输入你想要安装的插件名/Theme名 命令行安装 打开cmd命令行程序 切换到.atom/package目录 ...