CF#460 Div2

第三場CF了。

辣雞學校11點寢室關門就只能打一個半小時了。然後回去寢室門已經關了差點跟老師吵一架。

就寫了A,B,C,D;提高d1t1的水平。。

Room的Rank1太課怕把能hack的都hack完了什麼都沒有給我留下。。

所幸最後還漲了一點Rating。



A

#include<iostream>
#include<cstdio>
#include<iomanip>
#include<cmath>
#include<cstdlib>
#include<queue>
#include<cstring>
#include<algorithm>
#include<vector>
using namespace std;
inline int Get_Int()
{
    char x=getchar();
    int num=0,bj=1;
    while(x<'0'||x>'9')
    {
        if(x=='-') bj=-1;
        x=getchar();
    }
    while(x>='0'&&x<='9')
    {
        num=num*10+x-'0';
        x=getchar();
    }
    return num*bj;

 }
double x,y,ans=1e18;
long long n,m;
int main()
{
    n=Get_Int();m=Get_Int();
    for(int i=1;i<=n;i++)
    {
    	scanf("%lf%lf",&x,&y);
    	ans=min(ans,x/1.0/y*m);
	}
	printf("%0.8lf",ans);
    return 0;
}
B

#include<iostream>
#include<cstdio>
#include<iomanip>
#include<cmath>
#include<cstdlib>
#include<queue>
#include<cstring>
#include<algorithm>
#include<vector>
using namespace std;
inline int Get_Int()
{
    char x=getchar();
    int num=0,bj=1;
    while(x<'0'||x>'9')
    {
        if(x=='-') bj=-1;
        x=getchar();
    }
    while(x>='0'&&x<='9')
    {
        num=num*10+x-'0';
        x=getchar();
    }
    return num*bj;

}
int n,Ans[10005],i,j,k;
bool check(int x)
{
	int sum=0;
	while(x)
	{
	 sum+=x%10;
	 x/=10;
	 if(sum>10) return false;	
	}
	if(sum==10)
	return true;
	return false;
}
int main()
{
//	freopen("pp.out","r",stdout);
	n=Get_Int();
    for(i=1;i;i++)
    {
    	if(check(i)) Ans[++Ans[0]]=i;
    
    	if(Ans[0]==n) break;
	}
	
	cout<<Ans[n]<<endl;
    return 0;
}
C

#include<iostream>
#include<cstdio>
#include<iomanip>
#include<cmath>
#include<cstdlib>
#include<queue>
#include<cstring>
#include<algorithm>
#include<vector>
using namespace std;
inline int Get_Int()
{
    char x=getchar();
    int num=0,bj=1;
    while(x<'0'||x>'9')
    {
        if(x=='-') bj=-1;
        x=getchar();
    }
    while(x>='0'&&x<='9')
    {
        num=num*10+x-'0';
        x=getchar();
    }
    return num*bj;

}
int p[2005],v[2005];
int ans=0,h[2005],l[2005],n,m,k,i,j,K;
char c;
int main()
{
    n=Get_Int();m=Get_Int();K=Get_Int();
    for(i=1;i<=n;i++)
     for(j=1;j<=m;j++)
     {
     	while(c=getchar())
     	if(c=='*'||c=='.') break;
     	if(c=='*')
     	{
     		h[i]=0;l[j]=0;
		}
		else {
			h[i]++;l[j]++;
			if(h[i]>=K) ans++;
			if(l[j]>=K) ans++;
		}
	 }
	 if(K==1) printf("%d\n",ans/2);
	 else printf("%d",ans);
    return 0;
}

D

#include<iostream>
#include<cstdio>
#include<iomanip>
#include<cmath>
#include<cstdlib>
#include<queue>
#include<cstring>
#include<algorithm>
#include<vector>
using namespace std;
inline int Get_Int()
{
    char x=getchar();
    int num=0,bj=1;
    while(x<'0'||x>'9')
    {
        if(x=='-') bj=-1;
        x=getchar();
    }
    while(x>='0'&&x<='9')
    {
        num=num*10+x-'0';
        x=getchar();
    }
    return num*bj;

}
struct hebe{
	int x,y;
}b[300005]; 
struct tfz{
   int to,next;
}a[300005],A[300005];
queue<int>Q;
int CNT=0,D[300005],W[300005][30],H[300005],x,y,i,j,k,n,m,h[300005],cnt=0,d[300005][30],v[300005];
int flag=0,V[300005],ans=0,K[300005],top=0,sign=0,SCC=0,dfn[300005],low[300005],s[300005];
char C[300005];
void xing(int x,int y)
{
	cnt++;a[cnt].next=h[x];a[cnt].to=y;h[x]=cnt;
}
void TARJIAN(int x)
{
	int i,y;
	dfn[x]=low[x]=++sign;
	s[++top]=x;
	v[x]=1;
	for(i=h[x];i;i=a[i].next)
	{
		y=a[i].to;
		if(!dfn[y])
		{
			TARJIAN(y);
			low[x]=min(low[x],low[y]);
		}
		else if(v[y]) low[x]=min(dfn[y],low[x]);
	}
	if(low[x]==dfn[x])
	{
		SCC++;
		do{
			y=s[top--];
			K[y]=SCC;
			v[y]=0;
		}while(y!=x);
	}
}
bool cmp(hebe x,hebe y)
{
	if(x.x==y.x) return x.y<y.y;
	return x.x<y.x;
}
void Xing(int x,int y)
{
	CNT++;A[CNT].next=H[x];A[CNT].to=y;H[x]=CNT;
}
void Build()
{
	int i,y,x;
	for(x=1;x<=n;x++)
	{
		W[K[x]][C[x]-'a'+1]++;
		V[K[x]]++;
		if(V[K[x]]>=2)
		{
			
			printf("-1\n");exit(0);
		}
		for(i=h[x];i;i=a[i].next)
		{
			y=a[i].to;
			if(K[x]!=K[y])
			{
				Xing(K[x],K[y]);D[K[y]]++;
			}
		}
	}
}
void Solve()
{
	int i,x,y;
	for(i=1;i<=SCC;i++)
	if(D[i]==0) Q.push(i);
	while(!Q.empty())
	{
		x=Q.front();Q.pop();
	//	cout<<x<<endl;
		for(i=1;i<=26;i++)
		{
		 d[x][i]+=W[x][i];
		 ans=max(d[x][i],ans);
		 }
		for(i=H[x];i;i=A[i].next)
		{
			y=A[i].to;
			for(j=1;j<=26;j++)
			 d[y][j]=max(d[y][j],d[x][j]);
			D[y]--;
			if(!D[y]) Q.push(y); 
		}
	}
}
int main()
{
    n=Get_Int();m=Get_Int();
    for(i=1;i<=n;i++)
    {
    	while(C[i]=getchar())
    	if(C[i]>='a'&&C[i]<='z') break;
	}
	for(i=1;i<=m;i++)
	{
		b[i].x=Get_Int();b[i].y=Get_Int();
	if(b[i].x==b[i].y)flag=1;
	}
	if(flag==1)
	{
		printf("-1\n");return 0;
	}
	sort(b+1,b+m+1,cmp);
	for(i=1;i<=m;i++)
	 if(b[i].x!=b[i-1].x||b[i-1].y!=b[i].y)
	 {
	 	xing(b[i].x,b[i].y);
	 }
	for(i=1;i<=n;i++)
	if(!dfn[i]) TARJIAN(i);
	
	Build();
	Solve();
	printf("%d\n",ans);
    return 0;
}

E

#include<iostream>
#include<cstdio>
#include<iomanip>
#include<cmath>
#include<cstdlib>
#include<queue>
#include<cstring>
#include<algorithm>
#include<vector>
#include<map>
using namespace std;
inline long long Get_Int()
{
    char x=getchar();
    long long num=0,bj=1;
    while(x<'0'||x>'9')
    {
        if(x=='-') bj=-1;
        x=getchar();
    }
    while(x>='0'&&x<='9')
    {
        num=num*10+x-'0';
        x=getchar();
    }
    return num*bj;

}
map<long long,long long>h;
long long X,C,ans=0,i,j,k,ni,a,b,p,x;
long long KSM(long long b,long long k)
{
	long long ans=1;
	while(k)
	{
		if(k&1) ans=ans*b%p;
		b=b*b%p;
		k>>=1;
	}
	return ans;
}
int main()
{
    a=Get_Int();b=Get_Int();
    p=Get_Int();X=Get_Int();
    ni=KSM(a,p-2);
    for(i=1;i<=p-1;i++)
    {
    	b=b*ni%p;
    	C=(p*i+((p-1)*(p-1))%(p*(p-1))*b)%(p*(p-1));
    	ans=(ans+X/(p*(p-1))+(X%(p*(p-1))>=C));
	}
	cout<<ans<<endl;
    return 0;
}

F

改題的時候題解沒出 懶得寫辣



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章