欢迎光临
我们一直在努力

P1011 [NOIP 1998 提高组] 车站

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */
#content_views .toc,
/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */
#content_views.markdown_views > p:empty:has(+ .toc),
#content_views.markdown_views > .toc + p:empty,
/* 富文本旧版目录标记 */
#content_views.htmledit_views #main-toc,
#content_views.htmledit_views #hr-toc,
#content_views.htmledit_views p[id*=\”-toc\”] {
display: none !important;
}
/* 目录去掉后,紧跟的首个标题不再多出一块上边距 */
#content_views.markdown_views > .toc + h1,
#content_views.markdown_views > .toc + h2,
#content_views.markdown_views > .toc + h3,
#content_views.markdown_views > .toc + h4,
#content_views.markdown_views > .toc + p:empty + h1,
#content_views.markdown_views > .toc + p:empty + h2,
#content_views.markdown_views > .toc + p:empty + h3,
#content_views.markdown_views > .toc + p:empty + h4 {
margin-top: 0 !important;
}

题目链接:

P1011 [NOIP 1998 提高组] 车站 – 洛谷

最佳思路:

枚举

#include<bits/stdc++.h>
using namespace std;
int main()
{
int a,n,m,x;
cin >> a >> n >> m >> x;
int up[25] = {0},down[25] = {0},sum[25] = {0};
up[1] = a,down[1] = 0,sum[1] = a;
for (int i = 0 ; i < m;i++)
{
up[2] = i,down[2] = i,sum[2] = a;
for(int j = 3;j < n;j++)
{
up[j] = up[j-1] + up[j – 2];
down[j] = up[j-1];
sum[j] = sum[j – 1] + up[j] – down[j];
}
if(sum[n-1] == m)
{
cout << sum[x];
break;
}
}
return 0;
}

运用多个数组如up down sum记录状态

然后i开始枚举所有值,但i的上界是m:

因为可以推出人数是不断增加的

别忘记设置2车站的初始状态

然后循环模拟上下车直到n-1站

与目标值去对比即可

关键思想:用多组数组同步去记录某一时刻的各种状态

至少我老是想不起来这么用

和这个

P1003 [NOIP 2011 提高组] 铺地毯-CSDN博客

思想异曲同工

赞(0)
未经允许不得转载:171主机测评 » P1011 [NOIP 1998 提高组] 车站
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址