状态压缩的经典题。

按照一般做法,DP一维时间O(n),显然跑不过。考虑到石子较少,实际上有很长一段是一定可以跳到的,设两个石头分别在i点和j点,跳跃的路程为S到T。那么从i点可以跳到i+S到i+T。从j-T到j-S可以跳到J。显然当i和j相隔非常非常远时,从i到i+T中必然可以经过若干次跳跃,然后跳到j-T到j的任意一段。

然后状压,可以发现距离大于90(假设s和t不同,s(9)和t(10)的最小公倍数)一定可以到达,这样我们把石头之间的距离%90节省时间。

然后特判一下s==t的情况,就可以AC。但有一个问题,我将mod变成100,不特判s==t的情况,这样会WA,这个我无法理解。

数据:10000
7 7 100
1111 1118 1114 1117 3010 7508 1119 1105 899 1112 9667 3238 1108 5178 4627 2116 2089 9184 1115 8887 3565 3560 3559 3562 2410 3564 3571 565 3561 3566 3573 7432 9485 4484 7258 4555 8812 1291 3567 3221 5252 5253 5244 797 5251 7885 5245 9340 5255 6537 7737 5243 9316 5246 6694 6773 5247 6031 5256 5249 5484 5482 7513 5485 5479 5481 5480 5489 381 2572 9255 7624 5821 8606 7829 5488 442 5490 5492 8098 483 482 481 478 469 474 4054 472 471 4407 479 7006 475 470 3147 6933 9097 7781 473 2221
应该输出10但是改了输出13.

#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
int se[110],a[1100000],f[1100000];
int main()
{int L,s,t,n;scanf("%d%d%d%d",&L,&s,&t,&n);for(int i=1;i<=n;i++)scanf("%d",&se[i]);sort(se+1,se+n+1);if(s==t){int ans=0;for(int i=1;i<=n;i++)if(se[i]%s==0)ans++;printf("%d\n",ans);return 0;}for(int i=1;i<=n;i++)se[i]=se[i-1]+(se[i]-se[i-1])%90;L=(L-se[n])%90+se[n];for(int i=1;i<=n;i++)a[se[i]]=1;memset(f,63,sizeof(f));f[0]=0;for(int i=s;i<=L+t;i++)for(int j=s;j<=t;j++)if(i>=j)f[i]=min(f[i],f[i-j]+a[i]);int ans=999999999;for(int i=L;i<L+t;i++)ans=min(ans,f[i]);printf("%d\n",ans);return 0;
}

转载于:https://www.cnblogs.com/AKCqhzdy/p/7616899.html

caioj1522: [NOIP提高组2005]过河相关推荐

  1. 2018.12.08【NOIP提高组】模拟B组总结(未完成)

    2018.12.08[NOIP提高组]模拟B组总结 diyiti 保留道路 进化序列 B diyiti Description 给定n 根直的木棍,要从中选出6 根木棍,满足:能用这6 根木棍拼出一个 ...

  2. 第一届『Citric杯』NOIP提高组模拟赛 题解

    [官方题解]第一届『Citric杯』NOIP提高组模拟赛 题解 第一题 柠檬超市 这题是本次模拟赛的送分题.做法显然. 但是注意此题有一个陷阱: 注意W和C的规模都是10^9,所以如果直接用doubl ...

  3. 津津的储蓄计划 NOIp提高组2004

    这个题目当年困扰了我许久,现在来反思一下 本文为博客园ShyButHandsome的原创作品,转载请注明出处 右边有目录,方便快速浏览 题目描述 津津的零花钱一直都是自己管理.每个月的月初妈妈给津津\ ...

  4. 信息学奥赛一本通(C++版)NOIP提高组(1820-1829)

    信息学奥赛一本通(C++版)NOIP提高组目录 //1820 [题目描述] 我们可以用这样的方式来表示一个十进制数:将每个阿拉伯数字乘以一个以该数字所 处位置的(值减1)为指数,以10为底数的幂之和的 ...

  5. {小结}2016.6.11【初中部 NOIP提高组 】模拟赛C

    2016.6.11[初中部 NOIP提高组 ]模拟赛C No.1!!! 100+33.3+10+90=233.3 23333 1298. 牛棚(graze2.pas/c/cpp) 题解 1299. 洗 ...

  6. 6271. 2019.8.4【NOIP提高组A】锻造 (forging)

    6271. 2019.8.4[NOIP提高组A]锻造 (forging)  (File IO): input:forging.in output:forging.out Time Limits: 15 ...

  7. 2020.08.08【NOIP提高组】模拟:奶牛的图片 总结

    2020.08.08[NOIP提高组]模拟:奶牛的图片 总结 Description Farmer John希望给他的 N ( 1 ≤ N ≤ 100 , 000 ) N(1\leq N\leq100 ...

  8. NOIP 提高组 复赛 历年 试题

    NOIP 提高组  复赛  历年 试题 NOIP 2017 提高组 复赛  试题 https://wenku.baidu.com/view/70de9e29854769eae009581b6bd97f ...

  9. NOIP提高组1890~1900集合答案(之前的文章标题错了,应该是1820开始的,不是1520开始的)

    1890:[15NOIP提高组]跳石头时间限制: 1000 ms 内存限制: 131072 KB 提交数: 1037 通过数: 561 [题目描述] 这项比赛将在一条笔直的河道中进行,河道中分布着一些 ...

最新文章

  1. 【面向对象设计模式】 接口型模式 (一)
  2. 第七讲 一阶常系数线性ODE
  3. ProgressBar控件在Listview下的多线程应用(转自johngeng)
  4. 15.【nuxt起步】-Nuxt使用jsweixin sdk
  5. 构造AlertDialog弹出框,根据量值实现然用户选择列表。
  6. CCNP 640-892知识点中文精简解释
  7. ORACLE11G常用函数
  8. 数据库和Content Provider
  9. Raspberry Pi网络监控
  10. 卓有成效的管理者—第七章 有效的决定
  11. 手机wifi java_Android中使用WIFI来连接ADB
  12. python网课 知乎_如何看待风变编程的 Python 网课
  13. 实力认证!Coremail连续9次入围安全牛《中国网络安全行业全景图》
  14. 程序员被离职赔偿18万,房贷八千,只够还一年半,领导:回来上班
  15. 恐怖的代码,以及转载
  16. CANoe隐藏属性——Multi CANoe
  17. python django安装使用 错误:Type ‘manage.py help <subcommand>‘ for help on a specific subcommand.
  18. iOS 版本分布统计
  19. Dart语言-main
  20. 电脑不停,电脑主机不停重复启动怎么办

热门文章

  1. 小程序点击调转带参数_带你走遍苏大的每个角落,校园导览小程序上线!
  2. es springboot 不设置id_springboot整合ES_文档ID删除
  3. VMware虚拟机安装
  4. 导出配置_Lua配置表导出优化
  5. 密码学加密算法分类_密码学中的国际数据加密算法(IDEA)
  6. 模糊逻辑系统_在模糊逻辑系统中工作 人工智能
  7. 编写一个汇编语言程序,将字符串Hello World中的全部小写字母转换为大写字母,并存放回原地址处。
  8. 使用ThreadLocal绑定连接资源(事务)
  9. html5的canvas元素使用,HTML5canvas元素概念及使用方法介绍
  10. php打印出函数的内容吗,PHP打印函数集合详解以及PHP打印函数对比详解(精)