第三場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
改題的時候題解沒出 懶得寫辣