Codeforces Ronda # 320 "O" Prefijo de operación y violencia del bit del juego

Enlace de tema

http://codeforces.com/problemset/problem/578/B

Título

Matriz 2e5, puede hacer * x operaciones en cualquier elemento, hasta k veces, encontrar el valor máximo del OR bit a bit de cada elemento después del procesamiento

Ideas

Primero, se puede probar que k tiempos deben realizarse en el mismo número.

Debido a que x es mayor que 2, la cadena binaria debe aumentarse al menos un bit después de la operación. Si no está toda asignada a una, debe reasignarse a una situación en la que el bit más alto sea mayor y la respuesta sea mayor.

No puede simplemente realizar k operaciones en el número más grande. Por ejemplo, 100 110, x = 2, k = 1, la respuesta a 100 es 1110 y la respuesta a 110 es 1100.

Considerando la violencia, usamos prefijos y optimizaciones especiales. Pr mantiene la suma de prefijos de or bit a bit, y ta mantiene la suma de sufijos de or bit a bit, de modo que podemos manejar k operaciones por elemento en O (1) y atravesar cada elemento. , Solo registre la respuesta, la complejidad del tiempo es O (n)

Código

#include<cstdio>
#include<iostream>
#include<iomanip>
#include<map>
#include<string>
#include<queue>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<cstdlib> 
#define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#define endl "\n"
#define int long long
//#define double long double
using namespace std;
	typedef long long ll;
	const int maxn=200500;
	const int inf=0x3f3f3f3f;
	int n,k,x;
	int a[maxn];
	int pr[maxn],ta[maxn];
	signed main(){
    
    
		IOS
		
		cin>>n>>k>>x; 
		for(int i=1;i<=n;i++)
			cin>>a[i];
		a[0]=a[n+1]=0;
		for(int i=1;i<=n;i++){
    
    
			pr[i]=a[i]|pr[i-1];
		}
		for(int i=n;i>=1;i--){
    
    
			ta[i]=a[i]|ta[i+1];
		}
		int p=1;
		while(k--){
    
    
			p*=x;
		}
		int ans=-inf;
		for(int i=1;i<=n;i++){
    
    
			int t=pr[i-1]|(a[i]*p)|ta[i+1];
			ans=max(ans,t);
		}
		cout<<ans<<endl;
	}


Supongo que te gusta

Origin blog.csdn.net/TheSunspot/article/details/109138880
Recomendado
Clasificación