2018-2019 Summer Petrozavodsk Camp, Oleksandr Kulkov Contest 2解题报告

Posted -aether

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2018-2019 Summer Petrozavodsk Camp, Oleksandr Kulkov Contest 2解题报告相关的知识,希望对你有一定的参考价值。

C


签到题,计算前缀和,把所有的负项加入到一个set中,如果当前前缀和小于0,则从set中从小到大弹出负项,并且把弹出的项加回到前缀和中。


#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
",Ans[i]);
	}
}

E


本题需要用到五边形数定理:

[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(3kpm1)}{2}}(1-x)(1-x^2)(1-x^3)cdots=1-x-x^2+x^5+x^7-x^{12}-x^{15}+x^{22}+x^{26}cdots ]

观察系数关系知符号关系为(+--++--++--)除去前三项可以分类讨论。例如某一段是( +x^a+x^b-x^c-x^d),那么(a)的位置是(1),([a+1,b])位置是(0)([b+1,c-1])位置是(9)(c)位置是(8)([c+1,d])位置是(9)。然后通过二分判断某一位在那个位置就好了。


#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?‘
‘:‘ ‘);
	}
}

以上是关于2018-2019 Summer Petrozavodsk Camp, Oleksandr Kulkov Contest 2解题报告的主要内容,如果未能解决你的问题,请参考以下文章

Summer Programs之文科篇 | Telluride Association Summer Program介绍

CSCI 3130, Summer 2019

500 Days Of Summer

壹玖 Spring Summer——春“芬”谷雨

SUMMER BASH !!

Summer Bash!