SDUACM省赛排位2019 Round1总结

怎么偏偏这个时候CF炸了啊mmp!

鬼知道自己交的对不对啊

UPD:全挂了 CF Nmsl

UPD2:目前填坑 A B E F G(5/12)

Problem A Gym100963B

暴力枚举,最多只需要考虑到2*a[n]的大小

考场上写了个结论发现是伪证

但最后CF修完才发现

CF Nmsl

代码如下:

/*******************
Problem:2019 SDU Ranking A
Author:CXY1999
Status:Coding
Head Vision 2.1
*******************/
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define pb push_back
#define BG begin()
#define ED end()
typedef long long LL;
using namespace std;
const int maxn = 1000005;
int a[maxn];
int cnt[maxn];
int n;
int gre(int k)
{
	int Ans=0;
	for(int i=n;i>=1;i--)
	{
		if(k>=a[i])
		{
			Ans+=k/a[i];
			k-=(k/a[i])*a[i];
		}
	}
	return Ans;
}
int main()
{
	int Cas=1;
	while((scanf("%d",&n)==1)&&n)
	{
		printf("Case #%d: ",Cas);
		Cas++; 
		for(int i=1;i<=n;i++)
		{
			scanf("%d",&a[i]);
		}
		if(a[1]!=1)
		{
			puts("Cannot pay some amount");
			continue;
		}
		memset(cnt,63,sizeof(cnt));
		cnt[0]=0;
		for(int j=1;j<=n;j++)
		for(int i=1;i<=2*a[n];i++)
		{
			if(i-a[j]>=0)
			cnt[i]=min(cnt[i],cnt[i-a[j]]+1);
		}
		bool flag=true;
		for(int i=1;i<=2*a[n];i++)
		{
			if(cnt[i]

Problem B Gym100963C

表达式求值

考场写挂一处傻逼地方+没读完题就开敲

赛后补的 有点冗余代码 看看有没有时间改良一个

/*******************
Problem:2019 SDU Ranking B
Author:CXY1999
Status:Coding
Head Vision 2.1
*******************/
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define pb push_back
#define BG begin()
#define ED end()
typedef long long LL;
using namespace std;
char buf[10000];
#define NULLOP 0 
int R1,R2;
char R3;
bool Exp;
void check()
{
	if((R1<0)||(R1>9999)||(R2<0)||(R2>9999))Exp=1;
}
int main()
{
	while(scanf("%s",buf)==1)
	{
		Exp=0;
		R1=0;
		R2=0;
		R3=NULLOP;
		int l=strlen(buf);
		for(int i=0;i

Problem C Gym100963F

看着像是网络流

 不会做 过后再补吧

UPD:队友已经AC了 正在填坑

Problem D Gym100963I

计算几何板子题

没带板子

mmp

一万句mmp

UPD:这题代码等我有时间重新码个计算几何的轮子搞上去再说吧

Problem E Gym100963J

这题本质就是求个ax+b=cy+d=k (x \subseteq \mathbb{N},y\subseteq \mathbb{N},k\subseteq \mathbb{N})

然后我直接考虑成了k\ mod\ a&=b\\ k\ mod\ c&=d

上来就劈里啪啦写个CRT了然后疯狂WA

发现自己蠢了(没说互质,需要写exCRT)

然后回头一想这不是exGCD傻逼题吗

移项之后就是一个典型的Ax+By=C的exGCD能做的傻逼题

/*******************
Problem:2019 SDU Ranking D
Author:CXY1999
Status:Coding
Head Vision 2.1
*******************/
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define pb push_back()
#define BG begin()
#define ED end()
typedef long long LL;
using namespace std;
LL GCD(LL A,LL B){return (B==0)?A:GCD(B,A%B);}
LL LCM(LL A,LL B){return A/GCD(A,B)*B;}
void exgcd(LL a,LL b,LL& d,LL& x,LL& y)
{
    if(!b) { d = a; x = 1; y = 0; }
    else{ exgcd(b, a%b, d, y, x); y -= x*(a/b); }
}
bool solve(LL a,LL b,LL c,LL &x,LL &y)
{
	LL d=0;
	exgcd(a,b,d,x,y);
	LL k=c/d;
	if(c%d){
		printf("Impossible\n");
		return 0;
	}
	x=k*x;
	LL R=fabs(b/d);
	while(x<=0)x=x+1e4*R;
	x=x%R;
	while(x<=0)x+=R;
	y=(c-a*x)/b;
	return 1;
}
 
//求Ax+By=C的一组解 
int main()
{
	LL n,m,a,k;
	while((cin>>n>>m>>a>>k)&&n&&m&&a&&k)
	{
		LL x,y;
		if(solve(a,-m,n-k,x,y))
		{
			cout<

Problem F Gym100837A

签到题 直接乱写就行

/*******************
Problem:2019 SDU  Ranking F
Author:CXY1999
Status:Coding
Head Vision 2.1
*******************/
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define pb push_back
#define BG begin()
#define ED end()
typedef long long LL;
using namespace std;
LL P;
int MP;
int check(int a)
{
	P=0;
	MP=0;
	int l=floor(sqrt(a)+0.5);
	for(int i=2;i>a>>b;
	int c=check(a);
	int d=check(b);
	if(c>d)puts("a");
	else puts("b");
}

Problem G Gym100837B

除法模拟,这里除数只要有相同的即可

赛场这题开晚了 加急狂打还没打对 心里一句mmp不知道当不当讲

/*******************
Problem:2019 SDU Ranking G
Author:CXY1999
Status:Coding
Head Vision 2.1
*******************/
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define pb push_back()
#define BG begin()
#define ED end()
typedef long long LL;
using namespace std;
const int maxn =2000000+5;
int Cs[maxn];//³ýÊý 
int Ys[maxn];//ÓàÊý 
int main()
{
	freopen("b.in","r",stdin);
	freopen("b.out","w",stdout);
	int x,y;
	int st=0;
	memset(Cs,-1,sizeof(Cs));
	cin>>x>>y;
	x%=y;
	 
	while(true)
	{
		if(x==0)
		{
			cout<

Problem H Gym100837C

队友写了一发WA on 15

回头看看到底写了啥再说吧

PS:我云玩家这题我没看

Problem I Gym100837D

计算几何题

具体先坑着

Problem J Gym100837E

计算音符时值并简化

考场上贪心炸了

我觉得需要DP

具体坑着

Problem K Gym100837F

给出两两之间的胜负情况并希望1号赢,且竞赛树最矮(就是进行的淘汰轮数要尽可能少)

问多少种方案

树规

具体坑着

Problem L Gym100837G

啥玩意连题意都读不懂

我八成是学了假的英文

坑着(摔)

你可能感兴趣的:(SDU,ACM,Codeforce)