cxk不会二进制

Description 最近cxk迷上了二进制,他很菜,有道简单的题不会做,挂在这里求大佬做一下:

以二进制形式给出两个数字:x,y。令s = x + y * 2 ^ k。输出能使 s 倒过来字典序最小的k。例如:x = 110(2进制),

y = 11(2进制) ,当k = 0 时,s0 = x + y * 1 = 1001(2进制) ,反转rev(s0) =

1001,当k=1时,s1 = x + y * 2 = 1100,反转rev(s1) = 0011。s1 < s0 (2 ^ k 是 2

的k次方的意思,乘法、加法都是十进制下的)

字典序:比较它们的第一个字母。如果它们不同,那么第一个字母小的字符串就小于另一个字符串。如果第一个字母是相同的,然后比较第二个字母,以此类推。如果一个字符串没有更多的字母可供比较,而另一个字符串有更多的字母可供比较,那么第一个(较短的)字符串将被视为字母序小。(0<1)

例如:00 < 01 < 10 < 11.

Input 输入第一行为t,代表有t组样例(t <= 100)

每组样例包括两行:x、y。

x、y都为一个01字符串。字符串的长度<= 1e5

Output 输出t行,

每行一个数k 使得到的rev(s) 字典序最小

Sample Input 1
5
110
11
1010
11
10001
110
1
1
1010101010101
11110000
Sample Output 1
1
1
3
0
0

思路

怎么让颠倒过来最大,,那么就要让颠倒过来之后,要让第一个 1 的位置尽可能在后面的位置。。剩下的好难叙述,自己想吧

题解

#include<iostream>
#include<algorithm>
using namespace std;
#define ll long long
const int Len = 1e6 + 5; int main()
{
ios::sync_with_stdio(false); cin.tie(0);
//freopen("T.txt","r",stdin);
int t;
cin >> t;
string a,b;
while(t --)
{
cin >> a >> b;
int back_0 = 0;
for(int i = b.size() - 1; i >= 0; i --)
if(b[i] == '0')
back_0 ++;
else
break;
int ans = 0;
for(int i = a.size() - 1 - back_0; i >= 0; i --)
{
if(a[i] == '0')
ans ++;
else
break;
}
cout << ans << endl;
} return 0;
}

cxk不会二进制 (贪心)的更多相关文章

  1. Codeforces Round #276 (Div. 1) A. Bits 二进制 贪心

    A. Bits Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/484/problem/A Des ...

  2. [NOI2014]起床困难综合症(二进制+贪心)

    题目 [NOI2014]起床困难综合症 做法 先用全\(0\)和全\(1\)去运行一下,再在满足\(m\)的限制下,贪心地从高位到低位选择即可

  3. hdu4435-charge-station(搜索+贪心)

    题意&题解: http://www.cnblogs.com/wuminye/p/3245546.html 说实话看了题解觉得很简单,但是比赛的时候真的是毫无头绪. 然而印象中做过一道类似的二进 ...

  4. bzoj 2165: 大楼【Floyd+矩阵乘法+倍增+贪心】

    1<<i的结果需要是long long的话i是long long是没用的--要写成1ll<<i--我别是个傻子吧 虽然写的是二进制贪心,但是我觉得二分可能更好写吧(但是会慢) ...

  5. LCA(倍增在线算法) codevs 2370 小机房的树

    codevs 2370 小机房的树 时间限制: 1 s  空间限制: 256000 KB  题目等级 : 钻石 Diamond 题目描述 Description 小机房有棵焕狗种的树,树上有N个节点, ...

  6. 最近公共祖先 LCA 倍增法

    [简介] 解决LCA问题的倍增法是一种基于倍增思想的在线算法. [原理] 原理和同样是使用倍增思想的RMQ-ST 算法类似,比较简单,想清楚后很容易实现. 对于每个节点u , ancestors[u] ...

  7. PYTHON_DAY_02

    今日内容: 01 列表内置方法 '''''' ''' 列表: 定义: 在[]内,可以存放多个任意类型的值, 并以逗号隔开. 一般用于存放学生的爱好,课堂的周期等等... ''' # 定义一个学生列表, ...

  8. 实训day02 python

    一.数据类型 列表: 定义:在[]内,可以存放多个任意类型的值,并以逗号隔开: 一般用于存放学生的爱好,课堂的周期等. 定义一个学生列表,可存放多个学生 students = ['A','B','C' ...

  9. day02 python函数基础

    '''''''''列表: 定义: 在[]内,可以存放多个任意类型的值, 并以逗号隔开. 一般用于存放学生的爱好,课堂的周期等等...'''# 定义一个学生列表,可存放多个学生# list(['钱垚', ...

随机推荐

  1. DOM是什么(初级版)

    js新手村出村之路--基础知识 在这里默认你已经粗粗的自学过了一遍js知识.(也许是在昏昏欲睡的课堂上听了两分钟,也许是跟着b站上的视频打了一遍.who cares) 在下面的内容中我将整理一些在平常 ...

  2. django数据库分库migrate

    最近在研究微服务和分布式,设计到了数据库分库,记录一下 首先,创建多个数据库,如果是已经生成的数据库,可以分库,这里我是新创建的项目,刚好可以用来尝试 我是用docker创建的mysql数据库容器 拉 ...

  3. 软件WEB自动化测试工具之智能元素定位

    江湖一直有着这么一句名言“天下武功,唯快不破".那么在软件测试领域,自然而然我们会想到软件自动化测试.软件自动化测试的实现自然离不开软件自动化测试工具.软件自动化测试工具是软件自动化的载体, ...

  4. git的日常使用(补课)

    使用git的一些反响 如果在github上做一个仓库来使用的话... 首先手动在github上创建一个空的仓库,默认没有任何东西的 使用git的命令 git pull 创建的github仓库地址 能把 ...

  5. C++ for循环练习

    #include <stdio.h> //题目:现有公鸡5元一只,母鸡3元一只,小鸡1元3只(小鸡不能单买 最少3只起卖),此时顾客有100元,请问有多少种购买方案. int main() ...

  6. C++ 按行读取文件并打印

    #include<iostream> #include<fstream> #include<string> #include <vector> #inc ...

  7. lesson01

    题目: Action3:  统计全班的成绩 班里有5名同学,现在需要你用numpy来统计下这些人在语文.英语.数学中的平均成绩.最小成绩.最大成绩.方差.标准差.然后把这些人的总成绩排序,得出名次进行 ...

  8. (转)协议森林11 涅槃 (TCP重新发送)

    协议森林11 涅槃 (TCP重新发送) 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! TCP协议是一个可靠的协议.它通过重新发送 ...

  9. 可运行jar包的几种打包/部署方式(转)

    转自:https://www.cnblogs.com/yjmyzz/p/executable-jar.html java项目开发中,最终生成的jar,大概可分为二类,一类是一些通用的工具类(不包含ma ...

  10. Spring Cloud - Nacos注册中心入门单机模式及集群模式

    近几年微服务很火,Spring Cloud提供了为服务领域的一整套解决方案.其中Spring Cloud Alibaba是我们SpringCloud的一个子项目,是提供微服务开发的一站式解决方案. 包 ...