- 博客(6)
- 收藏
- 关注
原创 最短路--练习
dijkstra算法(到一点的最短路)void dijkstra(int s){ //到s点的最短路 for(int i=1;i<=n;i++){ dis[i]=a[s][i]; //先记录每个点到s的距离 } vis[s]=1; dis[s]=0; for(int i=0;i<n;i++){ //找到n个点到s的最短距离 int flag=-1,Min=Inf; fo
2020-07-29 21:05:23
419
原创 序列DP常见问题
最大子序列和HUD1003s是该序列从头到尾逐个相加的和,每次与最大值相比较并且更新最大值和记录结束的位置,然后如果s<0,那么可以更新起始位置,并且s归0.#include<stdio.h>int a[100005],t,n,nu=0;int main(){ scanf("%d",&t); while(t--){ nu++; scanf("%d",&n); for(int i=0;i<n;i+
2020-07-17 12:09:07
365
原创 简单搜索练习
POJ1312棋盘问题 (DFS)#include<stdio.h>#include<string.h>int n,k,a[10][10],vis[10][10],t;bool check(int x,int y){ for(int i=0;i<n;i++){ if(vis[i][y]){return false;} } for(int j=0;j<n;j++){ if(vis[x][j]){return f
2020-07-17 10:31:21
202
原创 二维单调队列--题目练习
二维单调队列分为两个部分:1、在a[i][j]中对于每一行,找到每一个数从这个数到前k个数的最大值,记录为b[i][j];2、在b[i][j]中对于每一列,找到每一个数从这个数到前k个数的最大值,这个数就是b[i][j]2020牛客暑期多校训练营(第二场)F-Fake Maxpooling...
2020-07-15 22:00:43
289
原创 大数加减乘除
大数加法从低位到高位对每一位计算,(两者相加+进位)%10为该位的值,(两者相加+进位)/10为下一步的进位。【注意】所有位数加完之后要注意还有没有进位。void add(){ clen=0; memset(c,0,sizeof(c)); int x=0,temp; for(int i=0;i<len;i++){ temp=a[i]+b[i]+x; c[clen++]=temp%10; x=temp/10; } if(x){ c[clen++]=x; } }大数
2020-07-12 20:00:27
85
原创 HDU1158 Employment Planning(DP)
链接: HDU1158题目大意是:每个月解雇或雇佣一些员工,每次雇佣或解雇一名员工时,将会有一些额外的成本,要求每个月雇佣或解雇多少工人能让成本最低。题目会告诉每个月最少工人数和雇佣和解雇一个工人的花费。先求出所有月份中需要的最多的人工数,记作Max。因为是求最低成本所以每月雇佣的人数p[i]<=Max.h:雇佣的成本 s:工资 f:解雇的钱如果p[i]>=p[i-1] 当月花费为: 上个月的花费+h*(p[i]-p[i-1])+s*p[i];如果p[i]<
2020-07-11 20:50:23
131
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人