HDU2062

1.28寸圆屏LCD驱动开发:GC9A01与RT-Thread嵌入式实现 圆形TFT-LCD是一种面向可穿戴、IoT终端的紧凑型人机交互显示技术,其核心在于SPI/QSPI接口时序控制与GRAM内存映射原理。通过驱动芯片(如GC9A01)完成电源管理、伽马校正和MADCTL方向配置,可实现低功耗、高刷新率的图形渲染。该技术显著提升嵌入式设备的UI表现力与空间利用率,在智能手环、传感器节点、微型HMI等资源受限场景中具备突出工程价值。本文围绕1.28寸圆屏LCD模块,详解硬件接口规范、RT-Thread下QSPI驱动架构及Bresenham算法优化实践。 阅读详情

     记录撰写以及调试HDU2062相关代码的感悟。

      首先,明确下解题思路。

      显然,这题不能记录An所有的子序列。当n=20时,子序列个数超过10亿级别啦。

      如下解释来自网络:(修改了一点)

      A2={1,2},子序列为:{1} {1,2}

                                          {2} {2,1}

      A3={1,2,3},子序列为:  {1} {1,2} {1,2,3} {1,3} {1,3,2}

                                              {2} {2,1} {2,1,3} {2,3} {2,3,1}

                                              {3} {3,1} {3,1,2} {3,2} {3,2,1}
     不难发现,An可以按首数字分成n组,而每组里除了第一项,剩下的序列个数与A(n-1)的序列个数相等。例如:把A3的第一行序列的1去掉,剩下2和3,总共有四个序列。
     所以,以f(n)来表示An的序列个数。则f(n) = n*[f(n-1) + 1],其中f(1) = 1。


     我们以测试数据3 10为例,解释如何求解。
     因为n=3,所以开始数组里1、2、3三个数。
     可分成三组,每组5个序列。
     因此第10个在第二组里。所以第一个是2,把2输出。原来的数组里删除2,变成1、3两个数。然后10 - (2 - 1) * 5 = 5,即它在第2组的第5个。
     减去首个集合,5 - 1 = 4 ≠ 0,表明第10个序列不是第二组的首序列,而每一组只有首序列为一个元素的序列,所以2后面还有数字。

     此时,剩下了数字1和3。可以组成四个序列。道理和A2={1,2}相同。此时,我觉得可以看成A2={1,3}。
     剩下的序列又可以分成两组,每组2个序列。
     4在第2组,剩下的数组中,第二个元素是3,所以输出3。再把数组里的3删除,剩下1。
     然后4 - (2 - 1) * 2 = 2,即它是第2组的第2个。
     减去首序列,2 - 1 = 1 ≠ 0,表示2后面还有数字。
     按上面的方法继续下去,直到n = 0 或 后面为空集为止。
     最后输出数组里的第1个元素,就得到2 3 1。

 

     现在,贴上我的AC代码:                              

     

#include<iostream>
using namespace std;

#define N 21
__int64 a[N];

void init()  //a[n]表示An的子序列个数
{
    int i;

    a[1]=1;

    for(i=2;i<=20;i++)
        a[i]=i*(a[i-1]+1);   //An可以分成n组(1,2,...,n)
                             //每组除了第一个序列之外,n-1
                             //的子序列总数与每组剩下的序列
                             //总数相等,因为元素个数相等
                             //(虽然大小不相同)                                                    
}

int main()
{
    int i,help,n;
    int b[N];
    __int64 m;
   //__int64 temp;

    init();

    while(cin>>n>>m)
    {
        for(i=1;i<=n;i++)
            b[i]=i;

        while(m)  //逐个元素输出
        {
            //temp=a[n]/n+1;  //temp和help使用找到每次该输出
            // help=m/temp+1;  //的元素,加1是为了代码形式的  
            //cout<<b[help];  //统一
 
            
	    help=m/(a[n]/n)+(m%(a[n]/n)?1:0);
	    cout<<b[help];

            m-=(help-1)*(a[n]/n)+1; //每输出一个元素,都应该缩减处理的数据范围
            if( m )
                cout<<" ";
 
            
            for(i=help;i<n;i++)     //缩减数据
                b[i]=b[i+1];

            n--;    //缩减数据
        }

        cout<<endl;
    }

    return 0;
}

 

      最后,大家一起看看问题所在吧。

      请大家看看下面这段代码:

       刚开始是用带注释的那一小段的,提交了四次,都WA了,相当纠结。

       没办法,只有从网上找了,惭愧!发现呀,大家的逻辑以及算法都差不多。上面注释的部分是我自己想的,是用来确定第m个序列在An的第几行中。

       未带注释的那部分也是同样的目的。但错误就在这里了。举个例子:A3={1,2,3},第4个序列、第5个序列和第6个序列所在行的求法。4/5=0,5/5=1,

        6/5=1。所以就用temp=f(3)/3+1=6,行help=4/6+1=1,help=5/6+1=1,help=6/6+1=2。貌似解决了!但这只是总结,没有给出严谨的证明!事实证明,

        这样做是错误的。

 

        心得小结:

        在解决问题时,往往我们都是唯用至上。没有太多关注底层的东西。一旦总结出来一点东西就会直接拿来用,不会再去追究,直到出错为止!

        我在写C++时,很多时候都是一边迷惑一边敲代码。学过一点语言,就在凭着感觉写,一旦出现error,手足无措呀。比如C++中的唯一三目运

        算,可能a=(b>c)?b:c,我们可以理解。那a=b?1:0呢?

        很纠结于现状!

        

        欢迎拍砖

        

【前端基础篇】HTML5 + CSS3 入门知识 ,HTML5和CSS3核心知识 阅读详情

相关推荐

通讯软件002——快速使用modscan进行modbus调试

快速使用modscan进行modbus调试

zhouwl72的博客 1032

数位dp--HDU2062

HDU2062--Subset sequence 题目链接 题意:给出一个集合{1,2,3,4,...,n},求它内部的不同元素的字典序下从小到大第m个序列; 题解:初步思路是,因为所有集合可以通过它的首元素分为n组,每组的数目相同,按顺序判断所求序列在哪个组中,则这个组数i就是对应元素的编号,而它的下一个数,可以通过判断这个数,在这个组的子序列的哪个组中,输出组号;可以看出这是一个可以递推

wys的博客 1370

GCC调试黑科技:-fomit-frame-pointer优化下如何保证栈回溯能力

本文深入探讨了GCC编译器在启用`-fomit-frame-pointer`优化选项时如何保证栈回溯能力。通过分析`.eh_frame`段的结构与DWARF调试信息,提供了从编译选项配置到实战调试的完整解决方案,帮助开发者在性能优化与调试能力之间找到最佳平衡点。

u6v7w8x的博客 906

hdu2062(dp解决找子集问题)

题目链接http://acm.hdu.edu.cn/showproblem.php?pid=2062 题目描述 比如一个an{1,2,…n},它有非空子集很多个,然后需要你找出指定的第m个,然后按照题目的格式输出第m个子集的内容。 输出如下所示: 题目思路: 首先观察例子: 当n=1时,子集为: {1} 当n=2时,子集为: {1} {1,2} {2} {2,1} 【注:这样的顺序也是...

zhoupingqi2017的博客 914

cartographer错误终结者 ordered_multi_queue.cc:155 Queue waiting for data

错误描述 错误提示的感应器数据可能是: Queue waiting for data:(0, points2) Queue waiting for data:(0, odom) 说明在提供给cartographter的传感器数据出现了问题,没有被成功解析。 原因分析 小编是使用自己编写的odom话题发布时,cartographer爆出了该错误。 于是设想传感器数据相关的tf或lua配置或数据本身存在错误。 于是逐个排查,最终发现了错误原因。 排查可能原因:tf错误 小编之前已处理过tf与lua配置的问题 参

人工智能机器人 4157

Ubuntu下安装Hive3.1.2教程(附MySQL安装方法及安装包)

文章目录前言一、安装Hive1. 下载压缩包并解压2. 安装Hive3. 配置环境变量4. 修改配置文件二、MySQL安装与配置1. 安装MySQL2. 安装MySQL jdbc包3. 为Hive创建MySQL账号三、验证Hive安装及错误处理1. 启动Hadoop2. 启动hive3. 运行Hive实例总结 前言 Hive 的安装需要建立在 Hadoop 的之上(类似于Hbase),关于 Hadoop 的单机安装以及伪分布式安装可以参考作者的另两篇博客: Ubuntu下单机安装Hadoop详细教程(附

程序必须为人类阅读而编写,并且仅仅碰巧可以让机器执行 1万+

Hdu2062--01背包-动态规划法

方法1: #include <stdio.h> #include <string.h> int dp[1001][1001]; int max(int x,int y) { return (x>y?x:y); } int main(void) { int t,n,v,i,j; int val[1001],vol[1001]; scanf("%d",&t); while(t--) { scanf("%d

一匹刚学打乒乓球的老马 249

微信DAT图片恢复全攻略:从文件路径到批量解密(附最新工具下载)

本文详细介绍了微信DAT图片恢复的全过程,从文件路径定位到批量解密操作,帮助用户高效恢复加密存储的图片。文章涵盖新旧版本微信的存储结构差异,推荐使用专业解密工具进行批量转换,并提供了提升恢复成功率的实用技巧和常见问题解决方案。

weixin_29325007的博客 457

HDU2062题解 01背包而已

RT,我就不解释了,题目连接

ecjtuacm_yuewei的专栏 540

【制作100个Unity游戏之36】用unity从零开始实现类《开心消消乐》的三消类消除解压小游戏

Unity甜品消除游戏开发摘要 本文介绍了使用Unity开发甜品消除游戏的核心实现步骤: 冰块阵列生成 通过GlobalDef定义全局参数(9行7列网格) IceSpawner脚本动态生成网格化冰块阵列 添加Resolution脚本实现多分辨率适配 随机水果生成 创建FruitSpawner作为水果容器 FruitItem脚本管理水果属性(行列索引、类型) 支持动态创建水果精灵并设置位置 关键技术点 使用Instantiate动态生成预制体 通过localPosition精确控制网格布局 分辨率适配算法保持

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 1292

Python 爬虫实战:美团大众点评餐厅数据爬取与分析

本文摘要:美团/大众点评餐厅数据爬虫实战指南 本文详细介绍了如何开发一个完整的餐厅数据爬虫系统,涵盖从环境配置到数据可视化的全流程。主要内容包括: 项目目标:爬取餐厅基本信息(名称、评分、价格等)及详情数据,支持市场分析和商业决策 技术方案:使用Python生态工具(Requests、Playwright、Pandas等)构建爬虫系统 核心挑战:破解大众点评的字体反爬机制和美团的API签名验证 实现细节:提供完整的代码示例,包括字体解析、签名生成、请求重试等关键功能 数据应用:支持将结果导出为CSV/Exc

u014481728的博客 321

HDU 2062 Subset sequence (数学)

一道数学题,很有趣,看了很多题解才懂。 首先是要求出An数组的子集和有多少个。 数学拙鸡就不写推导过程了,有兴趣可以自己去搜。 A[n]=(A[n-1])*(n-1)+1; 引用一段解释的很好的过程解释来说下3 10 这组数据是怎么处理的(语文拙计) 因为n=3,所以开始数组里1、2、3三个数。 我们知道,n=2时,有4种排列,所以上面n=3可以分成三组,每组5个(加上空集)。 因此第1...

Start -ZJ的博客 357

精通 Android NDK/JNI:从入门到精通实战与面试精粹

在Android开发中,

郑伟强dev的专栏 144

hdu 2062 Subset sequence 解题报告

hdu 2062 Subset sequence hdu 2062传送门:http://acm.hdu.edu.cn/showproblem.php?pid=2062    Problem Analyse   考虑一个集合 An = { 1, 2, ..., n}。比如,A1={1},A3={1,2,3}。我们称一个非空子集元素的排列为一个子集序列。对所有的子序列按字典顺序

落天雨、、 9817

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

HDU2062 Subset sequence

HDU2062 Subset sequence C语言版本。 写出n=1到n=3的排列,找规律,总能由一级推二级。 runtime error (运行时错误) 就是程序运行到一半,程序就崩溃了。 比如说: ①除以零 ②数组越界:int a[3]; a[10000000]=10; ③指针越界:int * p; p=(int *)malloc(5 * sizeof(int)); *(p+100000...

Hello 212

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

hdu 2062

hdu 2062 ps:11版的最后一题...是个递推题...比如n=5,推出首数字后,n--,继续找下一个 代码: #include "stdio.h" long long c[21]; long long s[21]; int main(){ long long m; int i,j,k,n,t; c[1]=1; ...

woshilishu的博客 254

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

HDU 2062——Subset sequence(最详细的解释,看不懂你找我)

原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=2062 Subset sequence Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 11832 Accepted Submission(s): 5013 Problem Description Consider the aggregate A

pursuit的博客 1185

HDU2062 Subset sequence(递推公式+规律)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2062 推荐博客(详细解析): https://blog.youkuaiyun.com/qq_33266889/article/details/53468509(讲的更易懂) https://blog.youkuaiyun.com/lianqi15571/article/details/8877014(分析推导比较清楚...

成龙大侠的博客 443

HDU 2062 Subset sequence (JAVA)

题目链接:HDU 2062 Subset sequence. 题目: 分析 题意要求把数组1~n的子数组按照字典序排列 求第m个子数组 我们可以认为第一个数字是几打头就是第几堆 比如 2,1,3就是第二堆 6,1,3就是第六堆 另外 arr[n]=arr[n-1]*(n-1)+1; 求出所有n所对应的当前堆的子数组个数 set集合用于容纳所有的数字 以3为例 AC代码: package Thr...

王跃坤的博客 281

hdu 2062搜索

挺简单,直接上代码。 /* * hdu2062/win.cpp * Created on: 2012-10-27 * Author : ben */ #include <cstdio> #include <cstdlib> #include <cstring> #include <cmath> #include ...

weixin_30610755的博客 69

hdu2060-2062

hdu 2060 斯诺克,读懂题意直接模拟 1 #include<stdio.h> 2 3 int main(){ 4 int N; 5 int i,a[21]; 6 a[0]=0; 7 for(i=1;i<=6;i++){ 8 a[i]=(15-i)*i/2; 9 } 1...

weixin_34381666的博客 111

《动态规划》— HDU 2062 Bone Collector (01背包)

Bone Collector Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 59212Accepted Submission(s): 24709 Problem Description Many year...

69小石头的博客 697

HDU 2062:Subset sequence

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2062 题目翻译:给出一个N代表有一个集合,集合有1~N中的数字组成。集合的所有子集, 非空集,按照字典序排序,给出一个M,求第M个集合的元素。 解题思路:数学找规律。 N = 1     其集合排序如下 {1} ---------------------------

温姑娘的博客 358

2062 【字典序】【递归】Subset sequence

hdu 2062 Subset sequence hdu 2062传送门:http://acm.hdu.edu.cn/showproblem.php?pid=2062    Problem Analyse   考虑一个集合 An = { 1, 2, ..., n}。比如,A1={1},A3={1,2,3}。我们称一个非空子集元素的排列为一个子集序列。对所有的子序列按字典顺序

Alternative_19的博客 704

求子集PHP,hdu 2062 Subset sequence 解题报告

hdu 2062 Subset sequenceProblem Analyse考虑一个集合 An = { 1, 2, ..., n}。比如,A1={1},A3={1,2,3}。我们称一个非空子集元素的排列为一个子集序列。对所有的子序列按字典顺序排序。你的任务就是给出第m个子序列。Algorithm Analyse首先我们来看看An一共有多少个子集。n=1时,只有{1}一个子集合n=2时,就有:{1...

weixin_34357209的博客 150

hdu2062

hdu2062 求按字典序排列数串中的第m个数串 #include #include using namespace std; int main() { int i,j,num,n,ans[21]; bool exist[21]; long long m,f[21]={0,1}; for(i=2;i<=20;i++) f[i]=i*f[i-1

Time flies 1669
上一篇: c++ problem
下一篇: HDU2054
lulipeng_cpp
博客等级 码龄15年 169粉丝 130原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值