hihocoder 1509 异或排序(模拟)
来源:互联网 发布:新网域名如何过户 编辑:程序博客网 时间:2024/05/16 23:33
题目链接:http://hihocoder.com/problemset/problem/1509
解题方案:首先,两个数谁大谁小一定是看这两个数的高位里面第一个不相同的数字,不管是10进制还是2进制都是这样判断。然后可以将所有的a[i]看成是60位的二进制数,a[i]和a[i+1]二进制串相同的地方和s异或后一定还是一样的,不同的地方和s异或后一定还是不一样的,因为(0,1)^0=(0,1),(0,1)^1=(1,0),(0,0)^0=(0,0),(1,1)^1=(0,0)。所以s的二进制串若想满足题意,对a[i]和a[i+1]高位里面第一个不相同的位置j,s[j]是固定的。故只需要将s所有固定的位置的值求出来,期间判断一下是否出现矛盾,然后就可以算出符合题意的s的个数了。
#include <iostream>#include <cstdio>#include <algorithm>#include <cstring>#include <string>#include <cmath>#include <vector>#include <queue>#include <stack>#include <set>#include <map>using namespace std;#define FOR(i,k,n) for(int i=k;i<n;i++)#define FORR(i,k,n) for(int i=k;i<=n;i++)#define scan(a) scanf("%d",&a)#define scann(a,b) scanf("%d%d",&a,&b)#define scannn(a,b,c) scanf("%d%d%d",&a,&b,&c)#define mst(a,n) memset(a,n,sizeof(a))#define ll long long#define N 65#define mod 1000000007#define INF 0x3f3f3f3fconst double eps=1e-8;const double pi=acos(-1.0);int a[N][N];int s[N];int main(){ //freopen("in.txt","r",stdin); //freopen("out.txt","w",stdout); int n; while(cin>>n) { mst(a,0); mst(s,-1); FOR(i,0,n) { ll tmp; cin>>tmp; int cnt=0; while(tmp) { a[i][cnt++]=tmp&1; tmp>>=1; } } int flag=1; FOR(i,0,n-1) { if(!flag) break; for(int j=59;j>=0;j--) { if(a[i][j]!=a[i+1][j]) { if(a[i][j]==0&&a[i+1][j]==1) { if(s[j]==1) { flag=0; break; } s[j]=0; } else { if(s[j]==0) { flag=0; break; } s[j]=1; } break; } } } if(!flag) printf("0\n"); else { int cnt=0; FOR(i,0,60) if(s[i]==-1) cnt++; //printf("%d\n",cnt); cout<< ((ll)(1)<<cnt) <<endl; } } return 0;}
0 0
- hihocoder 1509 异或排序(模拟)
- hihocoder 1509 异或排序 二进制思维
- hihoCoder - 1039 - 字符消除 (模拟题~)
- hihocoder 1531 德国心脏病 (模拟)
- hihocoder 1228 大模拟
- hihoCoder 1383 模拟
- hihocoder 1175 拓扑排序·二(拓扑排序应用)
- hihocoder 1228 Mission Impossible 6(模拟文本编辑器)
- hihoCoder #1514 : 偶像的条件(模拟、二分)
- hihoCoder hiho一下 第148周--Font Size (模拟)
- hihoCoder 1514 : 偶像的条件(模拟+二分)
- HihoCoder.1196 高斯消元·二 (高斯消元 异或方程组)
- hihoCoder挑战赛12 顺子 模拟
- hdu2577(模拟 或 DP)
- hihoCoder1509 : 异或排序
- HDU 5968 异或密码(模拟水题)
- hihoCoder 47周 拓扑排序
- 拓扑排序hihocoder#1174&җ
- android 利用cmdline,将参数从preloader传递到kernel [MTK通用]
- 使用GetModuleFileName函数获取当前程序所在目录
- bzoj 1237: [SCOI2008]配对 (贪心+DP)
- 代理模式
- idea+maven导入依赖慢解决办法
- hihocoder 1509 异或排序(模拟)
- 手工创建redis集群
- [BZOJ2844]albus就是要第一个出场(线性基)
- 一个根据时间差的秒数的倒计时
- 监听配置问题,SID(实例名)与SERVICE_NAME的区别?
- 运维笔记44 docker-ce swarm搭建(rhel7.3+docker-machine+docker-ce-17.03.0)
- 安卓AndroidStudio如何在同一个手机中安装两个相同的项目
- PAT_1034. Head of a Gang
- http请求中对特殊字符的处理,以及xml中对特殊字符的处理