摘要:
题目大意: 两个字符串,可以再中间任何插入空格,然后让这两个串匹配,字符与字符之间的匹配有各自的分数,求最大分数 最长公共子序列模型。 dp[i][j]表示当考虑吧串1的第i个字符和串2的第j个字符时,当前的最大分数,当前有3中可能, 1,i与j直接匹配,那么这个状态是由dp[i-1][j-1]转移 阅读全文
摘要:
题目大意: 两个字符串,可以再中间任何插入空格,然后让这两个串匹配,字符与字符之间的匹配有各自的分数,求最大分数 最长公共子序列模型。 dp[i][j]表示当考虑吧串1的第i个字符和串2的第j个字符时,当前的最大分数,当前有3中可能, 1,i与j直接匹配,那么这个状态是由dp[i-1][j-1]转移 阅读全文
摘要:
数学题 在f(x)和g(x)的系数里找到第一个不是p的倍数的数,然后相加就是答案 为什么? 设x1为f(x)中第一个不是p的倍数的系数,x2为g(x)...... x1+x2前的系数为(a[x1+x2]*b[0]+a[x1+x2-1]*b[1]..)+a[x1]*b[x2]+(.....a[0]*b 阅读全文
摘要:
高精度阶乘 #include<iostream> #include<string.h> using namespace std; int main(){ int n,A[100000]; cin>>n; memset(A,0,sizeof(A)); A[0] = 1; int bit = 0; fo 阅读全文
摘要:
https://blog.csdn.net/w_udixixi/article/details/104479288 大意:n个数,每个数只能向上加,a[i]+1需要的时间是t[i],求使这n个数无重复数字的最少时间。 题解:并查集+贪心。怎么用并查集呢?当一个数第一次出现时,将x和x+1连起来,当我 阅读全文
摘要:
最长上升子序列o(nlongn)写法 dp[1]=a[1]; int len=1; for(int i=1;i<=n;i++){ if(a[i]>dp[len]) dp[++len]=a[i]; else *lower_bound(dp+1,dp+1+len,a[i])=a[i]; } 数组dp[l 阅读全文
摘要:
用二位数组dp[i][j]记录组数为i,前j个数字的最大子段和。 转移方程dp[i][j]=min(dp[i][j-1],dp[i-1][k])+arr[j],方程表示的是考虑到第j个数,可以把它直接加入到第i组,也可以作为第i组的开头,如果作为第i组的开头,就要考虑第i-1组该以哪个数结尾。直接枚 阅读全文
摘要:
详细解析 树状数组可以解决查询前缀和/区间和问题。 模板(单点修改) int lowbit(int i) { return i & -i;//或者是return i-(i&(i-1));表示求数组下标二进制的非0最低位所表示的值 } void add(int i,int val)//更新单节点的值 阅读全文
摘要:
题意: a<=b<=c 输出A,B,C要求B是A的倍数,C是B的倍数,并且输出a,b,c变成A,B,C需要的最小次数。 题解:写了半天的二分,后来发现思路错了,,,暴力就能过。。 三层for,第二层是第一层的倍数,第三层是第二层的倍数。。。。 #include<bits/stdc++.h> usin 阅读全文
摘要:
题目大意:n个高楼,每个楼最高为mi,要求,第i个楼左边和右边不能有同时比它高的楼。让你求最在n个楼总和最高的情况下,每个楼的高度。 题解:用单调栈来做,n个楼的高度要么是单调递减,要么是单调递增,要么就是先曾后减,就这3种情况,其他的不可能。 维护一个单调非递减的栈,并且维护一个数组ans[],第 阅读全文
摘要:
题解:https://blog.csdn.net/qq_40655981/article/details/104459253 题目大意:n个房间,,每个房间都有一个人,一共k天,在一天,一个人可以到任何一个房间。问n个房间一共有多少个状态。 每个人最多能选择n-1个房间,如果k>=n-1,那么结果就 阅读全文
|