UVA - 11258 String Partition

开始没仔细考虑,看成了区间dp,这样复杂度会到十的七次方,果断超时,后来才发现,可以直接线性dp,从前向后do即可

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define MAX 210
#define BOD 2147483647
using namespace std;

char s[MAX];
long long len,dp[MAX];

void init(){
	len=strlen(s);
	memset(dp,-1,sizeof(dp));
	dp[0]=s[0]-'0';
}

long long value(int front,int rear){
	long long ret=0;
	for(int i=front;i<=rear;i++)
		ret=ret*10+s[i]-'0';
	return ret;
}

int main(){
	int T;
	scanf("%d",&T);
	getchar();
	while(T--){
		scanf("%s",s);
		init();
		for(int i=1;i<len;i++){
			for(int l=1;l<=10&&i-l+1>=0;l++){
				long long x=value(i-l+1,i);
				if(x>2147483647LL)
					continue;
				dp[i]=max(dp[i],(i-l>=0?dp[i-l]:0)+x);
			}
		}
		printf("%lld\n",dp[len-1]);
	}
	return 0;
}


<think>好的,我现在需要处理用户关于“-DWITH_PARTITION_STORAGE_ENGINE”的查询。首先,我要确认这个选项的上下文,通常这种以-D开头的选项看起来像是CMake的编译参数。用户可能是在编译MySQL或其他数据库时遇到了相关配置问题,或者想了解如何启用分区存储引擎。 接下来,我需要回忆MySQL的编译选项。记得在MySQL的构建过程中,确实有一些CMake参数来控制存储引擎的启用或禁用。比如,-DWITH_INNOBASE_STORAGE_ENGINE=1用于启用InnoDB。同理,-DWITH_PARTITION_STORAGE_ENGINE可能用于控制是否支持分区功能。 不过,这里有个可能的混淆点:分区(Partitioning)在MySQL中其实是一个功能,而不是单独的存储引擎。分区功能允许将表分割成多个部分,但这些部分仍然由其他存储引擎(如InnoDB或MyISAM)管理。所以用户提到的“PARTITION_STORAGE_ENGINE”可能是一个历史遗留的术语,或者编译时的内部命名方式。 需要查阅MySQL的官方文档或CMake配置选项来确认。根据记忆,较新版本的MySQL(5.6及以后)在编译时默认启用分区支持,可能不需要特别指定这个参数。但旧版本可能需要显式启用。例如,在MySQL 5.1中,分区功能是作为插件存在的,可能需要通过-DWITH_PARTITION_STORAGE_ENGINE=1来启用。 此外,用户可能在编译时遇到错误,提示分区功能未启用,这时候需要检查CMake参数是否正确包含该选项。另外,如果用户使用的是MariaDB,可能会有不同的配置选项,但MariaDB通常也兼容MySQL的参数。 还要注意语法正确性,CMake参数通常是布尔选项,比如=ON或=1。例如,-DWITH_PARTITION_STORAGE_ENGINE=ON。如果用户只写了-DWITH_PARTITION_STORAGE_ENGINE而没有赋值,CMake可能会默认启用,但最好明确指定。 总结回答的结构:先解释该参数的作用,说明是CMake编译选项,用于启用MySQL的分区功能;然后说明在不同版本中的默认情况,是否需要显式启用;最后给出使用示例和注意事项,比如赋值方式,依赖的其他库是否满足等。</think>关于编译选项 `-DWITH_PARTITION_STORAGE_ENGINE` 的解释如下: ### 1. **基本定义** `-DWITH_PARTITION_STORAGE_ENGINE` 是 MySQL 源码编译时使用的 **CMake 参数**,用于控制是否启用 MySQL 的 **表分区(Partitioning)功能**。 ### 2. **作用说明** - **表分区功能**:允许将单个逻辑表的数据按规则(如按范围、哈希、列表等)分割到多个物理存储文件中,提升大表查询和维护效率。 - **编译意义**:若在编译时未启用此选项,MySQL 将无法支持表分区功能,相关 SQL 语句(如 `PARTITION BY`)会报错。 ### 3. **典型使用场景** ```bash # 在 MySQL 源码编译命令中显式启用分区功能 cmake .. -DWITH_PARTITION_STORAGE_ENGINE=1 ``` ### 4. **版本差异** - **MySQL 5.6 及之前**:分区功能需通过 `-DWITH_PARTITION_STORAGE_ENGINE=ON` 显式启用。 - **MySQL 5.7+ 及 MariaDB**:默认已启用分区功能,通常无需手动添加此参数。 ### 5. **注意事项** - 若编译时未启用但运行时尝试使用分区表,会触发错误: ```sql ERROR 1286 (42000): Unknown storage engine 'partition' ``` - 需确保依赖项(如 `libaio`)已安装,避免编译失败。 ### 6. **验证分区是否启用** 安装后执行 SQL: ```sql SHOW PLUGINS; ``` 检查输出中 `partition` 的 `STATUS` 是否为 `ACTIVE`。 ### 总结 此参数是 MySQL 源码构建中控制表分区功能的开关。建议新版本无需手动配置,但若需自定义编译或使用旧版本,需通过 `-DWITH_PARTITION_STORAGE_ENGINE=ON` 确保功能可用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值