openjudge noi 1805 碎纸机

NOI 1805:碎纸机 DFS深度优先搜索/map记录答案/string转int 题目 原站链接 描述 你现在负责设计一种新式的碎纸机。一般的碎纸机会把纸切成小片,变得难以阅读。而你设计的新式的碎纸机有以下的特点: 1.每次切割之前,先要给定碎纸机一个目标数,而且在每张被送入碎纸机的纸片上也需要包含一个数。 2.碎纸机切出的每个纸片上都包括一个数。 3.要求切出的每个纸片上的数的和要不大于目标数而且与目标数最接近。 举一个例子,如下图,假设目标数是50,输入纸片上的数是12346。碎纸机会把纸片切成4块,分别包含1,2,34和6。这样这些数的和是43 (= 1 + 2 + 34 + 6) 阅读详情

前往原题

因为原题面太长我就不粘了2333

这个题一看就是搜索啊。枚举每次的切点并记录位置,最后再判断一下是否不大于目标数并与目标数更接近,同时统计当前最优答案出现的次数。如果出现多次就输出rejected。如果把纸片上的数字都一个个隔开后的和还大于目标数,就输出error。

代码QWQ

#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;

int N,M,cnt,sum=0,maxn=-1,Ans,f=0;
int num[10],a[10],ans[10],Num[10];

void dfs(int n,int k) // n 表示当前切割到第i个数后,k表示有几个切点。 
{
   if(n==cnt) 
   {
      sum=0;
      for(int i=1;i<=k;++i)
      {
          int x=0;
          for(int j=a[i-1]+1;j<=a[i];++j)
             x=x*10+num[j];
          sum+=x;
      }
      if(sum>N) return ;
      if(sum>maxn)
      {
         f=0;
         maxn=sum;
         Ans=k;
         for(int i=1;i<=k;++i)
         { 
            ans[i]=0; 
            for(int j=a[i-1]+1;j<=a[i];++j)
              ans[i]=ans[i]*10+num[j];
         } 
      }
      else if(sum==maxn) f=1;
   }
   for(int i=n+1;i<=cnt;++i)
   {
       a[k+1]=i;
       dfs(i,k+1);
       a[k+1]=0;
   }    
}
int main()
{
    scanf("%d%d",&N,&M);
    while(N&&M)
    {
        sum=0;
        f=0;
        maxn=-1;
        memset(a,0,sizeof(a));
        memset(ans,0,sizeof(ans));
        cnt=0;
        if(N==M)
        {
            printf("%d %d\n",N,M);
            scanf("%d%d",&N,&M);
            continue;
        }
        while(M)
        {
            Num[++cnt]=M%10;
            M/=10;
            sum+=Num[cnt];
        }
        if(sum>N) {
            printf("error\n");
            scanf("%d%d",&N,&M);
            continue;
        } 
        for(int i=1;i<=cnt;++i)
           num[i]=Num[cnt-i+1];
        dfs(0,0);
        if(f) printf("rejected\n");
        else 
        {
            printf("%d ",maxn);
            for(int i=1;i<=Ans;++i)
            printf("%d ",ans[i]);
            printf("\n");
        }
        scanf("%d%d",&N,&M);
    }
    return 0;
} 
http://noi.openjudge.cn/——2.5基本算法之搜索——1805:碎纸机 阅读详情

相关推荐

noi 1805 碎纸机-----搜索

http://noi.openjudge.cn/ch0205/1805/ 算法 暴力搜索,Dfs+剪枝 注意 有些情况下可以直接判断: 1.把要“剪碎”的数全都拆成一位数,此时和最小,如果这种情况下和都比目标数大,说明没有成立的情况,输出“error”; 2.要“剪碎”的数本身比目标数还小(或相等),那么最优的情况就是不进行任何处理,直接输出两遍原数。 代码实现 #include

zero_from的博客 607

NOI OpenJudge 1805 碎纸机

描述 你现在负责设计一种新式的碎纸机。一般的碎纸机会把纸切成小片,变得难以阅读。而你设计的新式的碎纸机有以下的特点:1.每次切割之前,先要给定碎纸机一个目标数,而且在每张被送入碎纸机的纸片上也需要包含一个数。 2.碎纸机切出的每个纸片上都包括一个数。 3.要求切出的每个纸片上的数的和要不大于目标数而且与目标数最接近。举一个例子,如下图,假设目标数是50,输入纸片上的数是12346。碎纸机会把纸

Chlorineひかりのblog 1316

用PyTorch实战清华SSVEP数据集:手把手教你搭建第一个脑机接口分类模型(附完整代码)

本文详细介绍了如何使用PyTorch实战清华大学SSVEP数据集,从数据预处理到CNN模型构建的全流程。通过手把手教学,帮助读者搭建第一个脑机接口分类模型,特别针对数据维度转换等关键难点提供可视化解析,并附完整代码实现。

weixin_42566121的博客 351

1805:碎纸机 (java实现 DFS 回溯)

题目链接 dfs,转化为处理子问题如123456,1和子问题“23456”,12和子问题“3456”等 注意遇到重复的切割方式不能简单的修改ans=-2,因为当再次遇到相同方式,会覆盖掉-2. import java.util.*; public class Main { public static int ans=-1;//如果此值未修改,则输出error public static boolean flag=false;//标记是否出现了重复的切割方案 public static Link

Kerin的博客 788

告别Sourceforge安装器!手把手教你下载MinGW-w64离线包并配置环境变量(Windows 10/11)

本文详细介绍了如何在Windows 10/11系统上通过下载MinGW-w64离线包并配置环境变量,完全绕过Sourceforge安装器的问题。从选择正确的版本、解压到本地目录,到设置系统环境变量和验证编译环境,手把手指导开发者快速搭建稳定的GCC编译环境,解决常见的安装困扰。

weixin_30896825的博客 336

OpenClaw 最强技能 self-improving-agent 详解:让 AI 从错误中自主学习

self-improving-agent 是 OpenClaw 生态中最受欢迎的技能插件,下载量突破 268k。它能让 AI 记住犯过的错误和解决方案,实现持续自我改进。本文深入讲解其工作原理、安装配置和实战案例。测试数据显示:部署流程时间从 15 分钟降到 2 分钟(87%↓),API 调试时间从 2 小时降到 20 分钟,数据库查询编写时间减少 90%。文章包含完整架构图、配置文件示例、3 个详细实战案例和性能测试数据,适合开发者、运维和数据分析师使用。

qq_38610923的博客 3634

noi1805:碎纸机--搜索

http://noi.openjudge.cn/ch0205/1805/ 题目分析: 搜索,从当前节点出发,扩展出两种状态,就是和下一个数组合与否, 超过了就剪枝,记录状态.,并判重. 先用了类似排列的做法,写了一上午,9个点过了6个,写的有的麻烦,懒得再改了. 然后参考了别人的代码,结果自己处理边界的出错,导致最后一个数是0的时候出错,然后花了不少时间才找出来. #

lengxuenong的博客 848

别再为10G UDP发愁了!手把手教你用Xilinx 10G/25G Ethernet Subsystem IP核搭建FPGA网络栈(附12套工程源码)

本文详细介绍了基于Xilinx UltraScale架构的FPGA网络栈开发,重点讲解了10G/25G Ethernet Subsystem IP核的应用实践。通过手把手教程和12套工程源码,帮助开发者解决10G UDP通信中的物理层接口、协议栈实现和系统集成等核心挑战,实现高性能FPGA网络栈搭建。

weixin_42522575的博客 364

碎纸机

描述 你现在负责设计一种新式的碎纸机。一般的碎纸机会把纸切成小片,变得难以阅读。而你设计的新式的碎纸机有以下的特点: 1.每次切割之前,先要给定碎纸机一个目标数,而且在每张被送入碎纸机的纸片上也需要包含一个数。 2.碎纸机切出的每个纸片上都包括一个数。 3.要求切出的每个纸片上的数的和要不大于目标数而且与目标数最接近。 举一个例子,如下图,假设目标数是50,输入纸片上的数是123

u013417383的专栏 1346

在 SAP 里玩转 FTP:标准程序 RSFTP00x 全景解析与落地实践

摘要:SAP系统通过封装的标准FTP程序(RSFTP001-008)提供便捷的文件传输能力,适用于各类集成场景。关键点包括:1)依赖SAPFTP可执行程序和RFC目的地;2)使用RSFTP005进行前置检查并生成RFC配置;3)标准报表各司其职,如RSFTP002用于命令测试、RSFTP007/008提供参考实现;4)开发时组合FTP_CONNECT/COMMAND/DISCONNECT等函数模块。特别注意前台(SAPFTP)与后台(SAPFTPA)的环境差异,这是常见故障点。该方案通过标准化工具链显著降低

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 210

布尔可满足性问题(SAT)深度研究

布尔可满足性问题(Boolean Satisfiability Problem, SAT)是计算机科学和数理逻辑中的一个核心决策问题。其定义为:对于一个给定的布尔逻辑公式,判断是否存在一组对其变量的真值赋值(即,为每个变量指定真 (True) 或假 (False)),使得该公式的最终计算结果为真。如果存在这样的赋值,则称该布尔公式是可满足的 (satisfiable);否则,称其为不可满足的 (unsatisfiable)。

步子哥的博客 495

OpenJudge noi1805碎纸机

Description 你现在负责设计一种新式的碎纸机。一般的碎纸机会把纸切成小片,变得难以阅读。而你设计的新式的碎纸机有以下的特点: 1.每次切割之前,先要给定碎纸机一个目标数,而且在每张被送入碎纸机的纸片上也需要包含一个数。 2.碎纸机切出的每个纸片上都包括一个数。 3.要求切出的每个纸片上的数的和要不大于目标数而且与目标数最接近。 举一个例子,如下图,假

loi_black蒟蒻的博客 965

卫朋:IPD流程落地之产品开发验证阶段解读

IPD验证阶段

产品线负责人 1486

openjudge 1805碎纸机 解析报告

openjudge 1805:碎纸机 解析报告总时间限制: 1000ms 内存限制: 65536kB描述你现在负责设计一种新式的碎纸机。一般的碎纸机会把纸切成小片,变得难以阅读。而你设计的新式的碎纸机有以下的特点: 1.每次切割之前,先要给定碎纸机一个目标数,而且在每张被送入碎纸机的纸片上也需要包含一个数。2.碎纸机切出的每个纸片上都包括一个数。3.要求切出的每个纸片上的数的和要不大于...

weixin_30810583的博客 116

出现 has been blocked by CORS policy: No ‘Access-Control-Allow-Origin‘ header is present on the 解决方法

Access to XMLHttpRequest at 'http://127.0.0.1:5000/api/data' from origin 'http://10.197.0.79:8080' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

码农研究僧的博客 1万+

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

NOI: 碎纸机

文章目录一、题目大意二、解题思路三、代码 一、题目大意 切数字,求和,与目标数字比较,要就尽可能接近目标数字且比目标数字小。 二、解题思路 深搜,如果数字长n,则可以切[0, n-1]刀。对每种枚举。 其中由于我们只在意切得位置而不在意切得顺序,因此我们使用一个标记start(见代码)表示最后一刀在哪个数字后。 三、代码 #include<iostream> #include<s...

Wangpeiyi9979的博客 388

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

1805:碎纸机 oj

怎么说呢,思路一开始就有,就是分成几个块然后加,但水平太弱,很难实现QAQ 选择记录相加的最大上限来限制,其实挺好编的,有个条件是输出方案并且判断会不会有重复,这个。。。 终归有了思路,记录最大值(可以通过上限来求),并判断有没有重复 判重的地方又有了问题,如果在回溯过程中,ans可能会在任何区间改变,关键一步,把判重的东西改成数组。。。就行了 code#include<iostream>

happy 695

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

openjudge 1805 碎纸机

~~~

Loi_cgold 429

百练 2803:碎纸机

2803:碎纸机 总时间限制: 1000ms 内存限制: 65536kB 描述 你现在负责设计一种新式的碎纸机。一般的碎纸机会把纸切成小片,变得难以阅读。而你设计的新式的碎纸机有以下的特点: 1.每次切割之前,先要给定碎纸机一个目标数,而且在每张被送入碎纸机的纸片上也需要包含一个数。 2.碎纸机切出的每个纸片上都包括一个数。 3.要求切出的每个纸片上的数的和

u013412498的专栏 1877

NOI2.5.1805碎纸机 题解

NOI2.5.1805碎纸机 题解 这回的题目看上去就非常的令人懵逼。一看内容,发现事情并不简单。 题目: 描述 你现在负责设计一种新式的碎纸机。一般的碎纸机会把纸切成小片,变得难以阅读。而你设计的新式的碎纸机有以下的特点: 1.每次切割之前,先要给定碎纸机一个目标数,而且在每张被送入碎纸机的纸片上也需要包含一个数。 2.碎纸机切出的每个纸片上都包括一个数。 3.要求切出的每个纸片上的数的和要不大...

jerry20183的博客 537

codevs 1174 靶形数独 (启发式搜索)

*PS:卡常什么的最讨厌了 go to the problem 因为题面太长所以并不想粘qwq 第一遍打的暴搜,codevs 上90,洛谷75,感觉自己萌萌的。 结果打完启发函数后,codevs上A了,洛谷上一直T掉一个点QAQ,优化了一晚上,还是T掉(而且这个点暴搜没T),最后放弃了… T _ T 方法就是每次都从可能性最小的点开始搜,记一下每行每列每宫里已经填了的数的种类,从种类最多的开始搜(也可以加上已

Loi_Mapleleaf的小池 686

洛谷 1378 油滴扩展

*又有浮点数,桑心〒▽〒,话说LXT的14.0下取整竟然成了13?!2333,害怕了。。。默默给你+1s

Loi_Mapleleaf的小池 656

洛谷 1032 字串变换

*stl大法好!⁽⁽◝( ˙ ꒳ ˙ )◜⁾⁾ — sys %%%

Loi_Mapleleaf的小池 522

洛谷 1514 引水入城(记忆化搜索+DP)

*PS:做的时候还以为纯搜索,后来发现竟然有DP??exm?调了好长时间,从此dp一生黑(假的)QwQ。 题目描述 在一个遥远的国度,一侧是风景秀美的湖泊,另一侧则是漫无边际的沙漠。该国的行政区划十分特殊,刚好构成一个N 行M 列的矩形,如上图所示,其中每个格子都代表一座城市,每座城市都有一个海拔高度。 为了使居民们都尽可能饮用到清澈的湖水,现在要在。。。

Loi_Mapleleaf的小池 504

codevs 2924 数独挑战(dfs)

*PS:神级数独作弊器QWQ。。。 “芬兰数学家因卡拉,花费3个月时间设计出了世界上迄今难度最大的数独游戏,而且它只有一个答案。因卡拉说只有思考能力最快、头脑最聪明的人才能破解这个游戏。”这是英国《每日邮报》2012年6月30日的一篇报道。这个号称“世界最难数独”的“超级游戏”,却被扬州一位69岁的农民花三天时间解了出来。orz

Loi_Mapleleaf的小池 502
上一篇: openjudge noi 9278 旅行
下一篇: openjudge noi 2987 小兔子捡金币(模拟)
Loi_Mapleleaf
博客等级 码龄10年 17粉丝 72原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值