洛谷P1021邮票面值设计 [noip1999] dp+搜索
正解:dfs+dp
解题报告:
第一眼以为小凯的疑惑
ummm说实话没看标签我还真没想到正解:D
本来以为这么多年前的noip应该不会很难:D
看来还是太菜了鸭QAQ
然后听说题解都可以被6,6 or 7,8的数据卡掉?
不管不管先把题解的思路放下qwq
(话说其实我觉得虽然会被卡掉但其实还挺妙的了呢,,,至少我这种菜鸡想不出来,,,好傻逼啊我QAQ
大概说下,就是dfs+dp(,,,我好像说了句废话?QAQ
分别详细说下这俩趴qwq
dfs(i,mx):枚举到第i个数了,然后连续最大能表示数是mx
然后显然可以让邮票面值单调递增,且第i个不能大于mx+1(否则mx+1就无法表示了QAQ)
然后每次dp算下能表示的mx,继续dfs
dp(i):第1到第i个数的连续最大能表示数
开个f[i]存的是i最少可以用几张邮票表示
然后就可以了qwq
但是似乎复杂度是错的,,,
然后另外一个正解是打表,,,
umm,,,算了我放弃我估计我是搞不出来了的QAQ
不过研究了半天之后在讨论区看到说模拟退火可以过这题?
然而好像又说7 8的数据是不欧克的,也不知道是时间不欧克还是答案是WA的鸭QAQ
不管先先放下讨论区里大佬说的模拟退火的代码qwq
现在是先看不懂的QAQ就只是mk下不会研究,等学了之后再说QAQ
#include<iostream> #include<cstring> using namespace std; ][];//[num][used] ]; ]; ],maxnum; ; ,times=;//not best bool rand(int mdf){ +))%>rate); } int n,k; int fcannot,lastcan; int now; int main(){ cin>>n>>k; for(int _233=times;_233;_233--){ memset(can,,sizeof(can)); memset(cangen,,sizeof(cangen)); can[][]=true; cangen[]=true; choose[]=; ;i<=n;i++){ can[i][i]=true; cangen[i]=true; } fcannot=n+; lastcan=n; ;i<k;i++){ ;j++){ if(!cangen[j]){ fcannot=j; break; } } now=fcannot; ;j<;j++){ if(rand(j)){ >choose[i-]){ now-=; }else{ break; } } } choose[i]=now; ;i<=lastcan;i++){ ;j<n;j++){ if(can[i][j]){ )continue; can[i+now][j+]=true; cangen[i+now]=true; lastcan=max(lastcan,i+now); } } } } ;j++){ if(!cangen[j]){ fcannot=j; break; } } fcannot--; if(fcannot>maxnum){ ;i<;i++){ bestsel[i]=choose[i]; } maxnum=fcannot; } } ;i<k;i++){ cout<<bestsel[i]<<" "; } cout<<endl; cout<<"MAX="<<maxnum; }
QAQQQQQ
洛谷P1021邮票面值设计 [noip1999] dp+搜索的更多相关文章
- 洛谷P1021 邮票面值设计
题目描述 给定一个信封,最多只允许粘贴N张邮票,计算在给定K(N+K≤15)种邮票的情况下(假定所有的邮票数量都足够),如何设计邮票的面值,能得到最大值MAX,使在1-MAX之间的每一个邮资值都能得到 ...
- 洛谷 P1021 邮票面值设计
题目描述 给定一个信封,最多只允许粘贴N张邮票,计算在给定K(N+K≤15)种邮票的情况下(假定所有的邮票数量都足够),如何设计邮票的面值,能得到最大值MAX,使在1-MAX之间的每一个邮资值都能得到 ...
- 洛谷——P1021 邮票面值设计
https://www.luogu.org/problem/show?pid=1021 题目描述 给定一个信封,最多只允许粘贴N张邮票,计算在给定K(N+K≤15)种邮票的情况下(假定所有的邮票数量都 ...
- 洛谷P1021邮票面值设计
题目 一道很经典的搜索题,可以锻炼搜索的能力,比如可以用dfs覆盖加dp的方式来寻找+更新答案.而且还可以通过在递归中增加数组的方式来辅助搜索. #include <bits/stdc++.h& ...
- P1021 邮票面值设计(dfs+背包dp)
P1021 邮票面值设计 题目传送门 题意: 给定一个信封,最多只允许粘贴N张邮票,计算在给定K(N+K≤15N+K≤15)种邮票的情况下 (假定所有的邮票数量都足够),如何设计邮票的面值,能得到最大 ...
- P1021 邮票面值设计
P1021 邮票面值设计 题目描述 给定一个信封,最多只允许粘贴N张邮票,计算在给定K(N+K≤15)种邮票的情况下(假定所有的邮票数量都足够),如何设计邮票的面值,能得到最大值MAX,使在1-MAX ...
- P1021 邮票面值设计——搜索+完全背包
P1021 邮票面值设计 题目意思是你最多用n张邮票,你可以自己设定k种邮票的面值,每种邮票数量无穷,你最多能用这k种邮票在不超过n张的情况下,组合成的价值要求是从1开始连续的, 求最大能连续到多少: ...
- [NOIP1999提高] CODEVS 1047 邮票面值设计(dfs+dp)
dfs出邮票的各种面值,然后dp求解. ------------------------------------------------------------------------------- ...
- 洛谷 P2725 邮票 Stamps Label:DP
题目背景 给一组 N 枚邮票的面值集合(如,{1 分,3 分})和一个上限 K —— 表示信封上能够贴 K 张邮票.计算从 1 到 M 的最大连续可贴出的邮资. 题目描述 例如,假设有 1 分和 3 ...
随机推荐
- Java密码体系结构简介:Java Cryptography Architecture (JCA) Reference Guide
来自Java官方的文档,作备忘使用. 简介: Java平台非常强调安全性,包括语言安全,密码学,公钥基础设施,认证,安全通信和访问控制. JCA是平台的一个主要部分,包含一个“提供者”体系结构和一组用 ...
- Java的隐秘之JavaCC
官网链接:JavaCC JavaCC JavaCC是Java的解析器生成器兼扫描器生成器.为JavaCC描述好语法的规则,JavaCC就能够生成可以解析该语法的扫描器和解析器(的代码)了. JavaC ...
- Atitti 互联网时代三大竞争战略 ——平台化战略 锚”战略、价值领先战略
Atitti 互联网时代三大竞争战略 ——平台化战略 锚”战略.价值领先战略 美国著名管理学家迈克尔•波特在<竞争战略>一书中提出了集中化战略和差异化战略.成本领先战略三种基本竞争战略,从 ...
- amqp笔记
1.exchange message的生产者可以将消息发送给exchange,然后由exchange路由到不同的queue中. exchange有4种类型: direct exchange:msg只会 ...
- Python之string
1.string模块支持哪些字符形式?分别是什么. string支持的字符形式有: ('_re', '====>', <module 're' from 'C:\Python25\lib\ ...
- xorm中的几个坑
项目中使用的是xorm,虽然用了很顺手了,可是还是会遇到一些坑,这里纪录一些. 结构体自动忽略空字段 在xorm中,结构体会自动忽略空字段(或则说默认值,比如int 的0 ,string的" ...
- mapstruct与lombok结合使用
当mapstruct与lombok想结合使用的时候,出现了生成的MapperImpl里方法,没有对实体进行转换的情况. 解决方案: <plugin> <groupId>org. ...
- TensorFlow at Google I/O 2018
2018 google I/O 上关于TF新功能以及TF技术生态方面的一些总结,更具体的内容可以去看2018 tfdev summit,这里面的内容会更加详细丰富.总的来说TensorFlow在庞大的 ...
- 几个常见的Mysql索引问题
1. 选择性较低的列是否适合加索引? 索引选择性等于列中不重复(distinct)的行数量(也叫基数),与记录总数的比值.范围在0-1之间.数值越大,索引越快. 例如主键是唯一的,不重复的,所以选择性 ...
- GPRS模块在Linux平台上ppp拨号上网总结与心得
linux平台的ppp拨号上网,(注明:这里只谈命令行拨号,用linux就要习惯和熟练使用命令行) 在网上常见的有三种方式:1.使用智能的ppp拨号软件wvdial:参考案例:本博客的<使用wv ...