20180908考试
T1
3806 -- 【模拟试题】升降梯上
Description
Nescafe之塔一共有N层,升降梯在每层都有一个停靠点。手柄有M个控制槽,第i个控制槽旁边标着一个数Ci,满足C1<C2<C3<....<CM。如果Ci>0,表示手柄扳动到该槽时,电梯将上升Ci层;如果Ci<0,表示手柄扳动到该槽时,电梯将下降 -Ci 层;并且一定存在一个Ci=0,手柄最初就位于此槽中。注意升降梯只能在1~N层间移动,因此扳动到使升降梯移动到1层以下、N 层以上的控制槽是不允许的。
电梯每移动一层,需要花费2秒钟时间,而手柄从一个控制槽扳到相邻的槽,需要花费1秒钟时间。探险队员现在在1层,并且想尽快到达N层,他们想知道从1层到N层至少需要多长时间?
Input
第二行M个整数C1、C2......CM。
Output
Sample Input
Sample Output
Hint
手柄从第二个槽扳到第三个槽(0扳到2),用时1秒,电梯上升到3层,用时4秒。
手柄在第三个槽不动,电梯再上升到5层,用时4秒。
手柄扳动到第一个槽(2扳到-1),用时2秒,电梯下降到4层,用时2秒。
手柄扳动到第三个槽(-1扳倒 2),用时2秒,电梯上升到6层,用时4秒。
总用时为(1+4)+4+(2+2)+(2+4)=19秒。
【数据规模】
对于30%的数据,满足1≤N≤10,2<=M<=5。
对于100%的数据,满足1≤N≤1000,2<=M<=20,-N<C1<C2<....<CM<N。
考场上写的O(n*m^2)的dp拿了90,本来期望100的……
定义:f[i][j]表示在第i层时手柄在j位置的最小代价
#include<algorithm>
#include<iostream>
#include<iomanip>
#include<cstring>
#include<cstdio>
#include<cmath>
#define int long long
using namespace std;
const int INF=0x3f3f3f3f,MAXX=100005;
int read()
{int s=0,bj=0;char ch=getchar();while(ch<'0'||ch>'9')bj|=(ch=='-'),ch=getchar();while(ch>='0'&&ch<='9')s=(s<<1)+(s<<3)+(ch^48),ch=getchar();return bj?-s:s;
}
void printnum(int x)
{if(x>9)printnum(x/10);putchar(x%10^48);
}
void print(int x,char ch)
{if(x<0){putchar('-');x=-x;}printnum(x);putchar(ch);
}
int _min(int x,int y){return x<y?x:y;}
int abss(int x){return x>0?x:-x;}
int f[1005][25];//f[i][j]表示在第i层时把手在第j个槽里的最小代价
int n,m,c[25],bj,minn=INF;
signed main()
{n=read();m=read();for(int i=1;i<=m;i++){c[i]=read();if(c[i]==0)bj=i;}memset(f,0x3f,sizeof(f));for(int i=1;i<=m;i++)f[1][i]=abss(bj-i);for(int kk=1;kk<=n>>3;kk++)//由于扳过来那部分可能之前没有更新到,应该跑n遍dp,但是时间原因,所以只跑了n/8遍 for(int i=1;i<=n;i++)//枚举层 {for(int j=1;j<=m;j++)//枚举扳手位置 {for(int k=1;k<=m;k++)f[i][j]=_min(f[i][j],f[i][k]+abss(j-k));//当前层手柄在其他位置时扳过来的情况 if(i+c[j]>=1&&i+c[j]<=n)f[i+c[j]][j]=_min(f[i+c[j]][j],f[i][j]+(abss(c[j])<<1));//如果在这个手柄走,那么要判断它是否在1——n层,然后更新 }}for(int i=1;i<=m;i++)minn=_min(minn,f[n][i]);//在每个位置时的代价取min if(minn>=INF)puts("-1");else print(minn,'\n');return 0;
}
T2
2031 -- 【NOIP模拟试题】塔顶试探
Description
现在探险队员们在树根处,他们打算进一步了解塔顶的结构,为此,他们使用了一种特殊设计的机器人。这种机器人会从队员身边,也就是树根出发,之后对塔顶进行深度优先遍历。机器人每进入一个房间(无论是第一次进入还是返回),都会记录这个房间的颜色。最后,机器人会回到树根。
显然,机器人会访问每个房间至少一次,并且穿越每条通道恰好两次(两个方向各一次),然后,机器人会得到一个颜色序列。但是,探险队员发现这个颜色序列并不能唯一确定塔顶的结构。现在他们想请你帮助他们计算,对于一个给定的颜色序列,有多少种可能的结构会得到这个序列。由于结果可能会非常大,你只需要输出答案对 10^9 取模之后的值。
Input
Output
Sample Input
Sample Output
Hint
#include<algorithm>
#include<iostream>
#include<iomanip>
#include<cstring>
#include<cstdio>
#include<cmath>
using namespace std;
char ch[305],bj[305];
int len,n,fa[305],cnt,num;
void DFS(int x,int no)
{if(x==len){num++;if(num==1e9)num=0;return;}if(bj[fa[no]]==ch[x]){DFS(x+1,fa[no]);}if(cnt<n){bj[++cnt]=ch[x];fa[cnt]=no;DFS(x+1,cnt);fa[cnt]=0;bj[cnt]=0;cnt--;}
}
int main()
{scanf("%s",ch+1);len=strlen(ch+1);n=(len+1)>>1;DFS(1,0);printf("%d\n",num);return 0;
}
#include<algorithm>
#include<iostream>
#include<iomanip>
#include<cstring>
#include<cstdio>
#include<cmath>
#define LL long long
using namespace std;
const int mod=1e9;
char ch[305];
LL f[305][305];int n;
int main()
{scanf("%s",ch+1);n=strlen(ch+1);for(int i=1;i<=n;i++)f[i][i]=1;//初始化 for(int len=3;len<=n;len+=2)//枚举长度 ,易得len只有在奇数时才能有方案 {for(int l=1;l<=n-len+1;l++)//枚举l {int r=len+l-1;if(ch[l]^ch[r])continue;//易得只有l和r相等时才能有方案 f[l][r]=f[l+1][r-1];for(int mid=l+2;mid<=r-2;mid++)if(ch[l]==ch[mid])f[l][r]=(f[l][r]+1ll*f[l+1][mid-1]*f[mid][r]%mod)%mod;//枚举中间点,并更新 ,因为是方案数,所以相乘 }}printf("%lld\n",f[1][n]);//(不开long long见祖宗) return 0;
}
T3
2368 -- 【模拟试题】礼物运送
Description
“远道而来的客人,我们是不是守护Nescafe之塔的精灵。如果你们想拜访护法和圣主的话,就要由我们引路。因此,你们是不是该给我们一点礼物呢?”
队员们往远处一看,发现花园中由N各木箱,M条柔软的羊毛小路,每条小路的两个端点都是木箱,并且通过它需要ti的时间。队员们需要往每个木箱中放一份礼物,不过由于精灵们不想让花园被过多地踩踏,因此运送礼物的任务最多只能由两位探险队员完成。
两位探险队员同时从1号木箱出发,可以在任意木箱处结束运送。运送完毕时,每只木箱应该被两位队员中至少一人访问过。运送任务所用的时间是两人中较慢的那个人结束运送任务的时间。请问这个时间最快是多少呢?
Input
接下来M行每行三个整数xi,yi,ti,表示xi和yi之间有一条用时ti的小路,小路是双向的。
Output
Sample Input
6 6
1 2 10
2 3 10
3 4 5
4 5 10
5 6 20
2 5 10
Sample Output
Hint
对于50%的数据,1<=N<=9;
对于100%的数据,1<=N<=18,1<=ti<=1000,1<=xi,yi<=N,两个木箱之间最多只有一条小路,不会有自己到自己的小路,保证所有木箱是连通的。
#include<algorithm>
#include<iostream>
#include<iomanip>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<queue>
#define LL long long
using namespace std;
const int INF=0x3f3f3f3f,MAXX=100005;
int read()
{int s=0,bj=0;char ch=getchar();while(ch<'0'||ch>'9')bj|=(ch=='-'),ch=getchar();while(ch>='0'&&ch<='9')s=(s<<1)+(s<<3)+(ch^48),ch=getchar();return bj?-s:s;
}
int n,m;
struct bian{int nx,to,v;}w[325];int h[19],cnt;
void AddEdge(int x,int y,int z){w[++cnt].to=y;w[cnt].nx=h[x];w[cnt].v=z;h[x]=cnt;}
int d[1<<19][19];//当前已走的集合为i,现在在j的最小代价
bool vst[1<<19][19],bj[19];
struct node{int x,y;};
void spfa()
{memset(d,0x3f,sizeof(d));queue<node>q;d[1][1]=0;q.push((node){1,1});while(!q.empty()){int xx=q.front().x,yy=q.front().y;q.pop();vst[xx][yy]=0;for(int i=h[yy];i;i=w[i].nx){int y=w[i].to,no=xx|(1<<(y-1));//往y点走 if(d[no][y]>d[xx][yy]+w[i].v){d[no][y]=d[xx][yy]+w[i].v;if(!vst[no][y]){vst[no][y]=1;q.push((node){no,y});}}}}
}
void dfs(int x)
{if(bj[x])return;bj[x]=1;for(int i=1;i<=n;i++)d[x][0]=min(d[x][0],d[x][i]);//d[i][0]表示已经走了i集合的最小代价for(int i=1;i<=n;i++)//枚举下一步往哪个点走if(!(x&(1<<(i-1))))//如果这个点没有被走过 {int y=x|(1<<(i-1));dfs(y);d[x][0]=min(d[x][0],d[y][0]);}
}
int main()
{n=read();m=read();for(int i=1;i<=m;i++){int x=read(),y=read(),z=read();AddEdge(x,y,z);AddEdge(y,x,z);}spfa();
// for(int i=1;i<=(1<<n)-1;i++)
// {
// for(int j=1;j<=n;j++)cout<<d[i][j]<<" ";cout<<endl;
// }dfs(0);//初始集合为空int ans=INF;for(int i=0;i<=(1<<n)-1;i++)ans=min(ans,max(d[i][0],d[(1<<n)-1-i][0])/*枚举每一种两个人走的情况*/);printf("%d\n",ans);return 0;
}
转载于:https://www.cnblogs.com/Peter-Rabbit/p/11493716.html
20180908考试相关推荐
- # 20180908 2018-2019-2 《密码与安全新技术专题》第9周作业
20180908 2018-2019-2 <密码与安全新技术专题>第9周作业 课程:<密码与安全新技术专题> 班级: 1892 姓名: 杨晨曦 学号:20189208 上课教师 ...
- 中国矿业大学计算机学院机房,2020年中国矿业大学计算机学院初试自命题科目考试大纲-数据结构...
一. 考试目的与要求 目的:通过本科目的考试,考察计算机专业人员对<数据结构>课程内容的理解和掌握程度以及相关算法编写能力. 要求:掌握各种基本概念和术语,掌握算法描述和分析的方法.重点是 ...
- 中文版证书_CIA考试多久后才可以领取证书?领取的方式是什么?
CIA考试通过后,过久可以拿到证书?怎么才能拿到证书呢?除了通过科目考试还有其他什么条件呢?通过科目考试的学生还要做些什么?我们一起来看看吧. (一)CIA考试通过后,多久才可以领取证书? 1.考试结 ...
- 2021年高考模拟考成绩查询,2021年湖北省普通高考模拟考试成绩查询
高考对人生的重要性众所周知,其中正式高考前的模拟考试也让学生和学生家长关注,而2021年的湖北省普通高考模拟考试也出炉了,考生可登入湖北省教育考试院查询成绩,模拟考后要分析题,总结题,下面来看详细信息 ...
- 计算机二级函数知识,2017年全国计算机二级考试MS Office高级应用知识点:INDIRECT函数...
INDIRECT函数知识点 适用考试:全国计算机二级考试 考试科目:MS Office高级应用 科目知识点:INDIRECT函数 INDIRECT函数立即对引用进行计算,并显示其内容.当需要更改公式中 ...
- 职称考试还要考计算机 英语,强烈建议取消所谓的英语职称和计算机考试
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 强烈要求取消职称计算机`英语考试 职称计算机`英语考试坑苦了广大相关受害者,其实质是某个别部门单位敛财的冠冕堂皇的项目.那些政策制定者美其名曰是通过考试激 ...
- 广东省卫生2021副高考试成绩查询,中国卫生人才网:广东2021卫生资格考试成绩查询入口 -中国卫生人...
国家卫生资格考试网为您发布 中国卫生人才网:广东2021卫生资格考试成绩查询入口 ,同步中国卫生人才网信息:2021广东卫生资格成绩查询.更多关于卫生资格成绩,2021卫生资格考试,卫生资格考试,国家 ...
- 安徽全国计算机缴费,全国计算机等级考试3月报名 安徽首次网上报名缴费
2月10日从招生考试院获悉,2017年3月份全国计算机等级考试(以下简称NCRE)报名工作即将开始,今年也是我省首次在全省范围内实行网上报名及缴费. 据介绍,本次考试时间为3月25日至28日(第48次 ...
- 乐高机器人教室布置图片大全_全国青少年机器人技术等级考试(上海宝山站)顺利举行...
"全国青少年机器人技术等级考试(上海宝山站)"于2020年9月26日在贝乐机器人宝山水产路校区顺利举行,是贝乐机器人受中国专业人才库全国机器人管理中心委托,为了培养青少年儿童科学素 ...
最新文章
- 不要用 SELECT *
- 剑指offer:不用加减乘除做加法
- 马斯克Neuralink联合创始人宣布离职,此前尚未推出上市产品
- 一些需要解决的问题(Win32)
- 网易智慧企业 Node.js 实践(2)| 平滑发布和前端代码
- 三、IntellijIDEA开发工具,学习Java好利器
- 零基础如何学Java?能学会Java吗?
- Java 数据类型内存分析
- Html和CSS在浏览器中常见的兼容性问题处理
- Segment Model.
- geohash美团附近酒店搜索-技术方案
- (0.2.2)如何下载mysql数据库(二进制、RPM、源码、YUM源)
- AWStats日志分析部署
- 常用办公软件推荐和使用
- JVM垃圾收集器基准报告 – Ionuț Baloșin 如何选择适合你的垃圾回收器
- 给Edge添加chrome主题
- 随心所遇 ASP.NET助您实现网站大变脸
- pythonfor反向循环_Python for 循环语句
- 包的概念与常见内置模块
- r5 5600H 怎么样 相当于什么水平
热门文章
- springboot项目Autowired annotation is not supported on static fields
- 记一次使用mybatisplus新增功能出现Could not set property ‘id‘ of class XXXXXXXX
- c语言检测状态是否变化,C语言数组状态研究
- HAP框架学习之——LOV使用
- H5移动端开发基础(三)自定义滚动条、实战-音悦台
- java jcom操作wps
- android 三星存储位置,三星Android系统文件夹全解
- 【直接下载】x86_64-8.1.0-release-win32-sjlj-rt_v6-rev0
- Managerial Economics 学习笔记
- 软件优化(速度问题)