Phalanx (dp求最大对称子矩阵)

最大子矩阵和问题.pdf最大子矩阵和问题.pdf 最大子矩阵和问题.pdf最大子矩阵和问题.pdf最大子矩阵和问题.pdf最大子矩阵和问题.pdf 详细分析和源码 值得好好研究啊 立即下载

Phalanx

Today is army day, but the servicemen are busy with the phalanx for the celebration of the 60th anniversary of the PRC.
A phalanx is a matrix of size n*n, each element is a character (a~z or A~Z), standing for the military branch of the servicemen on that position.
For some special requirement it has to find out the size of the max symmetrical sub-array. And with no doubt, the Central Military Committee gave this task to ALPCs.
A symmetrical matrix is such a matrix that it is symmetrical by the “left-down to right-up” line. The element on the corresponding place should be the same. For example, here is a 3*3 symmetrical matrix:
cbx
cpb
zcc

Input There are several test cases in the input file. Each case starts with an integer n (0<n<=1000), followed by n lines which has n character. There won’t be any blank spaces between characters or the end of line. The input file is ended with a 0. Output Each test case output one line, the size of the maximum symmetrical sub- matrix.
Sample Input
3
abx
cyb
zca
4
zaba
cbab
abbc
cacq
0
Sample Output
3
3

题意:
给你一个n*n的矩阵,求矩阵的最大反对角线对称的子矩阵的长度。

分析:

由于长度为k的对称矩阵一定包含了一个长度为k-1的对称矩阵,即长度为k的矩阵可以有长度为k-1的矩阵推出来。所以形成了子问题。
我们如何表示一个状态呢?
设dp[i][j] = k,表示左下角坐标为(i,j)长度为k的对称矩阵。
然后我们从“极限状态”出发,当长度为1时,矩阵都为对称矩阵。我们从右上角往左下角方向枚举 ,dp[i][j] 可由dp[i-1][j+1] 推出来。所以直接dp即可。

code:

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
const int maxn = 1005;
char a[maxn][maxn];
int dp[maxn][maxn];

int main(){
    int n,ans;
    while(scanf("%d",&n) != EOF && n){
        ans = 1;
        for(int i = 0; i < n; i++){
            scanf("%s",a[i]);
        }
        //从右上角开始枚举
        for(int i = 0; i < n; i++){
            for(int j = n-1; j >= 0; j--){
                dp[i][j] = 1;
                if(i == 0 || j == n-1) continue;//在边缘长度只能为1
                int k = dp[i-1][j+1];
                for(int s = 1; s <= k; s++){
                    //因为长度为k+1的对称矩阵一定包含了长度为k的对称矩阵,所以判断时只需要判断最外圈是否对称即可
                    if(a[i-s][j] == a[i][j+s]) dp[i][j]++;
                    else break;
                }
                ans = max(ans,dp[i][j]);
            }
        }
        printf("%d\n",ans);
    }
    return 0;
}

用LTspice仿真Buck电路输出电容:从参数计算到波形优化的全流程演示 本文详细介绍了使用LTspice仿真Buck电路输出电容的全流程,从理论计算到波形优化。通过解析关键参数如纹波电压、瞬态响应和ESR,结合工程计算方法和LTspice仿真技巧,帮助工程师优化Buck电路设计,解决输出纹波过大和瞬态响应不佳的问题。 阅读详情

相关推荐

Mac OS X 工具技巧:一文搞定个性化命令行窗口(iTerm2 + zsh + oh-my-zsh 配置Powerline风格)

本不想写这篇文章的,因为在Linux下已经配置过很多次,想着mac应该找篇文章一次就搞定了,结果还是踩坑,看了很多文章,不是某一点没不清楚,就是截图有问题或者命令有问题,官网又难得找等等……花了3个多小时才搞定,所以,还是来总结一篇文章就能够搞定的教程。 为什么要用zsh?用了这么多年的bash,不能说bash不好,不过当我用了zsh后发现,什么叫更好用。 配置过程稍微有点繁琐,但是你看过效果...

mickjoust的技术小屋 1万+

HDU - 2859 Phalanx (DP)

题目: Today is army day, but the servicemen are busy with the phalanx for the celebration of the 60th anniversary of the PRC. A phalanx is a matrix of size n*n, each element is a character (a~z or A~Z

shinimashzi 301

SPSS篇—卡方检验

今天依旧跟大家分享一个在SPSS中使用率比较高的分析方法:卡方检验。 在开始做分析之前,我们需要明白两件事情:卡方检验是什么?一般用来干什么?我们只有充分了解分析方法以后才能够正确的使用它。 卡方检验在百科中的解释是:卡方检验是用途非常广的一种假设检验方法,它在分类资料统计推断中的应用,包括:两个率或两个构成比比较的卡方检验;多个率或多个构成比比较的卡方检验以及分类资料的相关分析等。它的原理是...

小白数据营的博客 20万+

HDU ~ 2859 ~ Phalanx (DP,最大对称子矩阵)

题意:给你一个正方形矩阵,求他的最大对称子矩阵(正方形)的边长。 思路:最大对称子矩阵。定义dp[i][j]dp[i][j]dp[i][j]表示以(i,j)(i,j)(i,j)为左下角的最大对称子矩阵的边长。 每个点dp[i][j]dp[i][j]dp[i][j]只能由右上角dp[i−1][j+1]dp[i−1][j+1]dp[i-1][j+1]的位置转移得到。对于当前位置(i,j)(i,...

张松超的博客 641

华为昇腾服务器npu中安装paddle,pytorch等环境,训练代码迁移适配等问题记录

参考文档:https://github.com/PaddlePaddle/PaddleCustomDevice/blob/develop/backends/npu/README_cn.md

qq_29220369的博客 4112

别再到处找模板了!手把手教你用Vue3+Element Plus搭建一个‘能跑起来’的管理后台原型

本文详细介绍了如何利用Vue3和Element Plus在72小时内快速搭建一个功能完整的管理后台原型。从环境准备到项目获取、依赖安装、原型定制、数据模拟以及构建优化,手把手教你打造一个可直接演示的后台系统,特别适合创业者快速验证产品逻辑。

weixin_26854555的博客 182

dp基础6--[HDU-2859] 最大对称矩阵

题意:找元素关于 left-down to right-up 对称的最大矩阵

axuhongbo的博客 303

散户逆袭神器:用通达信DIY指数发现下一个光伏储能(附龙头股筛选模板)

本文详细介绍了如何利用通达信软件的自定义指数功能,构建个人专属的行业监控工具,以发现类似光伏储能这样的潜力赛道。文章提供了从零开始的指数编制步骤、核心的龙头股筛选模板,以及五个关键的数据校验技巧,帮助散户投资者实现机构级的行业分析与机会挖掘,有效提升投资决策能力。

w3x4y的博客 482

26.对称矩阵及正定性

首先对称矩阵是方阵,满足如下条件。

scar2016的博客 6161

【R语言-生存分析之观察生存率计算】

全人群肿瘤登记资料常用的统计分析指标包括发病率、死亡率、现患率以及生存率等,其中肿瘤生存率是评估肿瘤治疗效果和肿瘤负担的必要指标,其计算涉及肿瘤患者的发病、 死亡和随访三个方面的资料, 数据整理和计算过程均较为复杂, 如何及时、 准确地计算肿瘤生存率, 并使其可以在不同地区、 不同人群、不同时期间被客观公正地比较和评价,仍然是统计学家们一直在研究的主题。

weixin_46579654的博客 5439

安装升级最新版本postman时遇到“无法定位程序输入点 SetDefaultDllDirectories于动态链接库KERNEL32.dll 上.”的问题

软件版本迭代更新真快,最近升级最新Postman版本时出现以下问题 我就简单纪录下解决办法: 备注:我用的是最新的postman工具包:Postman-win64-7.25.0-Setup.exe,目前是最新 0. 前提是已经到postman官网https://www.postman.com/downloads/下载好软件工具包 1.安装window7系统更新补丁KB2533623,请到微软公司官网https://support.microsoft.com/en-us/help/2...

董广明的博客 1万+

dp训练计划——最大对称子矩阵hdu2859

题目链接:https://vjudge.net/problem/HDU-2859 题意: 给你一个n*n的字母矩阵,求最大对称子矩阵的长度。 题解: 经典的dp问题。 状态:dp[i][j]表示从(i,j)开始到右上角某一点能形成的最大对称子矩阵长度。 状态转移: 注意枚举顺序,因为是考虑的右上角,我们可以考虑正着枚举i,倒着枚举j。 这样保证了无后效性。 代码实现: ...

mumei的博客 363

PyQt5开发编译器安装(PyCharm安装)

PyCharm 提供了最完整的 PyQt5 开发体验,特别是其集成的调试工具和 Qt Designer 支持,能显著提高开发效率。是最受欢迎和功能最完整的 IDE。它专门为 Python 开发优化,对 PyQt5 有很好的支持。右键运行该文件,如果出现窗口说明配置成功。对于 PyQt5 开发,

啊渊的专栏 416

(HDU 2859) Phalanx (求最大对称子矩阵) dp

Phalanx Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 1246 Accepted Submission(s): 617Problem Description Today is army day, but the se

STILLxjy 1338

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

[kuangbin]Phalanx 基础dp | 求最大对称子矩阵

给你一个矩阵,只由小写或大写字母构成。求出它的最大对称子矩阵的边长。 其中对称矩阵是一个k*k的矩阵,它的元素关于从左下角到右上角的对角线对称。 例如下面这个3*3的矩阵是对称矩阵: cbx cpb zcc Input 多组数据。每一组第一行是一个n (0<n<=1000),下面是n行,每一行有n个字母,中间没有空格。数据以n=0结束。 Output 每组数据输出...

一只酷酷光儿的博客 453

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

HDU 2859 Phalanx dp 最大对称子矩阵

http://acm.hdu.edu.cn/showproblem.php?pid=2859 题意:给出一个由小写字母构成的字符矩阵, 问它的最大对称子矩阵的边长.最大子矩阵要求按从左下到右上的对角线对称. 思路: 当前点右上方能构成对称矩阵←这个点(本列向上)与(本行向右)对称+右上那个点能构成对称矩阵. 考虑dp. dp[i][j]表示(i,j)这个点能构成最大的子矩阵宽度. 递推式...

swqeaaa的博客 289

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

HDUOJ 2859 Phalanx

HDUOJ 2859 Phalanx 题目链接 Problem Description Today is army day, but the servicemen are busy with the phalanx for the celebration of the 60th anniversary of the PRC. A phalanx is a matrix of size n∗nn*nn∗n, each element is a character (a~z or A~Z), standing

旺崽的博客 2639

*HDU2859.Phalanx(最大对称子矩阵dp)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2859 题意:找出矩阵中最大的以右对角线为轴对称的子矩阵 解题思路:dp[i][j]表示以i和j为左下角向上方和右方延伸的最长相同长度 dp[i][j]由dp[i-1][j+1]决定,最大也只能比dp[i-1][j+1]大一,因为(i-1,j+1)为(i,j)的右上角,以他们为对角线组成子矩阵。如果dp[i-1][j+1]为1(即它自身),那么dp[i-1][j+1]要想找对称子矩阵也只能是1或者2。 所以dp主

Buyi的博客 207

HDU 2859 Phalanx 求最大的对称子矩阵的大小

dp

大咸鱼。。。 738

DP专题--------Q - Phalanx最大对称子矩阵

Today is army day, but the servicemen are busy with the phalanx for the celebration of the 60th anniversary of the PRC. A phalanx is a matrix of size nn, each element is a character (a~z or A~Z), stan...

qq_36386435的博客 259

hdu2859 Phalanx(dp/最大对称子序列)

题目描述 以下题意参考链接 给你一个nn的字符矩阵,从中选出一个最大的子矩阵(mm)满足关于斜对角线(左下角到右上角)对称,求出这个矩阵的大小m; 我们可以用dp[i][j]表示当前位置到右上角这个子矩阵所能表示对称的矩阵最大值; #include<cstdio> #include<cstring> #include<algorithm> using name...

弋墨尘的博客 343

I - Phalanx HDU - 2859(DP-最大对称子图)

思路 题意 给我们一个n*n的矩阵,让我们找出一个最大的 子矩阵, 这个子矩阵要求要沿从左下->到右上的对角线对称 分析 这题用dp来求,dp[i][j] 表示以(i,j)为左下角的子矩阵的最大对称矩阵的尺寸大小, 如上图所示样例,当我们考虑以(2,1)为左下角的子矩阵的 最大对称尺寸(即dp[2][1]的值 )的时候,我们可以从(2,1)这个点开始,分别沿着竖直方向向上、水平方向向右 进行对称位置的数进行匹配,设匹配的数字量为:size, 如果size 大于(2,1)位置右上角面

做一只熊猫不好吗? 238

HDU - 2859 Phalanx (dp_最大对称子图)

Today is army day, but the servicemen are busy with the phalanx for the celebration of the 60th anniversary of the PRC. A phalanx is a matrix of size n*n, each element is a character (a~z or A~Z), sta...

。 244

Q - Phalanx HDU - 2859——基础dp-最大对称子矩阵

Think: 1知识点:基础dp-最大对称子矩阵 2题意:给定一个矩阵,寻找一个最大对称子矩阵,当前题目最大对称子矩阵定义可理解为沿当前子矩阵的次对角线元素对称 3思考:确定动态转移方程的过程可以抽象成根据题意条件将一个大问题不断缩小一直缩小到可以解决的小问题vjudge题目链接以下为Accepted代码#include <cstdio> #include <cstring> #include

BlessingXRY的博客 795

hdu-2859 Phalanx 【dp】

Phalanx Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 452    Accepted Submission(s): 219 Problem Description Today is army day,

mfcheer 1287

对称矩阵dp -- Phalanx HDU - 2859

Phalanx HDU - 2859 题意: 给你一个n * n 的矩阵。矩阵由大小写字母组成,找关于左下角到右上角对角线对称的矩形,求能找到的最大的矩形大小。 思路: 观察矩形对称的特点,dp[i][j]存以(i, j)为右下角的最大对称矩形大小,从左上到右下递推,转移式为 dp[i][j] = k,显然k不会超过 dp[i - 1][j + 1] + 1, code: #include<iostream> #include<cstdio> #include<cstdlib&

dajiangyou123456的博客 231
上一篇: Lecture Sleep(思维+前缀和)
下一篇: Minimize the error (优先队列贪心)
Guuuuuu老师儿
博客等级 码龄9年 259粉丝 718原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值