C-零一题

题意: 每次可以选择两个相邻且相同的字符,将他们删除,在无数次操作后,字符串的长度变为n,问能否构造出原来的字符串,不能输出-1

题解: 很明显,最后无法再操作时,这个字符串一定是01相交的,由于n是偶数,所以最后一定是0 1各n/2个,然后判断在原有的基础上减去这些,判断0 1的个数符不符合条件,符合就输出,不符合-1

代码:

#include<iostream>
#include<algorithm>
#include<map>
#include<string>
#include<vector>
using namespace std;
typedef long long ll;
typedef pair<ll,ll> pll;
const int N=1e5+10;
const ll mod=1e9+7;
signed main(){
ios::sync_with_stdio(false);
cin.tie(0);
ll p,q,m;cin>>p>>q>>m;
ll l=p-m/2;
ll r=q-m/2;
if(l<0||l%2==1||r<0||r%2==1){//不能为奇数,奇数就不能删完
cout<<"-1";return 0;
}
ll n=m/2;
while(n--){
cout<<"10";
}
while(l--) cout<<"0";
while(r--) cout<<"1";
}

D-操作题

题意: 开始有两个数 a=0,b=1, 每次可以进行四种操作,问能否在400次操作内让 a或b等于 n

题解: 进制分解,每次判断当前能否被k整除,即判断能否有高一幂的需求,比如8/2=4,4%2=0,所以最后可以直接加上8,6/2=3,3%2=1,证明这一位要直接加上,所以就是先加2再加4,这样不断分解即可。

#include<iostream>
#include<algorithm>
#include<map>
#include<string>
#include<vector>
using namespace std;
typedef long long ll;
typedef pair<ll,ll> pll;
const int N=1e5+10;
const ll mod=1e9+7;
vector<pair<ll,char>> q;
signed main(){
ios::sync_with_stdio(false);
cin.tie(0);
ll t;cin>>t;
while(t--){
ll n,m;cin>>n>>m;
q.clear();
while(n){
ll y=n%m;//加上所需要的值
while(y--){
q.push_back({1,'a'});
}
n/=m;
if(n){
q.push_back({2,'b'});
}
}
cout<<q.size()<<endl;
for(ll i=0;i<q.size();i++){
cout<<q[i].first<<" "<<q[i].second<<endl;
}
}
}

E-语法题

题意: 给出一个n,根据以上if语句,判断原来的n有几种可能

题解: 首先a一定是不断递增的,然后如果最大的a也没有n大,n就不会进行任何一个if语句的判断,就会直接输出,否则他的取值区间应该为[n*a,b*(n+1)-1],注意每次左区间一定要比上次的a大,并且题目要求是正整数,所以也要大于等于1。 并且,这个题目的数据比较大,n最大可以达到1e18,很容易就超long long ,但很明显,如果n>1e9,就肯定比a大,但这种情况可以和比所有a大这种情况合并,因为>1e9肯定也比所有a大,判断一次即可。

代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<ll,ll> pll;
const int N=2e5+10;
const ll mod=1e9+7;
vector<pll> p,q;
ll n,t,ans;
signed main(){
ios::sync_with_stdio(false);
cin.tie(0);
cin>>t;
for(ll i=1;i<=t;i++){
ll x,y;cin>>x>>y;
if(i==1||x>q.back().first) q.push_back({x,y});
}
cin>>n;
if(n>=q.back().first)
{
cout<<"1";
return 0;
}
for(ll i=0;i<q.size();i++){
if(n>=q[i].first) continue;
ll l=max(1ll,n*q[i].second);
ll r=min(q[i].first-1,q[i].second*(n+1)-1);
if(i) l=max(q[i-1].first,l);
ans+=max(r-l+1,0ll);
}
cout<<ans;
}

牛客小白月赛51-C-E的更多相关文章

  1. 树的最长链-POJ 1985 树的直径(最长链)+牛客小白月赛6-桃花

    求树直径的方法在此转载一下大佬们的分析: 可以随便选择一个点开始进行bfs或者dfs,从而找到离该点最远的那个点(可以证明,离树上任意一点最远的点一定是树的某条直径的两端点之一:树的直径:树上的最长简 ...

  2. 牛客网 牛客小白月赛5 I.区间 (interval)-线段树 or 差分数组?

    牛客小白月赛5 I.区间 (interval) 休闲的时候写的,但是写的心情有点挫,都是完全版线段树,我的一个队友直接就水过去了,为啥我的就超内存呢??? 试了一晚上,找出来了,多初始化了add标记数 ...

  3. 牛客小白月赛8 - E - 诡异数字 数位DP

    牛客小白月赛8 - E - 诡异数字 题意: 求区间中,满足限制条件的数字的个数. 限制条件就是某些数字不能连续出现几次. 思路: 比较裸的数位DP, DP数组开一个dp[len][x][cnt] 表 ...

  4. 牛客小白月赛18 Forsaken给学生分组

    牛客小白月赛18 Forsaken给学生分组 Forsaken给学生分组 链接:https://ac.nowcoder.com/acm/contest/1221/C来源:牛客网 ​ Forsaken有 ...

  5. 牛客小白月赛18 Forsaken喜欢数论

    牛客小白月赛18 Forsaken喜欢数论 题目传送门直接点标题 ​ Forsaken有一个有趣的数论函数.对于任意一个数xxx,f(x)f(x)f(x)会返回xxx的最小质因子.如果这个数没有最小质 ...

  6. 牛客小白月赛19 E 「火」烈火燎原 (思维,树)

    牛客小白月赛19 E 「火」烈火燎原 (思维,树) 链接:https://ac.nowcoder.com/acm/contest/2272/E来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空 ...

  7. 【牛客小白月赛21】NC201604 Audio

    [牛客小白月赛21]NC201604 Audio 题目链接 题目大意: 给出三点 ,求到三点距离相等的点 的坐标. 解析 考点:计算几何基础. 初中蒟蒻表示不会什么法向量.高斯消元..qwq 方法一: ...

  8. 【牛客小白月赛21】NC201605 Bits

    [牛客小白月赛21]NC201605 Bits 题目链接 题目描述 Nancy喜欢做游戏! 汉诺塔是一个神奇的游戏,神奇在哪里呢? 给出3根柱子,最开始时n个盘子按照大小被置于最左的柱子. 如果盘子数 ...

  9. 牛客小白月赛16 小石的妹子 二分 or 线段树

    牛客小白月赛16 这个题目我AC之后看了一下别人的题解,基本上都是线段树,不过二分也可以. 这个题目很自然就肯定要对其中一个进行排序,排完序之后再处理另外一边,另一边记得离散化. 怎么处理呢,你仔细想 ...

  10. 牛客网 牛客小白月赛1 F.三视图

    F.三视图   链接:https://www.nowcoder.com/acm/contest/85/F来源:牛客网     这个题自己想一下三维的,正视图和左视图中y轴为行数,x轴和z轴是列数,因为 ...

随机推荐

  1. Oracle账户被锁(the account is locked)

    问题: 安装好Oracle之后用scott登录报错:ERROR:ORA-28000:the account is locked 解决方案: Win+R打开命令行输入:sqlplus 使用system账 ...

  2. 【Redis 系列】redis 学习十六,redis 字典(map) 及其核心编码结构

    redis 是使用 C 语言编写的,但是 C 语言是没有字典这个数据结构的,因此 C 语言自己使用结构体来自定义一个字典结构 typedef struct redisDb src\server.h 中 ...

  3. 搭建uipath

    我对windows也不太熟,也是第一次安装Uipath Orchestrator,希望有问题指出一起交流,可以留言,Uipath中文qq交流群:4656303241. 下载镜像 windows ser ...

  4. 【小程序自动化Minium】二、元素定位-Page接口中的 get_element() 与 get_elements()

    UI自动化中的重要工作就是元素定位了,高效精准的定位方法可以让工作事半功倍. 在过去的一段web自动化经历中,使用的selenium库支持了多种定位方法,我们可以利用这些定位方法来做进一步封装,写出符 ...

  5. Java中StringBuffer 简单学习,LeetCode中1323题运用

    StringBuffer 学习 StringBuffer() 构造一个没有字符的字符串缓冲区,初始容量为16个字符. deleteCharAt(int index) 删除char在这个指定序列inde ...

  6. 洛谷P2709 小B的询问 莫队做法

    题干 这个是用来学莫队的例题,洛谷详解 需要注意的一点,一定要分块!不然会慢很多(直接TLE) 其中分块只在排序的时候要用,并且是给问题右端点分块 再就是注意add与del函数里的操作,增加数量不提, ...

  7. 《深入理解java虚拟机》读书笔记-第二章Java内存区域和内存溢出异常

    java1.7和java8的jvm存在差异,本文先按照<深入理解java虚拟机>的讲解内容总结,并将java8的改变作为附录放在文末 一丶运行时数据区域 ​ 图:java虚拟机运行时数据区 ...

  8. MIT 6.824 Lab2D Raft之日志压缩

    书接上文Raft Part C | MIT 6.824 Lab2C Persistence. 实验准备 实验代码:git://g.csail.mit.edu/6.824-golabs-2021/src ...

  9. Grid属性太多记不住?【Grid栅格布局可视化编辑器】直观易懂高效,拖拉拽,有手就行!

    手把手教你通过拖拉拽可视化的方式带你练习[Grid栅格布局]的各个属性,直观易懂!再也不愁记不住繁多的Grid属性了.整个过程在众触应用平台进行,不用手写一行CSS代码. grid-auto-flow ...

  10. C语言课堂--现代编译环境搭建[2020年7月]

    看过了很多专家吐槽目前的大学c语言教学问题多多: 教材难懂,消磨了学生的兴趣: 环境老旧,都2020了还有在用VC6甚至TurboC 2.0,语法不规范. 轮到自己上课,心想可不能再继续这样的c语言课 ...