hdu 5106 hdu 5435 数位dp

IEC 61851-24:2023 电动汽车导电充电系统 - 第24部分:直流电动汽车供电设备与电动汽车之间的数字通信,用于控制直流充电 - 完整英文电子版(110页) IEC 61851-24:2023 与 IEC 61851-23 共同适用于直流电动车供电设备与电动道路车辆(EV)之间的数字通信,用于控制导电直流电力传输,额定电源电压最高可达1000伏交流电或最高1500伏直流电,额定输出电压最高可达1500伏直流电。 立即下载

hdu 5106

真的好累,就不解释代码了。

#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
long long int dp[1002][1002],dpl[1002][1002];//dpl[i][j]用来计算前i位j个1的个数,dp[i][j]用来计算前i位,有j个1的数的个数。
int bit[1003],n,c[1001];
char r[1003];
#define mod 1000000007

long long int solve()
{
    long long int answer=0,s=0;
    int ss=0;
    memset(dp,0,sizeof(dp));
    memset(bit,0,sizeof(bit));
    memset(dpl,0,sizeof(dpl));
    int len,k;
    len=strlen(r);
    int i,j;
    for(i=1;i<=len;i++)
    {
        bit[i]=r[i-1]-'0';
    }
    for(i=1;i<=len;i++)
    {
       for(j=0;j<bit[i];j++)
       {
           dp[i][s+j]+=(ss*2)%mod;
           dpl[i][s+j]++;
       }
       s+=bit[i];
       ss=ss*2+bit[i];
       ss%=mod;
       for(j=0;j<=n;j++)
       {
           dp[i+1][j]+=dp[i][j]*2%mod;
           dpl[i+1][j]+=dpl[i][j];
           dpl[i+1][j]%=mod;
           dpl[i+1][j+1]+=dpl[i][j];
           dpl[i+1][j+1]%=mod;
           if(dp[i][j]==0&&j!=0)
            continue;
           dp[i+1][j+1]+=(dp[i][j]*2+dpl[i][j])%mod;
           dp[i+1][j+1]%=mod;        //状态转移,其中相当于将数向前移动一位,再加上dpl数组中相应的个数。
           //printf("dp[%d][%d]=%d\n",i,j,dp[i][j]);
       }
    }
    return dp[len][n];
}

int main () {
    //freopen("d:\\in.txt","r",stdin);
    while(~scanf("%d%s",&n,r))
    {
        int ans=solve();
        printf("%d\n",ans);
    }
    return 0;
}

hdu 5435

#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
long long int dp[100005][16],bit[100005];
char a[100005],b[100005];
#define mod 1000000007

long long int solve(char *str,int c)
{
     long long int ans=0,s=0;
     int len;
     len=strlen(str);
     memset(dp,0,sizeof(dp));
     memset(bit,0,sizeof(bit));
     for(int i=1;i<=len;i++)
     {
         bit[i]=str[i-1]-'0';
         //printf("%d\n",bit[i]);
     }
     int j,k,f;
     for(j=1;j<=len;j++)
     {
         for(k=0;k<bit[j];k++)
         {
             dp[j][s^k]++;
         }
         s^=bit[j];
         for(int i=0;i<=9;i++)
         for(f=0;f<=15;f++)
         {
                dp[j+1][i^f]+=dp[j][f];
                dp[j+1][i^f]%=mod;
               //printf("dp[%d][%d]=%d\n",j,f,dp[j][f]);
         }
     }
     if(c!=0)
     dp[len][s]++;
     dp[len][0]--;
     for(j=0;j<=15;j++)
     {
         ans+=dp[len][j]*j;
         //printf("dp[%d][%d]=%d\n",len,j,dp[len][j]);
         ans%=mod;
     }
     return ans;
}

int main () {
    int cas;
    //freopen("d:\\in.txt","r",stdin);
    //freopen("d:\\inn.txt","w",stdout);
    scanf("%d",&cas);
    int y=1;
    while(y<=cas)
    {
        scanf("%s%s",a,b);
        long long int ss=solve(b,1)-solve(a,0);
        printf("Case #%d: %d\n",y,(ss+mod)%mod);
        //printf("%lld\n",solve(b,1));
        y++;
    }
    return 0;
}

这题又让我想起了cf上类似于数位dp的乱搞题,貌似难度还是递增的,数据范围不断变大。最后有10^100左右

cf 146A (n=50)

cf(95B)(n=10^100)

cf(145C) n=100000

题意大概都一样:

我第二种卡了好久,算了别人代码送上吧:

#include<bits/stdc++.h>
using namespace std;
#define inf 1000000007
#define maxn 100010
char s[maxn];
int main()
{
    //freopen("d:\\in.txt", "r", stdin);
    int i,j,k,n,m,a,b;
    scanf("%s",s);
        n=strlen(s);
        if(n&1||s[0]-'0'>7)
        {
            n+=2;if(n&1)n--;
            for(i=0;i<n/2;i++)printf("4");
            for(i=0;i<n/2;i++)printf("7");
            puts("");
            return 0;
        }
        bool flag=0,ok=0;m=n/2;int c4=0,c7=0,last=-1,t=-1;
        for(i=0;i<n;i++)
        {
            if(flag)break;

            if(s[i]<'4')
            {
                if(c4<m)
                {
                    c4++;s[i]='4';flag=1;
                }
                else {s[i]='7';c7++;flag=1;}
            }
            else if(s[i]=='4')
            {
                if(c4<m)
                {
                    c4++;last=i;
                }
                else {s[i]='7',c7++,flag=1;}
            }
            else if(s[i]<'7')
            {
                if(c7<m)
                {
                    c7++;s[i]='7';flag=1;
                }
                else
                {
                    if(t==-1){ok=1;break;}
                    s[t]='7',s[t+1]='4',i=t+1,flag=1;
                }
            }
            else if(s[i]=='7')
            {
                if(c7<m)
                {
                    c7++;if(i&&s[i-1]=='4')t=i-1;
                }
                else
                {
                     if(t!=-1)
                     {
                             s[t]='7',s[t+1]='4',i=t+1,flag=1;
                     }
                     else{ok=1;break;}
                }
            }
            else
            {
                if(c7>=m)
                {
                    if(t==-1){ok=1;break;}
                    s[t]='7',s[t+1]='4',i=t+1,flag=1;
                }
                else
                {
                     if(last!=-1)
                     {
                             if(last<i-1)
                             {j=last;s[j]='7',s[j+1]='4';i=j+1;flag=1;}
                             else{j=last;s[j]='7';s[i]='4';c7++;flag=1;}
                     }
                     else{ok=1;break;}
                }
            }

        }
        if(ok)
        {
            n+=2;
            for(i=0;i<n/2;i++)
                printf("4");
            for(i=0;i<n/2;i++)
                printf("7");
            puts("");
            return 0;
        }
        c4=0,c7=0;
        for(j=0;j<i;j++)
            printf("%c",s[j]),c4+=(s[j]=='4'),c7+=(s[j]=='7');
        for(i=c4+1;i<=m;i++)
        printf("4");
        for(i=c7+1;i<=m;i++)
        printf("7");
        puts("");
    return 0;
}
其实也算不上严格意义的数位dp,只是都要一位一位来进行思考。


Linux下的段错误(Segmentation fault)产生的原因及调试方法(经典) 立即下载

相关推荐

北京大学数字普惠金融指数2011年-2023年(PKU-DFIIC)

该数据集可能涵盖以下几个方面:一是金融服务的可达性,涉及金融服务在不同人群和不同地区的普及程度,尤其是对中小企业、农村地区和低收入群体的覆盖;二是数字金融服务的使用情况,包括电子支付、网络贷款、互联网保险、数字资产管理等,反映人们在日常生活中对数字金融服务的依赖与使用;三是普惠金融的普及程度,可能包含金融服务覆盖的人群比例、地理范围以及服务种类和使用频率;四是创新技术的应用情况,涵盖大数据、区块链、云计算、人工智能等新技术在金融服务中的应用程度及其影响;五是监管环境与政策导向,反映国家和地方政策对数字普惠金融发展的支持与监管;六是金融服务的满意度与问题,收集用户对数字金融服务的满意度评价以及服务过程中遇到的问题和挑战。 该数据集对研究机构、政策制定者和金融科技公司均具有重要价值。研究机构可借助这些数据了解数字普惠金融的发展趋势和模式,识别影响普惠金融发展的关键因素;政策制定者可依据数据内容制定针对性政策,推动金融服务均衡发展;金融科技公司则可通过分析数据优化产品设计,满足不同用户群体的需求。 此外,感兴趣的读者可通过文中提供的链接查阅详细介绍和样例数据,进一步了解数据集的构成与应用方式。该链接指向一篇博客文章,文章详细介绍了数据集的结构和内容,并可能提供样例数据供参考,帮助读者更好地理解和使用这些数据。数据集标签为“数据集”,说明它是一个经过整理和加工的原始数据集合,便于学者和研究人员在不涉及原始数据收集过程的情况下直接使用这些数据开展研究和分析,有助于缩短研究时间、提升研究效率并促进知识共享。

hdu 5106 组合数学+找规律

http://acm.hdu.edu.cn/showproblem.php?pid=5106 给定n和r,要求算出[0,r)之间所有n-onebit数的和,n-onebit数是所有数位中1的个数。 对于一个n-bit数,可以根据与R最高不同位的位置分成几类。比如R=100100010,可以分成0xxxxxxxx,1000xxxxx,10010000x三类。x处可任取0或者1。x的个...

weixin_30367873的博客 161

【带状电容器计算用于电容式触摸传感器应用】半数值模型的电容式触摸传感器集成于金属基材涂层中研究(Matlab代码实现)

内容概要:本文针对电容式触摸传感器在金属基材上应用时易受干扰的问题,提出一种基于半数值模型的仿真分析方法,用于精确计算带状电容器在金属背景下的电容变化。研究通过构建合理的物理模型,结合电磁场理论与数值计算技术,在Matlab平台上实现代码仿真,有效克服金属环境对传感器性能的负面影响,提升其在复杂材料表面工作的稳定性和灵敏度,具有良好的工程应用前景。该方法不仅适用于基础研究,也可为实际产品中抗干扰触摸传感器的设计提供理论依据和技术支撑。; 适合人群:具备电磁场与微波技术基础知识及Matlab编程能力,从事传感器设计、人机交互设备开发、嵌入式系统研发等相关领域的高校研究生、科研人员和工程技术人员。; 使用场景及目标:①开展电容式触摸传感器在金属基材上的集成与优化设计;②掌握半数值建模与仿真方法在电磁传感系统中的应用;③为工业环境下高抗扰触摸器件的研发提供仿真验证手段与设计指导。; 阅读建议:此资源强调物理建模与数值仿真的紧密结合,建议读者结合电磁学原理深入理解边界条件设置、介质分布建模与电场求解过程,并动手运行Matlab代码,调试参数以观察电容响应特性,从而全面提升对传感器工作机制与仿真分析能力的掌握。

hdu 5106 Bits Problem(思路,组合)

Bits Problem Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 764    Accepted Submission(s): 203 Problem Description If the quantity

TUT我好菜啊 530

【顶级EI复现】基于KKT条件与分段解析优化的双有源桥DC-DC变换器软开关协同最小应力闭环控制方法(Simulink仿真实现)

内容概要:本文提出了一种基于KKT条件与分段解析优化的双有源桥DC-DC变换器软开关协同最小应力闭环控制方法,旨在实现高效、高可靠性的电力转换。该方法通过建立精确的电路数学模型,结合KKT最优性条件进行分段解析优化,有效协调零电压/零电流软开关实现条件与功率器件电压电流应力之间的矛盾,在确保宽范围软开关的前提下显著降低器件的电气应力,从而提升系统效率与寿命。文中详细阐述了控制策略的理论推导过程,并在Simulink平台上构建了完整的闭环仿真模型,验证了该方法在动态响应速度、转换效率优化及器件应力抑制等方面的优异性能,是对高水平EI期刊研究成果的高质量复现; 适合人群:电力电子、电气工程及其自动化等相关专业的研究生、科研人员,以及从事DC-DC变换器控制算法开发的工程师;适用于具备扎实电路拓扑分析能力与现代控制理论基础的专业技术人员; 使用场景及目标:①深入理解双有源桥(DAB)变换器的工作机理与关键控制挑战;②掌握将非线性优化问题转化为KKT条件求解的方法及其在电力电子系统中的实际应用;③学习如何通过分段解析策略实现多目标(软开关与低应力)协同优化控制;④复现并拓展EI级论文中的先进控制算法,支撑科研创新与工程实践; 阅读建议:建议读者结合提供的Simulink仿真模型,逐步跟进理论推导与控制逻辑实现过程,重点关注KKT条件的引入方式、边界约束处理及闭环控制器设计细节,同时可尝试将该优化思想迁移至其他隔离型DC-DC变换器拓扑中进行对比验证,以深化对先进优化控制策略的理解与应用能力。

无刷直流电机(BLDCM)转速电流双闭环控制、三相桥式星型全控电机研究(Simulink仿真实现)

内容概要:本文围绕无刷直流电机(BLDCM)的转速电流双闭环控制系统展开深入研究,重点基于Matlab/Simulink平台构建三相桥式星型全控电路的高精度仿真模型,实现对电机运行状态的精确控制。研究系统性地对比了传统PID控制与模糊PID控制策略在动态响应速度、抗干扰能力、稳态精度及鲁棒性等方面的性能差异,深入剖析电流环与转速环的协同作用机制。同时,文章进一步引入无位置传感器控制技术与滑模观测器(SMO),有效解决了机械传感器带来的成本与可靠性问题,提升了系统的集成度与工程实用性。所提供的多个仿真模型(含模糊神经网络PID等高级控制策略)为控制算法的验证与优化提供了可复现的技术路径,仿真结果可为电机驱动系统的工业设计与科研创新提供坚实的理论依据和技术支撑。; 适合人群:自动化、电气工程、电力电子与电机控制等相关专业的本科生、研究生,以及从事电机驱动系统研发、新能源汽车、工业自动化等领域工作的工程师和技术人员。; 使用场景及目标:①掌握无刷直流电机双闭环控制系统的建模、仿真与调试全流程;②深入理解并实践传统PID与模糊PID控制器的设计原理与参数整定方法;③探究无位置传感器控制与滑模观测器等先进估测技术的实现机理;④为毕业设计、科研课题、课程项目或工业级电机控制器开发提供可直接借鉴的仿真基础与解决方案。; 阅读建议:建议读者结合Matlab/Simulink环境进行动手实践,按照文档指引逐步搭建模型,重点观察不同控制策略下的系统响应曲线,深入分析控制参数变化对性能的影响,并鼓励在此基础上拓展研究如负载突变、参数摄动等复杂工况下的控制策略优化。

HDU 5106 Bit's Problem 数位DP(求和)

题意;给出n,定义数x为合法,当x的二进制表示中,bit为1的位数有n位. n 数位DP容易求[0,R)合法数的个数,怎么求合法数之和? 当第i位为1时 算从该状态从发能得到的合法个数*该位置权重. 注意点dp必须要二元组 否则标记后直接返回个数 不会计算位数的权值. dp[pos][cnt] 状态[第pos位,需要bit个1]时合法的个数 和 从第pos位出发能得到的贡献值 #

noone0的博客 299

【顶级EI复现】新扩展移相角下的双有源桥DC-DC 变换器优化控制策略(Simulink仿真实现)

内容概要:本文聚焦于“新扩展移相角下的双有源桥DC-DC变换器优化控制策略”的高水平EI论文复现与深化研究,系统性地实现了基于扩展移相调制(EPS)的DAB变换器控制方案,重点涵盖软开关技术的实现、器件最小应力优化及双闭环控制系统的设计。通过Simulink平台构建完整的仿真模型,验证了该控制策略在提升能量转换效率、降低功率器件电压电流应力、改善动态响应性能等方面的优越性,体现了先进控制理论与电力电子系统深度融合的技术特征。; 适合人群:电力电子、电气工程及其自动化、新能源系统控制等方向的研究生、科研人员及从事DC-DC变换器研发的工程技术人员,尤其适合具备电路拓扑分析能力与控制系统仿真基础的专业人士。; 使用场景及目标:①深入掌握双有源桥变换器的工作机理及其在电动汽车、微电网、可再生能源并网等场景中的关键技术应用;②理解并实现扩展移相调制(EPS)与软开关、最小应力优化之间的协同控制机制;③学习高水平EI期刊论文的建模规范、算法设计逻辑与仿真验证方法,提升科研实践能力;④为后续开展多模块并联、数字化控制或新型调制策略创新提供技术储备。; 阅读建议:此资源以Simulink仿真实现为核心载体,建议读者结合文档逐步搭建模型,重点关注调制信号生成、闭环控制器参数整定、软开关边界条件分析及系统性能对比,鼓励在复现基础上进行拓展性研究,如引入数字延迟补偿、优化启动策略或多模式切换逻辑,以深化对DAB系统动态特性的理解。

hdu 5106 同余定理+组合数学+快速幂

首先要取模,就要用到同余模定理,具体不细讲,只是在中间过程取模,防止溢出 在统计时考虑,逐位进行,因为不考虑数本身,所以每当遇到1时,考虑后面还需要n个1,还剩多少m位,所以就有c(m,n)个数,因为这些数的前缀相同,所以最终结果可以通过前缀*个数获得这部分的和,然后考虑每个位上是1的情况是c(m-1,n-1),也就是当前位固定为1,其他位任意选的情况数,那么他们的和就是(2^(n+1)-1)*

llin-黎辰 630

1. 基于STM32的1.28寸圆形IPS屏(GC9A01)驱动移植实战:软件SPI与硬件SPI双方案详解

本文详细介绍了如何在STM32平台上为1.28寸圆形IPS屏(GC9A01驱动芯片)移植驱动程序,涵盖软件SPI与硬件SPI两种实现方案。内容从引脚定义、工程搭建、GPIO配置到SPI外设初始化逐步详解,并提供了完整的测试代码,帮助开发者根据项目需求(灵活性或性能)选择合适的通信方式,快速点亮屏幕并集成到智能手表等嵌入式项目中。

weixin_42300144的博客 203

Mamba实战:如何用Samba框架轻松搞定RGB-D显著性检测(附避坑指南)

本文提供了基于Samba框架进行RGB-D显著性目标检测的实战指南。详细解析了从环境配置、数据预处理到模型推理与可视化的全流程,并重点剖析了多模态数据融合中的常见陷阱与调试技巧,旨在帮助开发者高效部署这一基于Mamba的先进视觉模型,规避工程实践中的典型问题。

dapp9builder的博客 615

HDU 5106 Bits Problem(数位DP->二进制大数模拟)@

Bits Problem Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status Description If the quantity of '1' in a number's binary digits is n, we call t

MR CODER 384

你的OLED屏和MPU6050为啥通信失败?从IIC的7位地址冲突讲起

本文深入解析OLED屏与MPU6050传感器在I2C总线上的通信故障,重点探讨7位地址冲突问题。通过分析I2C协议中的地址分配机制,提供硬件调整和软件调试的完整解决方案,帮助开发者有效排查和解决设备无响应问题。

weixin_26876073的博客 150

hdu 5106 Bits Problem(数位dp)

题目链接:hdu 5106 Bits Problem 题目大意:给定n和r,要求算出[0,r)之间全部n-onebit数的和。 解题思路:数位dp,一个ct表示个数,dp表示和,然后就剩下普通的数位dp了。只是貌似正解是o(n)的算法。可是n才 1000。用o(n^2)的复杂度也是够的。 #include &lt;cstdio&gt; #include &lt;cs...

weixin_34149796的博客 124

PyTorch深度学习实战(25)——从零开始实现Mask R-CNN实例分割

Mask R-CNN 是一种在目标检测任务中引入了语义分割的强大框架,通过在 Faster R-CNN 基础上进行扩展,添加了额外的分支网络,不仅可以准确地检测对象的位置和类别,还可以生成每个实例的精确像素级别的语义分割掩码。其模块化的设计可以轻松地应用于不同的任务和数据集,并且可以通过添加更多的分支进行功能扩展,如实例关键点检测等。

盼小辉丶的博客 1万+

YOLOv11改进 | 添加注意力篇 | 一文带你改进GAM、CBAM、CA、ECA等通道注意力机制和多头注意力机制

这篇文章给大家带来的改进机制是一个汇总篇,包含一些简单的注意力机制,本来一直不想发这些内容的(网上教程太多了,发出来增加文章数量也没什么意义),但是群内的读者很多都问我这些机制所以单独出一期视频来汇总一些比较简单的注意力机制添加的方法和使用教程,本文的内容不会过度的去解释原理,更多的是从从代码的使用上和实用的角度出发去写这篇教程。欢迎大家订阅我的专栏一起学习YOLO!YOLOv11改进系列专栏——本专栏持续复习各种顶会内容——科研必备目录一、本文介绍二、GAM2.1 GAM的介绍2.2 GAM的核心代码。

Snu77的博客 5151

hdu5106 组合

给一个二进制数,求小于这个二进制数且二进制形式里含有n个1的所有数

creater_X 904

为什么一个“时间片”能折腾 Linux 十年?

时间片扩展不是抢占调度器的控制权,也不是提升优先级。在“非常短暂、非常确定”的用户态临界区内,避免线程被不必要地抢占。用户态自旋锁(user-space spinlock)无系统调用的极短临界区高并发、低延迟的数据结构操作RSEQ(Restartable Sequences)保护区间一旦线程在临界区被抢占,系统整体性能反而下降。线程 A 拿着一个用户态锁线程 B 被调度上来,开始自旋等这个锁但 A 因为时间片用完,被调度器切走CPU 白白空转,所有线程都在浪费时间。

网络技术联盟站 253

[数位dp] hdu 5106 Bits Problem

题意: 给一个N和一个R(用二进制表示) 问 [0,R)二进制中含有N个1的数之和 样例 1 1000  答案为 1+2+4=7 思路: 数位dp[1002][1002]第几位含有几个1 然后需要存的有两东西一个是有多少个数,以及和是多少 接着转移的时候 就是状态的sum=这个site的位权*之后含有的个数+之后的和 记得个数和和都要取模,一开始个数忘记取模了 %>_ 然后需要

Enmity_Dark 1149

【乐企-业务篇】乐企开票具体代码实现

【代码】【乐企-业务篇】乐企开票具体代码实现。

九七的博客 493

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

HDU 5106 Bits Problem(数位DP)

题意很简单

glq007的acm的奋斗 829

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

hdu 5106 组合数预处理

#include #include #include #define mod 1000000007 using namespace std; char ch[1050]; long long c[1010][1010]; long long w[1010]; void init() {     c[0][0]=1;     c[

zazaLiu的专栏 714

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

hdu5106(组合数学)

题意:给一个

xiefubao的专栏 835

HDU 5106 Bits Problem (数位DP)

题目地址:HDU 5106 这个题要定义个dp结构体,dp[i][j].sum表示当前第i位还剩j个1的时候的和,dp[i][j].tot表示当前第i位还剩j个1的时候的符合要求的个数。不记录个数的话,当前位上的1无法跟着低位的出现而累加。 代码如下: #include #include #include #include #include #include #include

scf0920 1038
上一篇: hdu 4666 线段树+最大曼哈顿距离
下一篇: hdu 4616 树形dp
labrother
博客等级 码龄11年 2粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值