Sobre a psicologia do questionador OI (decepção avançada)

Prefácio

Por que fiz o capricho de escrever um artigo tão bobo antes do noip chegar?

Na verdade, todos sabem que, no jogo, trapacear é a força vital de jogadores não gigantes. Se você não tiver AK, irá roubar pontos. Se não tiver tempo, irá enganar os pontos.

No entanto, alguns pontos de decepção não são apenas melhores do que os pontos de decepção padrão, mas também podem explodir no processo padrão (uma queda direta), que envolve um conhecimento muito científico.

Aqui estão alguns exemplos para resumir não sistematicamente essas otimizações mágicas.

# 1

O cerne da otimização metafísica, pensado de forma tola, é a aleatoriedade, a perversidade e as limitações de pensamento da pessoa que criou os dados.

Existe um tipo de questão, como dar a você uma matriz, tamanho n * m, q vezes consultas,

Cada vez que uma sub-matriz de r * c é calculada, f (x1, y1, x2, y2)ela fpode ser percorrida para calcular,

Agora você descobre n, m, q \ leq 1000que a violência direta 1e9não é suficiente,

Então você pode inferir que r e c do big data do questionador devem estar muito próximos de n, m, como segue

Não entre em pânico neste momento, apenas trabalhe ao contrário (o total menos a parte fora da caixa vermelha)

O pior cenário parece ser O (\ frac {qnm} {2}), mas considerando que a pessoa que fez a pergunta é cruel, haverá muitos desses dados

Assim como.

# 2

Existe um problema ilimitado de 01 mochila, visto n \ leq 1000, wi \ leq 1000que obviamente 1e9não é violento ,

Embora existam algumas restrições especiais na questão que permitem que você pense em uma solução correta, mas você não é um gigante, não consigo pensar nisso, violência + otimização também é

Em primeiro lugar, o espaço pode ser unidimensional,

Então você pode adicionar uma otimização, o limite superior da resposta j para cada enumeração de número é limitado à soma do prefixo

for(int i=1,sum=w[1];i<=n;i++,sum+=w[i])
    for(int j=sum;j>=w[i];j--)
        dp[j]=max(dp[j],dp[j-w[i]]+c[i]);

Parece que o pior caso só pode ser otimizado O (\ frac {n \ sum wi} {2}), mas você pode primeiro classificar a matriz em ordem crescente de wi, então você pode minimizar a soma da soma,

Considerando as vantagens dessa otimização, pelo fato de os dados serem aleatórios, a probabilidade de wi ser diferente será muito grande, ou seja, após a ordenação, a probabilidade de dois números adjacentes serem diferentes é muito alta.

Portanto, o tempo total é aproximadamente a área do gráfico a seguir. A inclinação do gráfico está aumentando e a área é muito pequena, se os dados forem suficientemente aleatórios.

Para quem tem preguiça de fazer perguntas, A também é fácil.

# 3

Na verdade, esta é uma otimização para encontrar pequenas regras,

Tomando as joias "Yali Camp 2017 Day5" como exemplo (principalmente eu acabei de fazer), é fácil pensar na classificação de acordo com 300 tipos de valores w.

Então não há nada, porque é difícil pensar na próxima dicotomia porque você não é um gigante, então você só pode classificar diminuindo o valor v em cada categoria.

É fácil pensar que se em uma categoria com o mesmo valor w, se o ponto anterior com um valor v maior não for selecionado, então este ponto não deve ser selecionado.

Portanto, pense em usar essa propriedade para otimizar, registre os subscritos que são incluídos com sucesso na contribuição quando o ponto anterior é usado como uma mochila e, em seguida, registre esses subscritos,

for(int i=1;i<=300;i++){
		for(r=0;r<=k-i;r++)d[r+1]=r;//初始化枚举的下标
		for(int j=0;j<f[i].size();j++){
			int o=0;
			for(;r>0;r--){
				if(d[r]+i<=k&&dp[d[r]]>=0&&dp[d[r]]+f[i][j]>dp[d[r]+i])
					dp[d[r]+i]=dp[d[r]]+f[i][j],e[++o]=d[r]+i;
			}
			for(;o>0;o--)d[++r]=e[o];//更新下标数组
		}
	}

Esse tipo de pequena otimização deveria ser impossível, certo?

Questionador: Espere, eu não pareço ter os dados para cardá-lo

Então eu acabei de passar

# 4

Existe uma tal questão:

Uma árvore com raiz em 1, cada nó no início é uma peça de xadrez, um lado é branco e o outro é preto, e o lado branco está voltado para cima

As próximas q operações são divididas em dois tipos

0 operação vira uma peça de xadrez

1 A operação pergunta o número de uma peça de xadrez e todas as peças de xadrez pretas com o lca mais profundo voltado para cima

Olhando para esta questão, se a conclusão não for inferida, é uma seção de árvore log ^ 2, e a conclusão é inferida como uma bissecção de árvore de segmento de linha registro.

No entanto, há um aluno da segunda série que pensou no método básico (atualize uma cadeia da raiz de cada ponto preto e consulte o primeiro ponto preto que sobe do nó atual), mas ele não sabe como cortar a árvore .

Então, ele usou uma atualização violenta e, em seguida, julgou uma situação de cadeia longa, na verdade A.

porque? Porque, além da situação de cadeia longa, outros dados não são violentos (a essência é água de dados).

# 5

Não por enquanto, deixe-me voltar às questões anteriores ~~

Acho que você gosta

Origin blog.csdn.net/weixin_43960287/article/details/110196133
Recomendado
Clasificación