集训Day-1考试爆炸记+题解

T1简单题

集训Day-1考试爆炸记+题解_第1张图片

emm首先前三个点暴力,这应该是个数论题,先把暴力打上再说

过了一会,回来想emm,目前没有logn的分解算法吧,所以应该是一个玄学思路题,

于是我开始想,如果最小是1,那么它是质数,

如果最小是2,那么sqrt(n)*sqrt(n)=n,

如果最小是3,那么³√n*³√n*³√n=n,

如果最小是4,那么pow(n,0.25)*pow(n,0.25)*pow(n,0.25)*pow(n,0.25)=n,

如果最小是5,那么此时pow(n,0.2)只有三千多,可以把素数在三千多以内的筛出来,然后把n在三千多里面的质数筛出来,再按照最小是2,3,4的方法再取min就能AC

#include
#include
#include
#include
#include
#include
#include
#define LL long long
using namespace std;
int T,minn;
LL n;
int vst[3983],prime[3983];
double eps=1e-5;
bool pd(LL n,int num)
{
	double tt=pow(n,1.0/num);
    return (abs(round(tt)-tt)

  

T2 送分题

集训Day-1考试爆炸记+题解_第2张图片

emm点分树什么鬼?输出样例然后再见

T3 普及组送分题

集训Day-1考试爆炸记+题解_第3张图片

emm不会写,这是什么高级数据结构暴力30再见

代码

#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
mapmapp[100005];
int n,len[100005],q;
string s[100005];
int main()
{
	scanf("%d",&n);
	for(int i=1;i<=n;i++){cin>>s[i];len[i]=s[i].length();}
	scanf("%d",&q);
	for(int i=1;i<=q;i++)
	{
		int x,y;
		scanf("%d %d",&x,&y);
		if(mapp[x][y]){printf("%d\n",mapp[x][y]);continue;}
		int bj;
		for(int j=min(len[x],len[y]);j>=0;j--)
		{
			bj=0;
			for(int k=j-1;k>=0;k--)if(s[x][len[x]-j+k]!=s[y][k]){bj=1;break;}
			if(!bj){mapp[x][y]=j;break;}
		}
		printf("%d\n",mapp[x][y]);
	}
	return 0;
}

  


考后期望得分100+0+30=130,实际70+10+50=130,T1玄学,T2居然输出样例有10分,T3居然不是数据结构,如果极限数据就应该是两个很长的串一直询问,只需用map记下即可。

初三奆佬180吊打我%%%

end

 

转载于:https://www.cnblogs.com/Peter-Rabbit/p/11321881.html

你可能感兴趣的:(集训Day-1考试爆炸记+题解)