GDKOI2021 PJ Day3游记

疯狂的PJ Day3

  • 前言
  • Day 3
    • T1
    • T2
    • T3
    • T4
  • 后记

前言

对于一场不会t3,t4的比赛,我们该怎么办呢?
以暴力向正解凭吊
对每一个以暴力抢到分的OIers致敬!


终于不是200分了205
3天总分25名,我是该开心还是不开心
3天总和605pts
[WCR3次逼近200pts,获得成就:三亚]


SSL初一组物品栏:
MYD:奶粉 *inf
KYX:神奇的有20+首歌的闹钟 *1
WCR:一无所有(除了擦鼻涕的纸 *inf)
WJ:黑色的神奇外套 *1,秘籍《乱卡精度》 *1
LYW:引人注目的红色卫衣 *1,大量的零食 *inf


SSL初一组成就栏:
WCR:三亚
WJ:与周公约会
KYX:rp药第一人
MYD&LYW:无

Day 3

[LYW穿戴红色卫衣,rp–,分享零食,rp++]
[KYX闹钟铃声过于悠扬,移速–]
[MYD服用奶粉,rp++]
[MYD服用过多奶粉,rp=-inf,减益状态启动]
[WJ穿戴黑色的神奇外套,rp=+inf,增益状态启动]
[WJ学习《乱卡精度》,《乱卡精度》已使用]
[WCR4处游荡,rp=rand()]

T1

简单来说就是卡精度(MYD的正解居然没过
卡精度??反正我没卡然后15pts,但是提到卡精度……
[WJ使用《乱卡精度》,ACT1]
实际上就是用long double,精度开到小数点后12位(真恶心)
ACcode:

#include
#include
#include
#include
using namespace std;
long double a[3],b[3],x[6],y[6],u;
long double cd(long double x,long double y,long double x1,long double y1)
{
	return sqrt((x-x1)*(x-x1)+(y-y1)*(y-y1));
}
int t;
int main()
{
	freopen("triangle.in","r",stdin);
	freopen("triangle.out","w",stdout);
	cin>>t;
	while (t--)
	{
		for (int i=0;i<6;i++) scanf("%llf%llf",&x[i],&y[i]);
		a[0]=cd(x[0],y[0],x[1],y[1]);
		a[1]=cd(x[1],y[1],x[2],y[2]);
		a[2]=cd(x[2],y[2],x[0],y[0]);
		b[0]=cd(x[3],y[3],x[4],y[4]);
		b[1]=cd(x[4],y[4],x[5],y[5]);
		b[2]=cd(x[5],y[5],x[3],y[3]);
		sort(a,a+3);
		sort(b,b+3);
		u=a[0]/b[0];
		if (abs(u*b[1]-a[1])<=0.000000000001&&abs(u*b[2]-a[2])<=0.000000000001) printf("YES\n");
		else printf("NO\n");
	}
	fclose(stdin);
	fclose(stdout);
	return 0;
}

T2

话说这破老师居然打一个0~100间的实数分?给你个π分好不好?
不过还是蛮简单,比赛时用了5mins就切了
一个特别bt的思想:
最优:

  • 小虾笼赢过的人不可能在总分中赢它/他/她

最劣:

  • 小虾笼输过的人不可能在总分中赢那个人

然后就过了……
code:

#include
#include
#include
#include
using namespace std;
int n,k,x;
long long you,lie,o,b; 
int main()
{
	freopen("sakura.in","r",stdin);
	freopen("sakura.out","w",stdout);
	scanf("%d%d",&n,&k);
	for (int i=1;i<=k;i++)
	{
		scanf("%d",&x);
		you+=n-x;
		lie+=x-1;
		o=1,b=n;
		o=max(n-you,o),b=min(b,lie+1);
		printf("%lld %lld\n",o,b);
	}
	fclose(stdin);
	fclose(stdout);
	return 0;
}

T3

怎么这题正解这么短?(N<=1012就特别恶心
但是还蛮良心,欧拉筛给60pts
ACcode:

#include
#include
#include
#include
using namespace std;
long long n,tot,ans;
int main()
{
	freopen("number.in","r",stdin);
	freopen("number.out","w",stdout);
	cin>>n;
	for (long long i=1;i*i<=n;i++) ans=(ans+n/(i*i)%998244353)%998244353;
	cout<<ans;
	fclose(stdin);
	fclose(stdout);
	return 0;
}//这个破代码简直在丢T3的脸

T4

其实是dp?
考场上以为是dfs剪枝,搞得我直接暴力要30pts
ACcodes:

#include
#include
#include
#include
using namespace std;
long long f[101][10001],n,w,op=998244353,ans;
int main()
{
	freopen("sequence.in","r",stdin);
	freopen("sequence.out","w",stdout);
	cin>>n;
	f[0][0]=1; 
	for (long long i=1;i<=n/2;i++) for (long long j=0;j<=n*i;j++)
	{
		for (long long k=max(w,j-n);k<=j+n;k++)
		{
			f[i][j]=(f[i][j]+(1ll*(n+1-abs(j-k))%op*f[i-1][k]%op))%op; 
		}
	}
	for (int i=0;i<=n*n/2;i++) ans=(ans+f[n/2][i])%op;
	if (n%2)
	{
		ans=(ans*(1ll*(n+1)%op))%op;
	}
	cout<<ans;
	fclose(stdin);
	fclose(stdout);
	return 0;
}

后记

这是个意识永生的世界,但是rp不是永生的。 ——WCR

你可能感兴趣的:(程序人生)