Day1
T1 小凯的疑惑
考场上打表搞了一个很奇怪的结论,化简后就是 a ∗ b − a − b a*b-a-b a∗b−a−b。具体证明现在还是不大会。
代码:
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long LL;
LL a,b;
int main(){
scanf("%lld%lld",&a,&b);
if (a>b) swap(a,b);
if (a==1){
printf("0\n");
return 0;
}
if (a==2){
printf("%lld\n",b-2);
fclose(stdin);
fclose(stdout);
return 0;
}
LL ans=(4+(a-3)*2+4)*(a-2)/2+1;
ans+=(b-a-1)*(a-1);
printf("%lld\n",ans);
return 0;
}
T2 时间复杂度
一般用一个栈模拟,细节比较多。没什么好说的。
考场上写的代码只会统计第一个循环。。。然而还是有80。
当时太紧张就写得很丑。
代码:
#include<cctype>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define MAXN 100
using namespace std;
struct Orz{
char c;
bool f;
}stack[MAXN+5];
int top,t,l,cmp,a[MAXN+5],ma;
int f;
char s[MAXN+5],sc[MAXN+5],sx[MAXN+5],sy[MAXN+5];
int main(){
scanf("%d",&t);
while (t--){
memset(a,0,sizeof(a));
f=0; top=0; cmp=0; ma=0;
scanf("%d%s",&l,s);
if (s[2]=='n') f=1;
for (int i=0;s[i];i++)
if (s[i]>='0'&&s[i]<='9')
cmp=cmp*10+s[i]-48;
int num=0;
bool flag=false,fa=false,fl=false; if (l&1) flag=true;
for (int i=1;i<=l;i++){
int ff=0; char ss[2];
scanf("%s",ss);
ff=ss[0];
if (ff=='F'){
int c,x=0,y=0;
scanf("%s%s%s",sc,sx,sy);
c=sc[0];
for (int j=0;sx[j];j++)
if (sx[j]>='0'&&sx[j]<='9')
x=x*10+sx[j]-48;
for (int j=0;sy[j];j++)
if (sy[j]>='0'&&sy[j]<='9')
y=y*10+sy[j]-48;
if (sx[0]=='n') x='n';
if (sy[0]=='n') y='n';
if (flag) continue;
if (a[c-'a']){ flag=true; continue; }
if (x=='n'&&y!='n') fl=true;
if (x!='n'&&y!='n'&&x>y) fl=true;
if (x!='n'&&y=='n') num++;
if (x!='n'&&y=='n'&&(!fl)) fa=true,ma=max(ma,num);
a[c-'a']++;
Orz p; p.c=c;
if (x!='n'&&y=='n') p.f=true;
else p.f=false;
stack[++top]=p;
}
else{
if (!top) { flag=true; continue; }
if (stack[top].f) num--;
a[stack[top--].c-'a']--;
if (!top) fl=false;
}
}
if (top) flag=true;
if (flag){
printf("ERR\n");
continue;
}
if ((fa&&(f==0))||(ma!=cmp&&(f==1))){
printf("No\n");
continue;
}
printf("Yes\n");
}
return 0;
}
T3 逛公园
最短路+记忆化搜索
考场上用最短路优化一下就有60了。。。
先刷一遍反图最短路求出每个点到 n n n的最短路 d i s [ i ] dis[i] dis[i]。
记 f [ i ] [ j ] f[i][j] f[i][j]表示到第 i i i个点,超出最短路的路程 ≤ j