CF-937(D,E)
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)的更多相关文章
- Karen and Coffee CF 816B(前缀和)
Description To stay woke and attentive(专注的) during classes, Karen needs some coffee! Karen, a coffee ...
- 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 ...
- 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 ...
- CF 518D(概率dp)
传送门:Ilya and Escalator 题意:有n个人排队进车厢,每秒只能进一个人,而且第1个人进了后面的人才能进,第一个人每秒进入车厢的概率为p,不进的概率为1-p,求t秒后进入车厢总人数的数 ...
- 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 ...
- CF History(区间合并)
这其实是一个简单的区间合并问题,但是我们第一交是过了,后来学长rejudge,我们又TLE了,这一下不仅耽误了我们的时间,也波动到了我们的心情,原先时间是2s,(原oj就是2s),后来改成了1s,我用 ...
- CF 86D 莫队(卡常数)
CF 86D 莫队(卡常数) D. Powerful array time limit per test 5 seconds memory limit per test 256 megabytes i ...
- 清橙A1206.小Z的袜子 && CF 86D(莫队两题)
清橙A1206.小Z的袜子 && CF 86D(莫队两题) 在网上看了一些别人写的关于莫队算法的介绍,我认为,莫队与其说是一种算法,不如说是一种思想,他通过先分块再排序来优化离线查询问 ...
- CF Round #600 (Div 2) 解题报告(A~E)
CF Round #600 (Div 2) 解题报告(A~E) A:Single Push 采用差分的思想,让\(b-a=c\),然后观察\(c\)序列是不是一个满足要求的序列 #include< ...
- CF #552(div3)G 最小lcm
题目链接:http://codeforces.com/contest/1154/problem/G 题意:lcm是最小公倍数,本题就是给你一个数组(可能会重复),要求你判断出那两个数的最小公倍数最小, ...
随机推荐
- 全栈式测试平台RunnerGo核心功能模块-接口管理
全栈式测试平台RunnerGo相对于市面上其他性能测试产品来说更简单,它不用其他相关配件,天然支持分布式,有单独的机器做分布式的负载均衡,自有一套智能算法算压力机的配置从而平均分配,并从场景链路的流 ...
- RK3568开发笔记(八):开发板烧写buildroot固件(支持hdmi屏),搭建Qt交叉编译开发环境,编译一个Demo,目标板运行Demo测试
前言 前面发现开发板用ubuntu固件发现空间不够,本篇使用buildroot固件,来实现目标板运行qt界面应用. 烧写buildroot固件 这部分更详细的参照<RK3568开发笔 ...
- 统信UOS系统开发笔记(二):国产统信UOS系统搭建Qt开发环境安装Qt5.12
前言 开发国产应用,使用到统信UOS系统,安装Qt5.12.8的Qt开发安装包直接安装(这是本篇使用的方式,另外一种源码编译安装将在下一篇讲解) 统信UOS系统版本 系统版本: Q ...
- 项目实战:Qt+OpenCV激光射击游(识别激光、识别圆)
若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936原博主博客导航:https://blog.csdn.net/qq21497936/ar ...
- 浅析图数据库 Nebula Graph 数据导入工具——Spark Writer
从 Hadoop 说起 近年来随着大数据的兴起,分布式计算引擎层出不穷.Hadoop 是 Apache 开源组织的一个分布式计算开源框架,在很多大型网站上都已经得到了应用.Hadoop 的设计核心思想 ...
- 基于Ant Design设计语言的WinForm UI界面库
前言 经常在技术群里看到有小伙伴提问:WinForm有什么好看.开源的UI库推荐的吗?,今天大姚给大家分享一款基于Ant Design(使用Ant Design 5.0)设计语言.开源(Apache ...
- Rust 开发的高性能 Python 包管理工具,可替换 pip、pip-tools 和 virtualenv
最近,我在 Python 潮流周刊 中分享了一个超级火爆的项目,这还不到一个月,它在 Github 上已经拿下了 8K star 的亮眼成绩,可见其受欢迎程度极高!国内还未见有更多消息,我趁着周末把一 ...
- Asp .Net Core 系列:Asp .Net Core 集成 Newtonsoft.Json
简介 Newtonsoft.Json是一个在.NET环境下开源的JSON格式序列化和反序列化的类库.它可以将.NET对象转换为JSON格式的字符串,也可以将JSON格式的字符串转换为.NET对象.这个 ...
- RC4算法:流密码算法的经典之作
一.RC4算法的起源与演变 RC4算法是由著名密码学家Ron Rivest在1987年设计的一种流密码算法,其名字来源于Rivest Cipher 4.RC4算法简单高效,被广泛应用于数据加密和网络安 ...
- Multi-Runtime多运行时架构
概念 Multi-Runtime Multi-Runtime 是一种服务端架构思路,把应用里的所有中间件挪到 Sidecar 里,使得"业务运行时"和"技术运行时&quo ...