P1025 数的划分 我好想穿小裙子啊!!!! + 相似基因

2024-02-07 20:38

本文主要是介绍P1025 数的划分 我好想穿小裙子啊!!!! + 相似基因,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本来想写的,后来搁置了

后来在信息安全课上摸鱼(一直在写字老师还以为我在认真听课hhhhh)

结果那天晚上要交作业耽误了直到今天hhh重新捡起来 瞎继而写。。。

样例错了 瞎继而改100 5 

看呀看 看呀看 改了竟然对了。。。神奇的操作

其实不难的  但是~  需要一点思考量这样子 

毕竟11.7k人做出来呢

普及的题 还是要想想想想想想然后就想出来了~

继续加油啦啦啦


#include<iostream>
using namespace std;
typedef long long ll;
ll f[205][10]; 
ll dp(ll oral, ll j,ll yet) {//j是块数...//a是最开始要求要操作的数//fa是上一个...ll sum = 0;if (j == 3) {for (int i = 1; i <= oral / 3; i++) {if (i < yet)//以防2 1 2 2 这种事情发生  小鱼的不行 只能等于!!!continue;else if (i * 3 > oral)//以防3 2 2 这种事情发生 直接停止吧break;else {if (f[oral - i][2] - i + 1 < 0)continue;else sum += f[oral - i][2] - i + 1;}}}else { //比如 8 4块这种请求啦 for (int i = 1; i <= oral/j; i++) {if (i < yet)//以防2 1 2 2 这种事情发生  小鱼的不行 只能等于!!!continue;else if (i * j > oral)//以防3 2 2 这种事情发生 直接停止吧break;sum += dp(oral - i, j - 1, i);}}return sum;
}//2000!!!------------
int main() {ll number, times;cin >> number >> times;for (int i = 1; i <= 205; i++) {f[i][2] = i / 2;}if(times!=2)cout<<dp(number, times,1)<<endl;else cout << f[number][2]<<endl;//cout << sum << endl;return 0;
}

 

-----------(之前写的)

 

相似基因:过题代码看前面吧。
其实也还就是最长公共子序列的加了一点东西,唔,加了一点诸如怎么匹配的问题,完全了解前文的匹配过程(只关注当前 Hi~?o(* ̄▽ ̄*)ブ)就可以
哇~ 过题人那么多。
后来啊啊还是~还是桂花课上用手重新写了一遍发现有初始化的时候没值,只能从0 0开始这是不行的
后来20分。。 后来写了AAT TAA来实验
发现不能取得max的,因为AAANSLKD
AAAKOPXKPSNA 总不能最大的 是15吧 要取最后而不是取最大……
(所以每一步在干嘛,LCS倒是有可能因为最大的只能取得一次啊……)
【所以说还是静下来用心去做~】
【静下来……真的能认真去做吗?】

普及-的题卡了三天还行。还好继续没看题解只是确定了一下正确思路(因为杂项太多了我以前想的有正解的一种然后被淹没了……)

--------------------

//啊!memset在cstring里面!!!!
/*
又。。。。这个还是看了题解,我感觉最开始卡到我的关键在于~
对之前的lcs不够了解。然后一旦你开始乱七八糟搞什么flag位啊在动态规划里一般你已经死了-。-
就是呢,QAQ如果匹配过了也没有关系,因为匹配的是[i-1][j-1]啊 若它已经匹配过一次了需要重新匹配说明在
在扔掉当前i和当前j的前提下前面也有匹配的  gtt gtett 这样a1[3]  a2[5]匹配的时候担心 T 已经用过了?没事 T 只有一个 
哪怕你下面怎么样 上面匹配的是a[2]之前的 最大的还只能是3.。。
想法其实是对的。。理解的不深刻 导致后面还是乱了啊-。-(后面还是被自己欺骗了

长长的一串 相当于每一次都是斜着更新的  我后面变成什么样子了完全依赖于前面一点点的慢慢的更新
*/

#include<cstring>
#include<iostream>
#include<algorithm>
#include<cmath>
#include<string>
using namespace std;
int a1[105];
int a2[105];
int   dp1[105];
int  dp2[105];
int dp[105][105];
int sum[105][105];
int c[10][10];
void init() {c[1][2] = c[2][1] = c[4][1] = c[1][4] = c[5][4] = c[4][5] = -1;c[3][1] = c[1][3] = c[4][2] = c[2][4] = c[4][3] = c[3][4] = c[5][3] = c[3][5] = -2;c[3][2] = c[2][3] = c[5][1]=c[1][5]=-3;c[2][5] = c[5][2] = -4;
}
int main() {init();int n1, n2; string s1, s2; cin >> n1 >> s1; cin >> n2 >> s2;s1 = "#" + s1;s2 = "E" + s2;for (int i = 1; i <=n1 ; i++) {if (s1[i] == 'A')a1[i] = 1;else if (s1[i] == 'C')a1[i] = 2;else if (s1[i] == 'G')a1[i] = 3;else if (s1[i] == 'T')a1[i] = 4;}for (int i = 1; i <=n2; i++) {if (s2[i] == 'A')a2[i] = 1;else if (s2[i] == 'C')a2[i] = 2;else if (s2[i] == 'G')a2[i] = 3;else if (s2[i] == 'T')a2[i] = 4;}for (int i = 1; i <= max(n1, n2); i++) {for (int j = 1; j <= max(n1, n2); j++) {sum[i][j] = -9999;}}sum[0][0] = 0;for (int i = 1; i <= n1; i++) {sum[i][0] = sum[i - 1][0] + c[5][a1[i]];//这个就是i已经去和空的配对了//不然初始化有误差}for (int j = 1; j <= n2; j++) {sum[0][j] = sum[0][j - 1] + c[5][a2[j]];}int maxx = 0; int maxs = 0;for (int i = 1; i <= n1; i++) {//sum[i][0] = sum[i - 1][0] + c[a1[i]][5];//sum[0][0] = 0;for (int j = 1; j <= n2; j++){if (a1[i] == a2[j]) {dp[i][j] = dp[i - 1][j - 1] + 1;sum[i][j] = sum[i - 1][j - 1] + 5;}else {/*//不等的话,就是谁对应空格,或者两个直接对应。int temp1 = 0; sum[i - 1][j] + c[a1[i - 1]][5];int temp2 = 0; int temp3 = 0;if (a1[i]==a2[j-1])temp2= sum[i][j - 1] + c[5][a2[j]];//我家的上家和你配对了,那好吧我先单着//else if (a1[i - 1] == a2[j])temp1 = sum[i - 1][j] + c[a1[i]][5];else if (a1[i] != a2[j])temp3 = sum[i - 1][j - 1] + max(c[a1[i]][a2[j]],max(c[a1[5]][a2[j]], c[a1[i]][a2[5]]));else if(i!=1&&j!=1&&sum[i-2][j-2]==sum[i-1][j-1]+5)temp1 = sum[i - 1][j] + c[a1[i]][5];//相等的不算啊,如果上一家真的结亲了//。。。 什么啊  a1[i]  和a2[j] 肯定就已经是不相等了//什么啊。。这已经是最下的下策了  我们如果我们的前面都不相等只好我们两个凑一对儿//或者,你是空的,我也是空的。。*///只看当下的决策?//if (flag == j - 1) {//正好是在前面匹配的,那抱歉没办法了再见你只能单着了//		sum[i][j] += sum[i][j - 1] + c[5][a2[j]];//我们硬要匹配好,还是各自纷飞好?sum[i][j]= max(sum[i - 1][j - 1] + c[a1[i]][a2[j]],max(sum[i-1][j]+ c[5][a1[i]],sum[i][j-1]+ c[5][a2[j]]));//sum[i][j] = max(ms,sum[i][j]);dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]);}maxx = max(dp[i][j], maxx);
//			maxs = max(maxs, sum[i][j]);}}//cout << maxx << endl;cout << sum[n1][n2] << endl;return 0;
}

 

 

 

 

 

 

-------------结尾1! 我的手机被抽特王收走了~!!!!!我只能!!!!!

这篇关于P1025 数的划分 我好想穿小裙子啊!!!! + 相似基因的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/688868

相关文章

poj 2104 and hdu 2665 划分树模板入门题

题意: 给一个数组n(1e5)个数,给一个范围(fr, to, k),求这个范围中第k大的数。 解析: 划分树入门。 bing神的模板。 坑爹的地方是把-l 看成了-1........ 一直re。 代码: poj 2104: #include <iostream>#include <cstdio>#include <cstdlib>#include <al

Thread如何划分为Warp?

1 .Thread如何划分为Warp? https://jielahou.com/code/cuda/thread-to-warp.html  Thread Index和Thread ID之间有什么关系呢?(线程架构参考这里:CUDA C++ Programming Guide (nvidia.com)open in new window) 1维的Thread Index,其Thread

临床基础两手抓!这个12+神经网络模型太贪了,免疫治疗预测、通路重要性、基因重要性、通路交互作用性全部拿下!

生信碱移 IRnet介绍 用于预测病人免疫治疗反应类型的生物过程嵌入神经网络,提供通路、通路交互、基因重要性的多重可解释性评估。 临床实践中常常遇到许多复杂的问题,常见的两种是: 二分类或多分类:预测患者对治疗有无耐受(二分类)、判断患者的疾病分级(多分类); 连续数值的预测:预测癌症病人的风险、预测患者的白细胞数值水平; 尽管传统的机器学习提供了高效的建模预测与初步的特征重

【电子通识】洁净度等级划分及等级标准

洁净度常用于评估半导体、生物制药、医疗、实验室及科研院所、新能源等领域的洁净室、无尘室或者无菌室等环境。         一般来说,晶圆光刻、制造、测试等级为100级或1000级的洁净间,百级洁净间要求空气中0.5微米的尘埃粒子数不得超过每立方米3520个;等级为1000级的洁净间要求0.5微米的尘埃粒子数不得超过每立方米35200个。         晶圆切割或封装工序一

洛谷 凸多边形划分

T282062 凸多边形的划分 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 先整一个半成品,高精度过两天复习一下补上 #include <iostream>#include <algorithm>#include <set>#include <cstring>#include <string>#include <vector>#include <map>

线性代数 第六讲 特征值和特征向量_相似对角化_实对称矩阵_重点题型总结详细解析

文章目录 1.特征值和特征向量1.1 特征值和特征向量的定义1.2 特征值和特征向量的求法1.3 特征值特征向量的主要结论 2.相似2.1 相似的定义2.2 相似的性质2.3 相似的结论 3.相似对角化4.实对称矩阵4.1 实对称矩阵的基本性质4.2 施密特正交化 5.重难点题型总结5.1 判断矩阵能否相似对角化5.2 已知两个矩阵相似,求某个矩阵中的未知参数5.3 相似时,求可逆矩阵P,使

n条直线最多能划分出多少个平面?

N条直线,两两相交,其交点各不不同,则产生的交点数目为N个数中取2个数的组合; 同时,也只有这种情况下(两两相交,也交点不同),分割的平面数最多, 数目为: 2 + (N-1)(N+2)/2.  这里求最少平面数没有意义,因为最少平面数就是N+1, 即N条直线两两平行的时候,分割的平面最少。 举例: 1条直线分割平面数最多为2; a1 = 2 2条直线分割平面数最多为4;

SimD:基于相似度距离的小目标检测标签分配

摘要 https://arxiv.org/pdf/2407.02394 由于物体尺寸有限且信息不足,小物体检测正成为计算机视觉领域最具挑战性的任务之一。标签分配策略是影响物体检测精度的关键因素。尽管已经存在一些针对小物体的有效标签分配策略,但大多数策略都集中在降低对边界框的敏感性以增加正样本数量上,并且需要设置一些固定的超参数。然而,更多的正样本并不一定会带来更好的检测结果,事实上,过多的正样本

Matlab)实现HSV非等间隔量化--相似判断:欧式距离--输出图片-

%************************************************************************** %                                 图像检索——提取颜色特征 %HSV空间颜色直方图(将RGB空间转化为HS

bedtools subtract 基因区段取差集

基本概述: bedtools subtract 通俗的说,得到 A - B 的区段。如果在A中发现了B区段,就把 B 扣除,通过不同的参数,扣除的标准不一样。其中,参数 -A 可以达成 Remove features with any overlap 的效果(第四行)。 使用方法: bedtools subtract [OPTIONS] -a <BED/GFF/VCF> -b <BE