2017.10.26测试
来源:互联网 发布:硬盘烧坏数据能恢复吗 编辑:程序博客网 时间:2024/05/16 09:43
分数:0+65+0=65
emm,果然又是T1翻车
题解
T1 copycat
判断字符串B是否为字符串A经过若干次变化得到的
这里对于变化的定义是:
对于每一次变化,将A中所有 小写字母 x 替换为 小写字母 y (x、y 为任意字母)
emmm,加粗的原因是因为题解中如下三种情况我都考虑到了:
- 两个代码长度相等
- 所有非字母位置的字符对应相等
- 字符串A中所有字母x对应在字符串B中的位置的字母也都相同
但zero的我惊奇地发现一个反例:
A:abcdef⋯xyz
B:zyx⋯fedcba
此组数据满足上述所有条件,但却是不可行的,于是我加了一组预判,最后成功爆零 mother f**ker?!
#include<iostream>#include<cstdio>#include<cstring>#include<string>#include<cstdlib>#include<algorithm>#include<cmath>#include<iomanip>#define inf 10000097#define m(a) memset(a,0,sizeof(a))using namespace std;int read(){ int x=0,f=1;char c; for(c=getchar();!isdigit(c);c=getchar())if(c=='-')f=-1; for(;isdigit(c);c=getchar())x=(x<<3)+(x<<1)+c-'0'; return x*f;}int T,top;char s[1005],c[1005];int a[1005],b[1005],sta[1005];bool sign,fla,vis[1005],hva[1005],hvb[1005];int main(){// freopen("copycat.in","r",stdin);// freopen("copycat.out","w",stdout); T=read(); while(T--){ m(a);m(b);m(hva);m(hvb); m(vis);m(sta); sign=0;top=0;fla=1; gets(s+1); int n=strlen(s+1); gets(c+1); int m=strlen(c+1); if(n!=m){ cout<<0<<endl; continue; } for(int i=1;i<=n;i++){ if(s[i]>='a'&&s[i]<='z')a[i]=s[i]-'a'+1,hva[a[i]]=1; if(c[i]>='a'&&c[i]<='z')b[i]=c[i]-'a'+1,hvb[b[i]]=1; if(!a[i]&&!b[i]){ if(s[i]!=c[i]){ sign=1;break; } a[i]=inf;b[i]=inf; } else if(a[i]!=b[i]){ fla=0; } if((!a[i]&&b[i])||(a[i]&&!b[i])){ sign=1;break; } } if(sign){ cout<<0<<endl; continue; } if(fla){ cout<<1<<endl; continue; } for(int i=1;i<=n;i++){ if(vis[i]||a[i]==inf)continue; int tmp=a[i]; for(int j=i;j<=n;j++){ if(a[j]==tmp)sta[++top]=j,vis[j]=1; } tmp=b[sta[top]];top--; while(top){ if(b[sta[top]]!=tmp){ sign=1;break; } top--; } } if(sign) { cout<<0<<endl; continue; } for(int i=1;i<=26;i++){ if(!hva[i])break; if(i==26) for(int j=1;j<=26;j++){ if(!hvb[j])break; if(j==26)sign=1; } } if(sign) cout<<0<<endl; cout<<1<<endl; }}
T2 running
最后得到的经验:
- get_fa()简化写法与原写法时间复杂度并无可见差距
- 迪杰斯特拉最短路算法中也可以加入
vis 函数以优化,对时间复杂度帮助较大
题目:一张连通图,每条边两个权值a、b,需要找到由S到T所有路径中,在满足路径上所有a权值最大值最小的前提下,b权值和最小的路径
先并查集找出答案一,然后跑最短路求出答案二
#include<bits/stdc++.h>#define m(a) memset(a,0,sizeof(a))using namespace std;int read(){ int x=0,f=1;char c; for(c=getchar();!isdigit(c);c=getchar())if(c=='-')f=-1; for(;isdigit(c);c=getchar())x=(x<<3)+(x<<1)+c-'0'; return x*f;}int n,m,maxx;int fst[500005],fa[500005];long long dis[500005];bool vis[500005];int tot=0,num=0;struct node{ int t; long long len; int en,to; int nxt;}e[6000005],ee[6000005];void inser(int x,int y,long long c){ ee[++tot].nxt=fst[x]; fst[x]=tot; ee[tot].en=x; ee[tot].to=y; ee[tot].len=(long long)c;}bool comp(const node &a,const node &b){ return a.t<b.t;}void wr(long long x){ if(x/10)wr(x/10);putchar(x%10+'0');}int get_fa(int x){ return x==fa[x]?x:fa[x]=get_fa(fa[x]);}int a,b,t,c,T,S;int main(){// freopen("running.in","r",stdin);// freopen("running.out","w",stdout); maxx=0; n=read();m=read(); for(int i=1;i<=m;i++){ a=read();b=read();t=read();c=read(); e[++num].en=a;e[num].to=b;e[num].t=t;e[num].len=(long long)t*c; } S=read();T=read(); sort(e+1,e+num+1,comp); for(int i=1;i<=n;i++) fa[i]=i,dis[i]=-1; for(int i=1;i<=num;i++){ int px=get_fa(e[i].en); int py=get_fa(e[i].to); if(px!=py){ fa[px]=py; maxx=e[i].t; } if(get_fa(S)==get_fa(T)){ cout<<maxx<<" "; break; } } for(int i=1;i<=num;i++){ if(e[i].t<=maxx){ inser(e[i].en,e[i].to,e[i].len); inser(e[i].to,e[i].en,e[i].len); } } dis[S]=0; priority_queue<pair<long long,int> >q; q.push(make_pair(0,S)); while(!q.empty()){ int x=q.top().second; q.pop(); vis[x]=0; for(int u=fst[x];u;u=ee[u].nxt){ if(dis[ee[u].to]>dis[x]+ee[u].len||dis[ee[u].to]==-1){ dis[ee[u].to]=dis[x]+ee[u].len; if(!vis[ee[u].to]){ vis[ee[u].to]=1; q.push(make_pair(-dis[ee[u].to],ee[u].to)); } } } } wr(dis[T]);}
T3 toyuq
树形DP、树的直径的维护
人力有所不及(滑稽)
贴个不特判25分的WA暴力:
#include<bits/stdc++.h>using namespace std;int read(){ int x=0;char c; for(c=getchar();!isdigit(c);c=getchar()); for(;isdigit(c);c=getchar())x=(x<<3)+(x<<1)+c-'0'; return x;}int n,t;int maxx=0;int x,y,z;int tot=0;int w[305],ar[305],fst[305];int nxt[605],to[605],len[605];void inser(int x,int y,int w){ nxt[++tot]=fst[x]; fst[x]=tot; to[tot]=y; len[tot]=w;}void dfs(int x,int fa,int ff,int tt){ if(tt>t){ return; } maxx=max(maxx,ff); if(tt==t){ return; } int ttt=ar[x],tttt=w[x]; ar[x]=0; for(int u=fst[x];u;u=nxt[u]){ int v=to[u]; if(v==fa)continue; int tmp=ff+w[x]; w[x]=0; dfs(v,x,tmp,tt+len[u]+ar[v]); w[x]=tttt; } ar[x]=ttt;}int main(){ n=read();t=read(); for(int i=1;i<=n;i++) w[i]=read(); for(int i=1;i<=n;i++) ar[i]=read(); for(int i=1;i<n;i++){ x=read();y=read();z=read(); inser(x,y,z);inser(y,x,z); } for(int i=1;i<=n;i++){ dfs(i,0,w[i],ar[i]); } cout<<maxx;}
总结
T1还是要稳呐!
阅读全文
0 0
- 2017.10.26测试
- 研究生课程 软件测试26: 测试实现
- 2017.10.2 loli测试
- 2017.10.24测试
- 2017.10.23测试
- 2017.10.20测试
- 2017.10.19测试
- 2017.10.30测试
- 2017.10.31测试
- 2017.2.26 shallwe测试
- 2017.6.26串口测试
- 测试
- 测试
- 测试
- 测试
- 测试
- 测试
- 测试
- mysql(3):mysql与java的连接使用
- PyTorch参数初始化方法
- 无聊的switch题,神奇的小想法
- Pytorch模块-argparse
- 二周第四次课 2017.10.26 set_uid、set_gid、stick_bit、软链接、硬连接
- 2017.10.26测试
- vs2013中配置halcon13的步骤
- vue 2.0 自定义过滤器
- 用最短的时间学会使用Azkaban来管理我们的任务
- Java两种创建线程的比较
- 51nod-1181【质数筛法】质数中的质数
- JasperReport| 异常汇总
- Servlet获取form表单上传文件及其他参数
- layui table请求数据时出现415错误解决办法