1.Stone Game

可以分为三种情况,
1.从最左边开始,直到摧毁最大和最小的石头。
2.从最右边开始,直到摧毁最大和最小的石头。
3.从两端开始,直到摧毁最大和最小的石头。
取三种情况的最小值

#include<bits/stdc++.h>
using namespace std;
const int N=105;
int a[N];
int main()
{//mp用来存每个石头对应位置 map<int ,int >mp;int T;cin>>T;while(T--){int n;cin>>n;for(int i=0;i<n;i++){cin>>a[i];mp[a[i]]=i;}sort(a,a+n);//i为最大或最小石头位置较小的那个//j为最大或最小石头位置较大的那个int i=min(mp[a[0]],mp[a[n-1]]),j=max(mp[a[0]],mp[a[n-1]]);int ans=min({j+1,n-i,i+1+n-j});cout<<ans<<endl;}return 0;
}
  1. Do Not Be Distracted!
    把连续的字符当作一个字符放入集合当中,如果后面还会出现这个字符,说明返回上一个任务了,就可以被怀疑,输出NO,否则输出YES。
#include<set>
#include<iostream>
using namespace std;
const int N=30;
int a[N];
int main()
{int T;cin>>T;while(T--){int n;cin>>n;string s;cin>>s;multiset<char>set;//multiset集合中元素可以出现多次 bool st=false; for(int i=0;i<n;){    set.insert(s[i]);if(set.count(s[i])>1) {cout<<"NO"<<endl;//被怀疑输出NO st=true;break;}int j=i+1;//每个连续的当作一个字符,进入集合 while(j<n&&s[j]==s[j-1]) j++;i=j;}if(!st) cout<<"YES"<<endl;}return 0;
}
  1. 高低位交换
    在存二进制的高低位时按照题目要求存即可
#include<iostream>
using namespace std;int main()
{long long int n;cin>>n;int b[35];int idx=16;//idx表示数组b的下标//高十六位为存入b[16-31] for(int i=31;i>15;i--)b[idx++]=n>>i&1;idx=0;//低十六位为存入b[0-15] for(int i=15;i>=0;i--)b[idx++]=n>>i&1;//由二进制转化成十进制long long int ans=0;for(int i=0;i<32;i++) ans=ans*2+b[i];cout<<ans<<endl;return 0;
}

4.内码对称
先得到二进制表示,然后判断是否对称

#include<bits/stdc++.h>
using namespace std;int main()
{long long int n;cin>>n;int b[35];//得到n的二进制表示 for(int i=31;i>=0;i--)b[i]=n>>i&1;//判断是否对称bool st=true;for(int i=0,j=31;i<=15;i++,j--) if(b[i]!=b[j]){st=false;break;    }if(st) cout<<"YES"<<endl;else cout<<"NO"<<endl;return 0;
}
  1. 寻找最低数
    lowbit()的模板
#include<set>
#include<iostream>
using namespace std;
int lowbit(int x)
{return x&-x;
}
int main()
{int n;while(scanf("%d",&n),n!=0){int x=lowbit(n);cout<<x<<endl;}return 0;
}

6.Ancient Civilization
把这些数转化为二进制数以后,统计二进制数中每一位中1和0的总数,构造的二进制数的每一位是总数多的那个,然后转化为十进制输出。

#include<bits/stdc++.h>
using namespace std;
const int N=35;
int a0[N],a1[N];//分别记录二进制下每位0和1的个数
int b[N];//记录构造的二进制数
int main()
{int T;cin>>T;while(T--){memset(a0,0,sizeof(a0));memset(a1,0,sizeof(a1));int  n,m;cin>>n>>m;for(int i=0;i<n;i++){int x;cin>>x;for(int j=m-1;j>=0;j--){int res=(x>>j)&1;if(res==1) a1[j]++;else       a0[j]++;}}//构造的二进制取每位上0或1多的那个 for(int i=0;i<m;i++){if(a0[i]>=a1[i]) b[i]=0;else b[i]=1;}//转化为十进制 int cnt=1;int ans=b[0];for(int i=1;i<m;i++){cnt=cnt*2;ans+=b[i]*cnt;}cout<<ans<<endl;}return  0;
}

2022/1/17 位运算相关推荐

  1. 17位行业影响力者的数字藏品2022年趋势研判!丨巴比特数字藏品高峰论坛金句实录...

    5 月 26 日,由巴比特主办的 2022 元宇宙云峰会・数字藏品高峰论坛成功举办. 来自数字藏品行业的数十位重磅嘉宾轮番登场,带来了7场"主题各异"的精彩演讲,以及3场行业最关心 ...

  2. 程序员面试金典 - 面试题 17.19. 消失的两个数字(数学/位运算)

    1. 题目 给定一个数组,包含从 1 到 N 所有的整数,但其中缺了两个数字. 你能在 O(N) 时间内只用 O(1) 的空间找到它们吗? 以任意顺序返回这两个数字均可. 示例 1: 输入: [1] ...

  3. 程序员面试金典 - 面试题 17.04. 消失的数字(数学/位运算)

    1. 题目 数组 nums 包含从0到n的所有整数,但其中缺了一个. 请编写代码找出那个缺失的整数.你有办法在O(n)时间内完成吗? 注意:本题相对书上原题稍作改动 示例 1: 输入:[3,0,1] ...

  4. 位运算笔记(个人笔记)

    文章目录 声明 前言 #各个进制之间的转化# 一.位运算的解释 1.按位与(&) 2.按位或(|) 3.按位异或(^) 4.按位取反(~) 5.左移位(<<) 6.右移位(> ...

  5. 位运算+取某一位+java_Java位运算小节

    2019新春支付宝红包技术大揭秘在线峰会将于03-07日开始,点击这里报名届时即可参与大牛互动. 位运算表达式由操作数和位运算符组成,实现对整数类型的二进制数进行位运算.位运算符可以分为逻辑运算符(包 ...

  6. (转)C语言位运算详解

    地址:http://www.cnblogs.com/911/archive/2008/05/20/1203477.html C语言位运算详解 作者:911 说明:本文参考了http://www2.ts ...

  7. 技术图文:位运算技术在求解算法题中的应用

    背景 前段时间,在知识星球立了一个Flag,这是总结Leetcode刷题的第一篇图文. 在总结这篇图文的时候,顺便把遇到的坑写了两篇辅助的图文,大家可以参考一下: 有符号整型的数据范围为什么负数比正数 ...

  8. C51位运算应用技巧

    位运算应用口诀: 清零取位要用与,某位置一可用或,若要取反和交换,轻轻松松用异或! 移位运算要点 1 它们都是双目运算符,两个运算分量都是整形,结果也是整形. 2 "<<&quo ...

  9. C++学习笔记-----用位运算实现加减乘除

    C++学习笔记-----用位运算实现加减乘除 原文:http://blog.csdn.net/sinat_35261315/article/details/72904945 数据在计算机内存中是以二进 ...

最新文章

  1. 亿级流量电商系统JVM性能调优实战
  2. 鸟哥的私房菜 第0章
  3. 两个月后才更新一篇。。。。LIB和DLL的差别
  4. 基于汇编语言的电子琴设计(1)
  5. 图层几何学 -- iOS Core Animation 系列二
  6. Flash常用快捷键大全 (hotkey)
  7. WebRTC 速成课程
  8. python接口测试-项目实践(二)获取接口响应,取值(re、json)
  9. qml与HTML数据交互,GitHub - toby20130333/QtQuickHtmlBridge: 基于QtQuick的C++,qml,Html三者的Bridge交互...
  10. C# XML字符串与DataTable相互转换
  11. 如何从零开始制作智能桌宠?
  12. 面试中软性问题的套路与反套路
  13. Eclipse中的快捷键……希望朋友们能熟练使用
  14. 程序员除了写代码,还应重视哪些方面?
  15. varnish02 代理多台后端服务器
  16. 网络硬件三剑客集线器交换机路由器
  17. 三菱M80操作介绍_三菱PLC操作
  18. 尤雨溪的5KB petite-vue源码解析
  19. 360网站卫士SQL注入绕过案例一个
  20. fatal error C1004: 发现意外的文件尾

热门文章

  1. 什么是HTML和CSS
  2. EC800G透传模式
  3. 华为vr2计算机连接线代替品,分体式设计的VR一体机:独特连接方式让华为VR2眼镜与众不同...
  4. 实例:用C#.NET手把手教你做微信公众号开发(21)--使用微信支付线上收款:H5方式
  5. Python ORM之peewee模块
  6. 675_AUTOSAR_TR_Methodology_文档阅读2
  7. springboot毕设项目大学生租房系统s9331(java+VUE+Mybatis+Maven+Mysql)
  8. Poco库使用:事件通知
  9. Macronix nand 驱动移植总结
  10. iphone7plus计算机,iPhone 7 Plus人像模式有多强大?看看就知道了