zoukankan      html  css  js  c++  java
  • 题解 P5514 【[MtOI2019]永夜的报应】

    这是一道结合位运算 XOR 的性质来找出正解的题。


    首先来看一下异或 XOR:

    XOR 是 10=1,01=1,00=0,11=0 的一种运算。

    所以说白了,就是相同为 0 ,不同为 1

    再来看加运算,可以归为某一位相同为0,不同为 1,全 0 为 0, 全 1 则高位加 1

    结合上述来看,加运算比异或运算多了一条全 1 则高位加一

    所以可得 (x) (xor) (y le x + y)

    题目要求求最小权值,由上式可得,异或优于加。

    那么我们只需将所有数异或起来,这样即题目所求。

    #include<bits/stdc++.h>
    using namespace std;
    int main() {
    	int n,sum=0;
    	cin>>n;
    	while(n--) {
    		int x;
    		cin>>x;
    		sum^=x;
    	}
    	cout<<sum;
    	return 0;
    }
    
  • 相关阅读:
    文件搜索和图像裁剪
    Mat的复制
    map
    substr
    cin,scanf
    strstr
    Applying vector median filter on RGB image based on matlab
    sobel算子的一些细节
    matlab 有趣小细节
    高斯混合模型(GMM)
  • 原文地址:https://www.cnblogs.com/ahawzlc/p/12636840.html
Copyright © 2011-2022 走看看