一个初三蒟蒻不可能rank1.jpg

T1:

给出两个单词 (开始单词和结束单词) 以及一个词典。 找出从开始单词转换到结束单词,
所需要的最短转换序列。转换的规则如下:
1、每次只能改变一个字母
2、转换过程中出现的单词(除开始单词和结束单词)必须存在于词典中
例如:
开始单词为:hit
结束单词为:cog
词典为:[hot,dot,dog,lot,log,mot]
那么一种可能的最短变换是: hit -> hot -> dot -> dog -> cog,
所以返回的结果是序列的长度 5;
注意:
1、如果不能找到这种变换,则输出 0;
2、词典中所有单词长度一样;
3、所有的单词都由小写字母构成;
4、开始单词和结束单词可以不在词典中。

每个词长度不大于5,词数不超过30

看上去好难...要各种比较字符串,判断变化...

然而这是一道搜索题(看数据范围)

代码:

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<string>
#include<stdio.h>
using namespace std;
char tar[]; //目标字符串
char sta[]; //初始字符串
char index[][]; //字典
int l; //字符串长度
int minn=;    //答案,最终要取最小,设一个怎么都算不到的极大值,
int t=; //处理读入的指针(并不是*指针)
bool used[];   //查看在搜索时是否用过,毕竟一个词不能用两遍,也用不了两遍...
inline void search(int step,char a[]){ //用这两个变量step传递步数状态,a数组传递目前字符状态
int sum=;
for(int i=;i<l;i++)
if(a[i]!=tar[i])
sum++; //比较a数组与tar是否只有一步之遥
if(sum==)
minn=min(minn,step);
for(int i=;i<=t;i++){
if(used[i])continue;
sum=;
int p; //保存与a不同的字符下标方便深搜回溯
char c;  //保存原先的a的被替换字符以便回溯
for(int j=;j<l;j++){
if(a[j]!=index[i][j])
sum++,p=j;
}
if(sum==){
c=a[p];
a[p]=index[i][p];
used[i]=;
search(step+,a);
a[p]=c; //反悔操作
used[i]=;
}
}
}
int main(){
//freopen("word.in","r",stdin);
scanf("%s",sta);
scanf("%s",tar);
l=strlen(sta);
while(scanf("%s",index[t])!=EOF) //输入处理,之前对这种无限制输入很头疼
t++;
search(,sta);
if(minn!=)
printf("%d\n",minn);
else
printf("0\n"); //无解的特判
return ;
}

总而言之,一个1h10min的搜索题

T2

对于 n=4 时,对应的集合 s={4,3,2,1},他的非空子集有 15 个
当 n=4 时,集合{4,3,2,1}的 15 个子集分别对应于 4 位二进制数:
{1}:0001;{2}:0010;{1,2}:0011;{3}:0100,…,{1,2,3,4}:1111。
把二进制数相对应的十进制数的 1,2,3,…,15 分别作为相应集合的编号。
如子集{1,2,4}对应的二进制数是 1011,相应的十进制数是 11,所以子集{1,2,4}的编号
为 11。
任务:
对于给定的 n 和 m,输出集合{1,2,…,n}的编号为 m 的子集。

思路是状态压缩dp的核心

本题的n没有任何用处,仅是对m的数位分析,

主要算法思路就是把m的二进制展开,某一位为1则输出该数,为0则表示没有该数,不输出

一道大水题

代码:

#include<iostream>
#include<cstdio>
using namespace std;
int n,m;
int main(){
scanf("%d%d",&n,&m);
n=;
while(m){
if(m&)printf("%d ",n);
n++;
m>>=;
}return ;
}

快速幂处理方法不解释

T3(毒瘤,不给大样例,没有小数据,1分都没骗到...):

有 n 个城市,编号 1~n。其中 i 号城市的繁华度为 pi。省内有 m条可以双向同行的高速
公路,编号 1~m。编号为 j 的高速公路连接编号为 aj 和 bj 两个城市,经过高速公路的费用
是 wj。若从城市 x 出发到某城市 y,除了需要缴纳高速公路费用,还要缴纳“城市建设费”
(为从 x 城市到 y 城市所经过的所有城市中繁华度的最大值,包括 x 和 y 在内)。
现提出 q 个询问,每个询问给出一组 x 和 y,你需要回答从 x 出发到 y 城市,所需要的
最低交通费(高速公路费+城市建设费)是多少。

刚刚测试时代码蜜汁不见了先把代码粘上来:

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
int dis[][];
int pm[][];
int p[];
int n,m,q;
int main(){
//freopen("road.in","r",stdin);
//freopen("road.out","w",stdout);
memset(dis,0x3f,sizeof dis);
scanf("%d%d%d",&n,&m,&q);
for(int i=;i<=n;i++)
scanf("%d",&p[i]);
for(int i=;i<=m;i++){
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
dis[a][b]=min(dis[a][b],c);
dis[b][a]=min(dis[a][b],c);
pm[a][b]=max(p[a],p[b]);
pm[b][a]=max(p[a],p[b]);
}
for(int k=;k<=n;k++){
for(int i=;i<=n;i++){
for(int j=;j<=n;j++){
if(dis[i][j]+pm[i][j]>dis[i][k]+dis[k][j]+max(pm[i][k],pm[k][j])){
dis[i][j]=dis[i][k]+dis[k][j];
pm[i][j]=max(pm[i][k],pm[k][j]);
}
}
}
}
while(q){
q--;
int x,y;
scanf("%d%d",&x,&y);
printf("%d\n",dis[x][y]+pm[x][y]);
}return ;
}

这是10分代码...然而当时我并没有10分(当时没有判重边)

标程:

#include<iostream>
#include<cstring>
#include<cstdio>
#include<queue>
#include<algorithm>
using namespace std;
int n,m,q,p[],aj,bj,wj,x,y,f[][],a[][],top,t[];
int cmp(int x,int y)
{
return p[x]<p[y];
}
int main()
{
freopen("road.in","r",stdin);
freopen("road.out","w",stdout);
memset(a,,sizeof(a));
top=;
scanf("%d%d%d",&n,&m,&q);
for(int i=;i<=n;i++)
scanf("%d",&p[i]);
for(int i=;i<=m;i++)
{
scanf("%d%d%d",&aj,&bj,&wj);
a[aj][bj]=min(a[aj][bj],wj);
a[bj][aj]=min(a[bj][aj],wj);
}
for(int i=;i<=n;i++) //初始化
{
a[i][i]=;
t[i]=i; //t数组为城市编号,将其初始为城市编号
}
sort(t+,t++n,cmp); //按照城市繁华度排序对接下来的Floyd有正确性保证
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
f[i][j]=a[i][j]+max(p[i],p[j]); //初始化f数组(答案)
for(int k=;k<=n;k++) //保证p[t[k]]递增的Floyd
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
{
a[i][j]=min(a[i][j],a[i][t[k]]+a[t[k]][j]); //对边的松弛
f[i][j]=min(f[i][j],a[i][j]+max(p[i],max(p[j],p[t[k]]))); //取最大的p为价值,对答案进行优化
}
for(int i=;i<=q;i++)
{
scanf("%d%d",&x,&y);
printf("%d\n",f[x][y]);
}
fclose(stdin);
fclose(stdout);
return ;
}
/*
先理一下排序后k(t数组的角标),t与p的对应关系
仔细思考,嗯,证毕
排序后自然k为1-n递增序列,角标自然递增
t是p对应城市编号,是某种意义上的“有序排列”,然而其值无序,用其值作对应角标的p数组有序递增
p显然是城市繁华度,也是值无序,通过某种特定的访问是有序的,
也就是以t[k]为角标的p是第k大的繁华度,t[k]为繁华度为第k大的城市编号
(晕了)
所以现在我们有两种访问p数组的途径,一是根据城市标号直接查询,如将f数组初始化时的操作
二是按照大小顺序访问p,比如进行Floyd时的访问顺序
排序后的目的呢?
排序使p数组递增,使得Floyd时枚举到的p[t[k]]一定是1-k中最大的,以保证正确性
原理是啥?
排序
通过排序来保证数据的有序出现,以免在优化过程中将路上的最大p值"优化"掉
比如,我在枚举k点时已经将dis[a][b]优化,此时路中央有个p最大的城市mfb(无恶意)
然而继续枚举,发现枚举到了同一条路上的gc(同上),发现p[gc]<p[mfb],于是按照公式取min,把mfb"优化"掉了
那么就不再能保证正确性,
总结下,使p有序能够保证全面地枚举以求正确结果
*/

测试总结(没有rank1)的更多相关文章

  1. [转]h5页面测试总结

    转自http://www.blogjava.net/qileilove/archive/2014/07/24/416154.html?utm_source=tuicool H5页面测试总结 其实经过几 ...

  2. JMeter基于http请求的web接口性能测试总结

    [本文出自天外归云的博客园] 基于http请求的web接口性能测试总结 压测的目的:对于Web接口压测的目的最终是要在对数据库造成压力的情况下观察压测服务器的cpu是否达到预警值.memory是否发生 ...

  3. MySQL数据库数据类型之集合类型SET测试总结

    MySQL数据库提供针对字符串存储的一种特殊数据类型:集合类型SET,这种数据类型可以给予我们更多提高性能.降低存储容量和降低程序代码理解的技巧,前面介绍了首先介绍了四种数据类型的特性总结,其后又分别 ...

  4. Android CTS 测试总结【转】

    Android CTS 测试总结[转] 最近一直在做Android兼容性测试,根据Android官网给出的android-cts-manual 配置好了device后,开始测试. 首先配置软件环境: ...

  5. 互联网App应用程序测试流程及测试总结

    互联网App应用程序测试流程及测试总结 1. APP测试基本流程 1.1流程图 仍然为测试环境 Pass 1.2测试周期 测试周期可按项目的开发周期来确定测试时间,一般测试时间为两三周(即15个工作日 ...

  6. 20175305张天钰 《java程序设计》第四周课下测试总结

    第四周课下测试总结 错题 某方法在父类的访问权限是public,则子类重写时级别可以是protected. A .true B .false 正确答案:B 解析:书P122:子类不允许降低方法的访问权 ...

  7. WEB测试总结

    WEB测试总结:1.js文件session是否有缓存,如果没有缓存对服务器压力会很大:2.更改页面大小后,图表是否会再次向服务器请求数据:3.表单填写是否对html标识,script脚本做处理:(&l ...

  8. 20175316盛茂淞 2018-2019-2 《Java程序设计》第2周课上测试总结

    20175316 2018-2019-2 <Java程序设计>第2周课上测试总结 上周考试题目总结 题目1 题目要求: 在Ubuntu中用自己的有位学号建一个文件,教材p29 Exampl ...

  9. Java 第二次测试总结

    Java 第二次测试总结 1. 相关知识点总结 Java测试题循环与递归知识点 补充知识点: for循环语句:for(表达式1:表达式2:表达式3)表达式一负责完成变量的初始化!表达式2是值为bool ...

随机推荐

  1. 【转】pywinauto教程

    一.环境安装 1.命令行安装方法 pip install pywinauto==0.6.7 2.手动安装方法 安装包下载链接:pyWin32: python调用windows api的库https:/ ...

  2. Flask-Moment本地化日期和时间

    moment.js客户端开源代码库,可以在浏览器中渲染日期和时间.Flask-Moment是一个flask程序扩展,能把moment.js集成到Jinja2模板中. 1.安装 pip install ...

  3. 【前端知识体系-JS相关】ES6专题系列总结

    1.如何搭建ES6的webpack开发环境? 安装Node环境 node -v // 10.14.1 安装NPM环境 npm -v // 6.4.1 安装babel npm install @babe ...

  4. CodeForce 117C Cycle DFS

    A tournament is a directed graph without self-loops in which every pair of vertexes is connected by ...

  5. 如何保障MySQL主从复制关系的稳定性?关键词(新特性、crash-safe)

    一 前言 MySQL 主从架构已经被广泛应用,保障主从复制关系的稳定性是大家一直关注的焦点.MySQL 5.6 针对主从复制稳定性提供了新特性: slave 支持 crash-safe.该功能可以解决 ...

  6. VS 中批量格式化、删除未使用的 using 语句代码的插件

    插件名称:Format All Files 插件地址:https://marketplace.visualstudio.com/items?itemName=munyabe.FormatAllFile ...

  7. 使用VisualStudio或VisualStudio Code作为代码比较工具

    最近改了了几个还是用SVN托管的老项目,用的客户端是TortoiseSVN,本身这个工具比较好用,就是那个内置的比较文件差异的Diff工具太简陋了,由于TortoiseSVN支持第三方Diff查看器的 ...

  8. Winform中设置ZedGraph的字体和间距不随图形的缩放而缩放

    场景 C#窗体应用中使用ZedGraph曲线插件绘制图表: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/99716066 Win ...

  9. MES系统如何帮助烟草行业管理生产流程

    与很多其他行业一样,烟草MES系统可以帮助卷烟企业实现智能生产.精益制造.快速实现烟草企业数字化车间的创建,助力企业实现改造升级,从而提升企业生产效率,降低生产成产.烟草行业得MES者得天下. 烟草行 ...

  10. 3 测试使用和LogCat日志

    测试概念: 1.根据是否知道源代码分: 黑盒测试:功能测试 白盒测试:编写代码进行测试 2.测试力度划分: 方法测试: 单元测试: 集成测试: 系统测试: 3.暴力程度划分: 压力测试: 冒烟测试:压 ...