-
2017-07-28 16:48:36
题目: How many ways can the numbers 1 to 15 be added together to make 15? The technical term for what you are asking is the "number of partition" which is often called P(n). A partition of n is a collection of positive integers (not necessarily distinct) whose sum equals n. Now, I will give you a number n, and please tell me P(n) mod 1000000007. Input The first line contains a number T(1 ≤ T ≤ 100), which is the number of the case number. The next T lines, each line contains a number n(1 ≤ n ≤ 10 5) you need to consider. Output For each n, output P(n) in a single line. Sample Input 4 5 11 15 19 Sample Output 7 56 176 490 题意: T组样例 问n能拆分成几种 突然觉得下面这个题目更好看懂! "Well, it seems the first problem is too easy. I will let you know how foolish you are later." feng5166 says. "The second problem is, given an positive integer N, we define an equation like this: N=a[1]+a[2]+a[3]+...+a[m]; a[i]>0,1<=m<=N; My question is how many different equations you can find for a given N. For example, assume N is 4, we can find: 4 = 4; 4 = 3 + 1; 4 = 2 + 2; 4 = 2 + 1 + 1; 4 = 1 + 1 + 1 + 1; so the result is 5 when N is 4. Note that "4 = 3 + 1" and "4 = 1 + 3" is the same in this problem. Now, you do it!" Input The input contains several test cases. Each test case contains a positive integer N(1<=N<=120) which is mentioned above. The input is terminated by the end of file. Output For each test case, you have to output a line contains an integer P which indicate the different equations you have found. Sample Input 4 10 20 Sample Output 5 42 627
#include <iostream> #include <string.h> #include <stdio.h> #include <algorithm> using namespace std; const int N=100005; const __int64 MOD=1000000007; __int64 ans[N],tmp[N]; void Init() //模板模板 { int t=1000; for(int i=-1000;i<=1000;i++) tmp[i+t]=i*(3*i-1)/2; ans[0]=1; for(int i=1;i<N;i++) { ans[i]=0; for(int j=1;j<=i;j++) { if(tmp[j+t]<=i) { if(j&1) ans[i]+=ans[i-tmp[j+t]]; else ans[i]-=ans[i-tmp[j+t]]; } else break; ans[i]=(ans[i]%MOD+MOD)%MOD; if(tmp[t-j]<=i) { if(j&1) ans[i]+=ans[i-tmp[t-j]]; else ans[i]-=ans[i-tmp[t-j]]; } else break; } ans[i]=(ans[i]%MOD+MOD)%MOD; } } int main() { int t,n; Init(); cin>>t; while(t--) { scanf("%d", &n); printf("%I64d\n", ans[n]); } return 0; }
如果数据较小又容易t的话就把N减小t减小吧!
更多相关内容 -
长短信拆分规则和编码分析
2020-11-06 12:57:46长短信拆分规则,GSM短信是常用的通讯方式,但每条短信的内容不能超过140字节,给用户的接收和阅读带来不便。本文通过分析短信的PDU编码,介绍了短信的拼接方法和注意事项,实现了对长短信发送和接收的功能 -
Excel指定分类拆分工具
2018-12-11 14:22:19辅助工作需要,根据所给字段分类提取排序,该工具只需要装有Office就能使用 -
SQL 将一列拆分成多列的三种方法
2020-09-08 19:56:11主要介绍了SQL 将一列拆分成多列的方法,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下 -
arcgis 脚本工具(按字段拆分shp)
2022-03-31 11:10:06按shp属性字段分类拆分成多个独立shp文件 -
将一个Excel表格根据其中一列的分类自动拆分到不同的SHEET表.xls
2019-10-29 16:55:18如何将一个Excel表格根据其中一列的分类自动拆分到不同的SHEET表中. -
用于评价拆分分类目标变量的纯度度量包括哪些指标?
2021-08-06 11:19:30《机器学习》用于评价拆分分类目标变量的纯度度量包括哪些指标? -
微服务拆分策略
2022-01-21 13:46:21拆分策略可以按功能和非功能维度进行考虑,功能维度主要是划分清楚业务的边界,非功能维度主要考虑六点包括扩展性、复用性、高性能、高可用、安全性、异构性。接下来详细介绍下。 1、功能维度 功能维度主要是划分...拆分策略可以按功能和非功能维度进行考虑,功能维度主要是
划分清楚业务的边界
,非功能维度主要考虑六点包括扩展性、复用性、高性能、高可用、安全性、异构性
。接下来详细介绍下。1、功能维度
功能维度主要是划分清楚业务边界,采用的主要设计方法可以利用 DDD(关于 DDD 的理论知识可以参考网上其它资料),DDD 的战略设计会建立领域模型,可以通过领域模型指导微服务的拆分,主要分四步进行:
第一步,找出领域实体和值对象等领域对象。
第二步,找出聚合根,根据实体、值对象与聚合根的依赖关系,建立聚合。
第三步,根据业务及语义边界等因素,定义限界上下文。
第四步,每一个限界上下文可以拆分为一个对应的微服务
,但也要考虑一些非功能因素。以电商的场景为例,交易链路划分的限界上下文如下图左半部分,根据一个限界上下文可以设计一个微服务,拆解出来的微服务如下图右侧部分。
举一个典型的电商业务例子。电商的业务体系庞大,涉及各方面的细节。但是我们大概能够根据业务的职能做一个拆分,比如阿里的电商中台业务,包含 用户账号子系统、商品子系统、订单子系统、客户子系统、物流子系统 等。
因为职能不同,这些领域之间包含清晰的界限,所以我们可以按照这个方向将服务于不同领域(商品域和订单域)的子系统拆成独立的服务颗粒。如下图:
2、非功能维度
当我们按照功能维度进行拆分后,并不是就万事大吉了,大部分场景下,我们还需要加入其它维度进一步拆分,才能最终解决单体架构带来的问题。
1)扩展性
区分系统中变与不变的部分,不变的部分一般是成熟的、通用的服务功能,变的部分一般是改动比较多、满足业务迭代扩展性需要的功能,我们可以将不变的部分拆分出来,作为共用的服务,将变的部分独立出来满足个性化扩展需要。同时根据二八原则,系统中经常变动的部分大约只占 20%,而剩下的 80% 基本不变或极少变化,这样的拆分也解决了发布频率过多而影响成熟服务稳定性的问题。
比如一个电商领域的系统,用户信息、基本商品信息、物流信息 等模块的管理能力和视图界面,一般是比较稳定的;而类似运营活动的功能和页面一般是经常变化的(520、618、双11),会有不同的活动策略和视图界面,需要经常迭代发布。如下图所示
2)复用性
不同的业务里或服务里经常会出现重复的功能,比如每个服务都有鉴权、限流、安全及日志监控等功能,可以将这些通过的功能拆分出来形成独立的服务,也就是微服务里面的 API 网关。在如,对于滴滴业务,有快车和顺风车业务,其中都涉及到了订单支付的功能,那么就可以将订单支付独立出来,作为通用服务服务好上层业务。如下图:
3)高性能
将性能要求高或者性能压力大的模块拆分出来,避免性能压力大的服务影响其它服务。常见的拆分方式和具体的性能瓶颈有关,例如电商的抢购,性能压力最大的是入口的排队功能,可以将排队功能独立为一个服务。同时,我们也可以基于读写分离来拆分,比如电商的商品信息,在 App 端主要是商详有大量的读取操作,但是写入端商家中心访问量确很少。因此可以对流量较大或较为核心的服务做读写分离,拆分为两个服务发布,一个负责读,另外一个负责写。还有数据一致性是另一个基于性能维度拆分需要考虑的点,对于强一致的数据,属于强耦合,尽量放在同一个服务中(但是有时会因为各种原因需要进行拆分,那就需要有响应的机制进行保证),弱一致性通常可以拆分为不同的服务。
根据性能需求来进行拆分。简单来说就是访问量特别大,访问频率特别高的业务,又要保证高效的响应能力,这些业务对性能的要求特别高。比如积分竞拍、低价秒杀、限量抢购。
我们要识别出某些超高并发量的业务,尽可能把这部分业务独立拆分出来。这么做的原因非常简单,一个保证满足高性能业务需求,另一个保证业务的独立性,不互相影响。
4)高可用
将可靠性要求高的核心服务和可靠性要求低的非核心服务拆分开来,然后重点保证核心服务的高可用。具体拆分的时候,核心服务可以是一个也可以是多个,只要最终的服务数量满足“三个火枪手”的原则就可以。比如针对商家服务,可以拆分一个核心服务一个非核心服务,核心服务供交易服务访问,非核心提供给商家中心访问。
5)安全性
不同的服务可能对信息安全有不同的要求,因此把需要高度安全的服务拆分出来,进行区别部署,比如设置特定的 DMZ 区域对服务进行分区部署,可以更有针对性地满足信息安全的要求,也可以降低对防火墙等安全设备吞吐量、并发性等方面的要求,降低成本,提高效率。
主链路是高频且核心的主业务模块,把主链路的服务与其他起辅助作用的业务服务隔离开来,避免次链路服务的异常情况影响到主链路服务。
6)异构性
对于对开发语言种类有要求的业务场景,可以用不同的语言将其功能独立出来实现一个独立服务。
以上几种拆分方式不是多选一,而是可以根据实际情况自由排列组合。同时拆分不仅仅是架构上的调整,也意味着要在组织结构上做出相应的适应性优化,以确保拆分后的服务由相对独立的团队负责维护。
-
Excel拆分多个sheet表格
2017-11-04 14:25:39% 将excel表格里面多个sheet拆分成独立的excel %在EXCEl界面按Alt+F11打开VBA编辑器,插入新的模块(插入/模块), % 或者在任意一个sheet名称上点右键,选择“查看代码”即能够进入VBA编辑器 %复制下面的内容到里面... -
行业分类-设备装置-一种可拆分式笔记本、平板二合一电脑.zip
2021-08-21 11:58:39行业分类-设备装置-一种可拆分式笔记本、平板二合一电脑.zip -
行业资料-交通装置-一种可拆分式图书分类手推车.zip
2021-08-31 08:52:29行业资料-交通装置-一种可拆分式图书分类手推车.zip -
如何把 Excel 数据按分类拆分为多个
2021-09-13 13:23:50现需要按类别对蔬果进行拆分后保存到新的sheet里,类别名称(删除类别号后)即为sheet名,如下图所示: 实现步骤 1、 运行集算器 编写脚本: 把代码列出来看得清楚点: A B 1 =file("E:/excel/...例题描述
蔬果明细表fruits.xlsx文件中有蔬果总表,数据如下图所示:
现需要按类别对蔬果进行拆分后保存到新的sheet里,类别名称(删除类别号后)即为sheet名,如下图所示:
实现步骤
1、 运行集算器
编写脚本:
把代码列出来看得清楚点:
A B 1 =file("E:/excel/fruits.xlsx") 2 =A1.xlsimport@t(;,2) 3 =A2.group(类别) 4 for A3 =substr(A4(1).类别,"]") 5 =A1.xlsexport@ta(A4;B4) A1 打开fruits.xlsx文件
A2 将文件数据读成序表,选项@t表示首行是列标题,参数2表示从第2行开始读
A3 按类别列对数据进行分组
A4 循环处理每个组
B4 用每组第1条记录的类别值,取]号以后的文字作为sheet名
B5 把当前组的记录写入fruits.xlsx中的新sheet中,用B4算出来的名称作sheet名。注意这里一定要加选项a,表示是添加新的sheet
想生成多个文件也很容易,只需将 B5 修改:=file("E:/excel/"+B4+".xlsx").xlsexport@t(A4)
这个实现办法和原文件的列数无关,变动列都能支持
2、 按F9运行这段程序,打开fruits.xlsx就可以看到前文目标图所示的效果了。
-
机器学习6-多分类学习器拆分策略
2022-04-10 15:02:16机器学习中多分类学习的经典拆分策略:OvO、OvR、MvM
参考文章: 多分类问题学习器拆分策略现实中常遇到多分类学习任务,有些二分类学习方法可直接推广到多分类,但在更多情况下,我们是基于一些基本策略,利用二分类学习器来解决多分类问题。
不失一般性,考虑N个类别C1,C2,C3,…,CN,多分类学习的基本思路是“拆解法”,即将多分类任务拆解为若干个分类器(二分类)任务求解。具体来说,先对问题进行拆分,然后为拆出的每个二分类任务训练一个分类器;在测试时,对这些分类器的预测结果进行集成以获得最终的多分类结果。这里的关键是如何对多分类任务进行拆分,以及如何对多个分类器进行继承。最经典的拆分策略有三种:“一对一”(One vs. One,简称OvO)、“一对其余”(One vs. Rest,简称OvR)和“多对多”(Many vs. Many,简称MvM)。
1、一对一(One vs. One,简称OvO)
给定数据集D={(x1,y1),(x2,y2),(xm,ym),yi∈{C1,C2,…,Cn}。OvO将这N个类别两两配对,从而产生N(N-1)/2个二分类任务,例如OvO将为区分类别Ci和Cj训练一个分类器,该分类器把D中的Ci类样例作为正例,Cj类样例作为反例.在测试阶段,新样本将同时提交给所有分类器,于是我们将得到N(N-1)/2个分类结果,最终结果可通过投票产生:即把被预测得最多的类别作为最终分类结果.
2、一对其余(One vs. Rest,简称OVR)
OvR则是每次将一个类的样例作为正例、所有其他类的样例作为反例来训练N个分类器。在测试时若仅有一个分类器预测为正类,则对应的类别标记作为最终分类结果。若有多个分类器预测为正类,则通常考虑各分类器的预测置信度,选择置信度最大的类别标记作为分类结果。
OvO和OvR的对比:
OvO:训练N(N-1)/2个分类器,存储开销和测试时间大
训练只用两个类的样例,训练时间短
OvR:训练N个分类器,存储开销和测试时间小
训练用到全部训练样例,训练时间长
对于预测性能,则取决于具体的数据分布,在多数情形下两者差不多3、多对多(Many vs. Many,简称MvM)
MvM是每次将若干个类作为正类,若干个其他类作为反类。显然,OvO和OvR是MvM的特例。
MvM的正、反类必须有特殊的设计,不能随意选取。这里我们介绍一种最常用的MvM技术:“输出纠错码”(Error Correcting Output Codes,简称ECOC)
ECOC将编码的思想引入类别拆分中,并尽可能在解码过程中具有容错性。ECOC的工作过程分为两个步骤:。
编码:对N个类别做M次划分,每次划分将一部分类别划为正类,一部分划为反类,从而形成一个二分类训练集;这样一共产生M个训练集,可以训练出M个分类器。解码:M个分类器分别对测试样本进行预测,这些预测标记组成一个编码。将这个预测代码与每个类别各自的编码进行比较,返回其中距离最小的类别作为最终的预测结果。
Ci表示第i个类别;fi表示第i个学习器
海明距离:在信息编码中,两个合法代码对应位上编码不同的位数称为码距;
计算海明距离的一种方法,就是对两个位串进行异或(xor)运算(同为0,异为1),并计算出异或运算结果中1的个数。例如110和011这两个位串,对它们进行异或运算,其结果是:110⊕011=101,异或结果中含有两个1,因此110和011之间的海明距离就等于2。欧式距离:是一个通常采用的距离定义,指在m维空间中两个点之间的真实距离;
• ECOC编码对分类器错误有一定容忍和修正能力,编码越长、纠错能力越强(影响小,距离变化不大)。假设在预测时某个分类器出错了,例如 f2 出错从而导致了错误编码(-1 ,-1 ,+1,-1 ,+ 1 ),但基于这个编码仍能产生正确的最终分类结果C3。
• 然而,编码越长,意味着所需训练的分类器越多,计算、存储开销都会增大;另一方面,对有限类别数,可能的组合数目是有限的,码长超过一定范围后就失去了意义。
• 对同等长度的编码,理论上来说,任意两个类别之间的编码距离越远,则纠错能力越强。
-
excel 按列拆分、合并、自动分类
2021-01-12 16:33:03excel 按列拆分、合并、自动分类 能自动分类表格,合并多电子表格,合并指定目录下所有xlsx 功能测试完善,判断优化,确保能正常运行 -
行业分类-设备装置-小型葡萄分解拆分装置.zip
2021-09-02 11:04:42行业分类-设备装置-小型葡萄分解拆分装置.zip -
数据库的垂直拆分和水平拆分
2021-05-16 22:15:18数据的分类管理 通过分类处理提升数据管理能力 随着我们对业务系统、对数据本身的进一步了解,我们就会发现,很多数据对质量的要求是不同的。 比如,订单数据,肯定一致性要求最高,不能丢数据。而日志数据和一些... -
【组合数学】生成函数 ( 正整数拆分 | 无序不重复拆分示例 )
2020-10-29 21:55:49一、正整数拆分总结、 二、正整数拆分示例 -
行业分类-设备装置-小型葡萄分解拆分装置及加工方法.zip
2021-09-02 11:05:48行业分类-设备装置-小型葡萄分解拆分装置及加工方法.zip -
数据库和数据库表的水平拆分和垂直拆分
2020-03-16 14:54:41数据库垂直拆分(按照功能模块拆分) 数据库水平拆分(根据某种规则划分,比如对id取余) 数据库表的垂直拆分 数据库表的水平拆分 数据拆分前其实是要首先做准备工作的,然后才是开始数据拆分 第一步:采用... -
ios Objective-C分类 (category),字符串的拆分(componentsSeparatedByCharactersInSet)
2018-12-07 18:04:38ios Objective-C分类 (category),字符串的拆分(componentsSeparatedByCharactersInSet) -
根据属性字段分类拆分成多个shp
2021-01-31 10:01:54如何通过某字段属性批量导出各个字段对应的shp文件?比如现有管道图层,想根据管道的属性(注水,油,混输或者气)分成多个shp。 通过Analysis Tools——Extract——Split工具实现。 步骤如下: ... -
如何拆分文本并分类统计
2022-05-30 10:52:45将下面 A 列数据拆分成右边的形式,有 @符号的要加到一起。相关的数据如下: 需要统计出孔 (即 @的数据)、夹及其它的数据。 解法及简要说明 1. 在集算器中设置 demo.dfx 脚本参数: 设置参数 arg1 为 Excel... -
长短信拆分
2021-04-11 11:38:291、引言根据短信内容的大小,将常用短信分类:单条短信和长短信。所谓长短信是指短信的大小超过了单条短信的限制,需将短信拆分成几条短信然后分别发送,接收的时候将几条短信拼在一起组成原始短信的内容,对于拆分... -
Matlab 中的人脸检测:使用本地 SMQT 特征和拆分 SnoW 分类器的人脸检测-matlab开发
2021-06-01 19:28:33基于局部连续平均量化变换 (SMQT) 特征和拆分 Winnows 稀疏网络 (SNoW) 分类器。 基于论文:使用本地 SMQT 特征的人脸检测和拆分 SNoW 分类器。 请参阅 zip 文件中的 readme.txt 和 license.txt 中的更多信息。 -
项目优化之垂直拆分 和 水平拆分
2022-03-05 22:30:57垂直拆分 数据层-表 将单表中的常用字段和不常用字段,拆分到两个表,减少每次读无效...将全部记录按某个字段,分类到多个表中。例如,身份证表,按地区拆分。 数据层-库 单库的机器性能成为瓶颈。 将身份证表, -
数据库拆分
2019-12-22 12:33:21数据库拆分分类: 1、垂直拆分 概念:按照业务拆分,比如可以拆分为:产品库,客户库,订单库等。 目的:可降低单节点数据库的负载;原来的情况是:所有的数据表都集中在一个数据库节点上,如此所有的读写请求就... -
微服务拆分之道
2022-04-24 15:42:45也就是说每个服务只完成自己职责内的任务,对于不是自己职责的功能交给其它服务来完成。 2. 闭包原则( CCP ) 微服务的闭包原则就是当我们需要改变一个微服务的...在服务拆分的初期,你其实很难确定服务究竟要 -
行业分类-设备装置-可拆分脚的家具.zip
2021-09-12 04:21:50行业分类-设备装置-可拆分脚的家具 -
图文解释 读写分离、垂直拆分、水平拆分、分库分表
2021-03-16 14:44:43前言相信你经常被 读写分离、垂直拆分、水平拆分、分库分表 这几个名词搞得很懵逼。我有时候也很懵逼,那么今天就来把这几个数据库常用术语搞清楚,同时也记录一下。读写分离这个相对比较好理解一些,就是将数据库... -
应用架构种类 - 垂直拆分
2020-08-18 17:40:55如何快速解耦:垂直拆分 业务 代码 数据库 研发团队