2018-2019 verano Petrozavodsk Camp, Oleksandr Kulkov Enfrentamiento 2 Informe de Problema Solución

C


el problema de asistencia, prefijo y computación, todos los elementos negativos añadido a un conjunto, si el prefijo actual y menos de 0, de pequeño a gran conjunto de elementos emergentes en términos negativos, y los elementos de pop-up vuelve a añadir al prefijo y.


#include <bits/stdc++.h>

using namespace std;

#define ll long long
ll input(){
	ll x=0,f=0;char ch=getchar();
	while(ch<'0'||ch>'9') f|=ch=='-',ch=getchar();
	while(ch>='0'&&ch<='9') x=x*10+ch-'0',ch=getchar();
	return f? -x:x;
}

#define PII pair<ll,int>
#define fr first
#define sc second
#define mp make_pair

const int N=2e5+7;

set<PII> s;
ll a[N],sum;
char Ans[N][20];

int main(){
	int n=input()+input();
	for(int i=1;i<=n;i++){
		a[i]=input();
		sum+=a[i];
		if(a[i]>0) strcpy(Ans[i],"resupplied");
		else{
			strcpy(Ans[i],"approved");
			s.insert(mp(-a[i],i));
		}
		while(sum<0){
			auto it=--s.end();
			sum+=it->fr;
			strcpy(Ans[it->sc],"declined");
			s.erase(it);
		}
	}
	for(int i=1;i<=n;i++){
		printf("%s\n",Ans[i]);
	}
}

mi


Y que la necesidad de usar teorema del número pentagonal:

\ [\ Prod_ {n = 1} ^ \ infty (1-x ^ n) = \ sum_ {k = - \ infty} ^ \ infty (-1) ^ kx ^ {\ frac {k (3K-1)} {2}} = \ sum_ {k = 0} ^ \ infty (-1) ^ kx ^ {\ frac {k (3k \ pm1)} {2}} \\ (1-x) (1-x ^ 2 ) (1-x ^ 3) \ cdots = 1-xx ^ 2 + x ^ 5 + x ^ 7-x ^ {12} -x ^ {15} + x ^ {22} + x ^ {26} \ cdots \]

Coeficiente de relaciones conocido símbolo observaron para la \ (+ - ++ - ++ - \) discutido antes de retirar los tres se pueden clasificar. Por ejemplo, un párrafo es (A ^ D \ + X ^ + X ^ BX ^ CX) \ , entonces el \ (A \) posición \ (. 1 \) , \ ([A +. 1, B] \) posición \ (0 \) , \ ([B +. 1, C-. 1] \) posición \ (. 9 \) , \ (C \) posición \ (. 8 \) , \ ([C +. 1, D] \) ubicación es \ (9 \) . A continuación, por medio un poco como un juez en esa posición.


#include <bits/stdc++.h>

using namespace std;

#define ll long long
ll input(){
	ll x=0,f=0;char ch=getchar();
	while(ch<'0'||ch>'9') f|=ch=='-',ch=getchar();
	while(ch>='0'&&ch<='9') x=x*10+ch-'0',ch=getchar();
	return f? -x:x;
}

ll f(ll k){return k*(k*3+1)/2;}

int main(){
	int T=input();
	while(T--){
		ll n=input();

		ll l=0,r=1e9,k;
		while(l<=r){
			ll mid=(l+r)>>1;
			if(f(mid)<n) k=mid,l=mid+1;
			else r=mid-1;
		}
		
		ll nr=f(k++);

		int Ans=0;
		if(k&1){
			if(n==nr+2*k-1) Ans=8;
			else if(n<=nr+3*k-1) Ans=9;
			else Ans=0;
		}else{
			if(n==nr+2*k-1) Ans=1;
			else if(n<=nr+3*k-1) Ans=0;
			else Ans=9;
		}
		printf("%d%c",Ans,T==0?'\n':' ');
	}
}

Supongo que te gusta

Origin www.cnblogs.com/-aether/p/12606995.html
Recomendado
Clasificación