csp
清汤芥末面
这个作者很懒,什么都没留下…
展开
-
900. 整数划分
添加链接描述完全背包问题,背包容量为n,dp[i][j]为前i个数恰好组成j的数量。做这道题时候,我在想恰好装满和不装满有什么区别。考虑背包问题,如果背包要求恰好装满,与之前的区别是初始化的时候,dp[0]=0,其余的都初始化为-INF,二维的话dp[0][0]为0,其余为-INF,意思是让其非法,0个物品0个空间正好装满,0个物品j个空间没装满,某一个状态只能从上一个合法状态转移过来,即不为-INF。#include<bits/stdc++.h>#define ll long long原创 2022-03-27 09:56:15 · 147 阅读 · 0 评论 -
282. 石子合并
添加链接描述区间dp,dp[i][j]为i到j最小代价,枚举区间长度。#include<bits/stdc++.h>using namespace std;const int maxn=302,INF=0x3f;int dp[maxn][maxn],a[maxn],s[maxn];int main(){ int n; cin>>n; memset(dp,INF,sizeof(dp)); for(int i=1;i<=n;i++)原创 2022-03-26 20:30:35 · 203 阅读 · 0 评论 -
899. 编辑距离
添加链接描述#include<bits/stdc++.h>using namespace std;const int maxn=1e3+5,INF=0x3f;int dp[15][15];char a[maxn][15], b[15];int check(char s[],int q){ memset(dp,INF,sizeof(dp)); for(int j=0;j<=strlen(b+1);j++) dp[0][j]=j; for(原创 2022-03-26 20:19:09 · 215 阅读 · 0 评论 -
AcWing 902. 最短编辑距离
添加链接描述#include<bits/stdc++.h>using namespace std;const int maxn=1e3+5,INF=0x3f;int dp[maxn][maxn];char a[maxn],b[maxn];int main(){ int n,m; cin>>n>>a+1>>m>>b+1; memset(dp,INF,sizeof(dp)); for(int i=0;i&.原创 2022-03-26 17:16:50 · 53 阅读 · 0 评论 -
常见的DP问题
acwing算法课数字三角形添加链接描述#include<bits/stdc++.h>using namespace std;const int maxn=505,INF=0x3f;int a[maxn][maxn],dp[maxn][maxn];int main(){ int n; cin>>n; for(int i=1;i<=n;i++) for(int j=1;j<=i;j++) cin>原创 2022-03-23 17:47:03 · 148 阅读 · 0 评论 -
202006-3 Markdown渲染器
60分#include<bits/stdc++.h>using namespace std;const int N=1e5+5,INF=1e9;int w,f,in;//0 空行 1 段落 2 项目列表vector<string>a;int flag[N];int check(string str){ for(int i=0;i<str.length();i++) if(str[i]!=' ') return 1;原创 2022-03-19 20:41:19 · 577 阅读 · 0 评论 -
202009-3 点亮数字人生
60分#include<bits/stdc++.h>#define ll long long#define ios ios::sync_with_stdio(false);cin.tie(0); cout.tie(0);using namespace std;const int M=1e4+2,N=3005;struct node{ string name; int output; vector<int>input;}a[N];int Q,m原创 2022-03-18 19:52:16 · 279 阅读 · 0 评论 -
202104-3 DHCP服务器
#include<bits/stdc++.h>#define ll long long#define ios ios::sync_with_stdio(false);cin.tie(0); cout.tie(0);using namespace std;const int M=1e5+2;int N,Tdef,Tmax,Tmin,n;string H;struct IP{ string occpy; int state;//0 未分配、1 待分配、2 占用、3 过原创 2022-03-18 10:38:28 · 235 阅读 · 0 评论 -
202109-3 脉冲神经网络
66分。。。可能得用链式前向星自己写的空间不够,看网上的用滚动数组超时了,用vector写的。#include<bits/stdc++.h>#define ll long long#define ios ios::sync_with_stdio(false);cin.tie(0); cout.tie(0);using namespace std;const int N=1024,M=2e3+2;struct node{ double a,b,c,d;}s[M];dou原创 2022-03-17 21:05:56 · 1116 阅读 · 0 评论 -
202109-2 非零段划分
山峰模型#include<bits/stdc++.h>#define ll long long#define ios ios::sync_with_stdio(false);cin.tie(0); cout.tie(0);using namespace std;const int N=5e5+5,M=1e4+2;int a[N],cnt[M];int main(){ int n; cin>>n; for(int i=1;i<=n;i++)原创 2022-03-16 17:57:50 · 145 阅读 · 0 评论 -
201712-3 Crontab
#include<bits/stdc++.h>#define ll long long#define ios ios::sync_with_stdio(false);cin.tie(0); cout.tie(0);using namespace std;int months[]={0,31,28,31,30,31,30,31,31,30,31,30,31};unordered_map<string,int>res;struct Time{ int year,mo原创 2022-03-16 16:18:42 · 119 阅读 · 0 评论 -
201709-3 JSON查询
#include<bits/stdc++.h>#define ll long long#define x first#define y second#define ios ios::sync_with_stdio(false);cin.tie(0); cout.tie(0);using namespace std;int n,m;string str;struct node{ int type;//1 string 2 obj string t; nod原创 2022-03-14 11:12:05 · 2185 阅读 · 0 评论 -
201803-4 棋局评估
最大最小搜素#include<bits/stdc++.h>#define ll long long#define ios ios::sync_with_stdio(false);cin.tie(0); cout.tie(0);using namespace std;const int inf=1e9;int a[3][3];bool check(int x){ for(int i=0;i<3;i++) { if(a[i][0]==x&原创 2022-03-12 16:36:47 · 108 阅读 · 0 评论 -
201712-4 行车路线
最短路的变形在更新节点最短路的时候,记录上一个节点连续走过小道的长度,然后根据当前道路分类讨论即可。#include<bits/stdc++.h>#define ll long long#define ios ios::sync_with_stdio(false);cin.tie(0); cout.tie(0);using namespace std;const int N=1e5+5;int n,m,d[505],vis[505],last[505],INF=0x3f;stru原创 2022-03-11 10:24:19 · 80 阅读 · 0 评论 -
201703-3 Markdown
#include<bits/stdc++.h>#define ll long longusing namespace std;const int maxn=1e2+5,INF=0x3f;string line;vector<string> a,b,strs;int f=0;//1 段落 2 标题 3 无序列表void em(string &s){ int cur=0,cur1=0; while(cur1<s.length())原创 2022-03-11 08:53:06 · 105 阅读 · 0 评论 -
201612-4 压缩编码
区间DP,前缀编码想到哈夫曼树,但是题中有个条件,必须按照字典序进行排列,我们从1到n枚举边界s,边界s左侧的都小于s,边界右侧的都大于s,在边界的两侧做哈夫曼树,两个子问题不相关,dp问题,其实不太好想,咱们可以想就两个点的情况,左侧一定小于右侧,这样递推出来一定能得到字典序。#include<bits/stdc++.h>#define ll long longusing namespace std;const int N=1e3+5,INF=1e9;int n,dp[N][N],s原创 2022-03-09 16:17:33 · 85 阅读 · 0 评论 -
201612-3 权限查询
#include<bits/stdc++.h>#define ll long longusing namespace std;int p,r,u,num,q,mx=-1,mxx;map<string,vector<string>>role,user;map<string,int>recond;int judge(string s,string s1){ auto it=s.find(":"),its=s1.find(":"); i原创 2022-03-09 14:25:30 · 65 阅读 · 0 评论 -
201609-4 交通规划
最短路问题,迪杰斯特拉,只不过判断最短距离时将等于情况也纳入进来,因为有可能到1号点的距离有好几个最小值,选择到上一个点距离最小的那个,因为前面的点都已经建好高铁了,从哪个点都可以到,选择距离最小的,开一个数组保存每一个点连接上一个点的最小距离,每次开头加上距离。#include<bits/stdc++.h>#define ll long longusing namespace std;const int maxn=1e5+6,mod=1e9+7,INF=0x7f;int ans,n,原创 2022-03-08 16:13:07 · 100 阅读 · 0 评论 -
201604-4 游戏
bfs,因为题目说了一定能到,并且不能原地等待,所以我们可以将危险的块也加进去,只不过时间改成危险的块结束的时间,危险的块一定能走的,如果某一个块被危险的块围起来了,此时不能走,与题意不符,只不过几个快来回走。队列改成优先队列即可。#include<bits/stdc++.h>#define ll long longusing namespace std;const int N=105,M=1e5+5,INF=0x3f;int n,m,t,a[N][N],b[N][N],vis[N][原创 2022-03-07 16:42:43 · 3740 阅读 · 0 评论 -
201604-3 路径解析
1.遇到字符串题应该先预处理,而不是一边操作一边处理。2.可以用vector代替堆栈,会方便很多。3.函数直接返回vector#include<bits/stdc++.h>#define x first#define y second#define ll long longusing namespace std;const int N=15,M=1e5+5,INF=0x3f;int n;string s[N];queue<string>e;void check原创 2022-03-07 11:16:43 · 52 阅读 · 0 评论 -
201512-4 送货
欧拉回路问题。如果图G(有向图或者无向图)中所有边一次仅且一次行遍所有顶点的通路称作欧拉通路。如果图G中所有边一次仅且一次行遍所有顶点的回路称作欧拉回路。具有欧拉回路的图称为欧拉图(简称E图)。具有欧拉通路但不具有欧拉回路的图称为半欧拉图。无向图G存在欧拉通路的充要条件是:G为连通图,并且G仅有两个奇度结点(度数为奇数的顶点)或者无奇度结点。当G是仅有两个奇度结点的连通图时,G的欧拉通路必以此两个结点为端点。当G是无奇度结点的连通图时,G必有欧拉回路。G为欧拉图(存在欧拉回路)的充分必要条件原创 2022-03-05 18:55:16 · 125 阅读 · 0 评论 -
201512-3 画图
这道题主要是数组坐标系转化为数字坐标系,数组坐标系逆时针旋转90°即为数字坐标系,输出的话y坐标逆序输出,x坐标正序输出。然后就是一个dfs填充。#include<bits/stdc++.h>#define ll long longusing namespace std;const int maxn=105,INF=0x3f;int n,m,q,vis[maxn][maxn],dx[]={-1,0,1,0},dy[]={0,1,0,-1};char a[maxn][maxn];vo原创 2022-03-05 16:28:29 · 111 阅读 · 0 评论 -
201509-4 高速公路
60分dfs#include<bits/stdc++.h>#define ll long longusing namespace std;const int maxn=1e3+5,INF=0x3f;int n,m,a[maxn][maxn],vis[maxn],x;vector<int>g[maxn];void dfs(int u){ for(int i=0;i<g[u].size();i++) { int to=g[u][i];原创 2022-03-05 10:11:38 · 138 阅读 · 0 评论 -
201509-3 模板生成系统
90分代码,用string自带的函数会超时。#include<bits/stdc++.h>#define ll long longusing namespace std;const int maxn=1e2+5,INF=0x3f;string s[maxn];int main(){ int n,m; cin>>m>>n; getchar(); for(int i=0;i<m;i++) {原创 2022-03-05 09:53:18 · 49 阅读 · 0 评论 -
201503-4 网络延时
树的直径。板子#include<bits/stdc++.h>using namespace std;vector<int>edge[100005];int vis[100005];int dis[100005];void dfs(int st){ for(int i=0;i<edge[st].size();i++) { int to=edge[st][i]; if(!vis[to]) {原创 2022-03-04 20:50:31 · 119 阅读 · 0 评论 -
201503-3 节日
板子#include<bits/stdc++.h>#define ll long longusing namespace std;const int maxn=3e3+5,INF=0x3f;int months[]={0,31,28,31,30,31,30,31,31,30,31,30,31};int judge(int y){ if(y%400==0||(y%4==0&&y%100!=0)) return 1; return 0;原创 2022-03-04 13:03:35 · 52 阅读 · 0 评论 -
201403-4 无线网络
BFS+DPBFS求最短路#include<bits/stdc++.h>#define x first#define y second#define ll long longusing namespace std;const int maxn=1e3+5,INF=0x3f;typedef pair<ll,ll>PPI;PPI a[maxn];double compute(PPI s1,PPI s2){ return (s1.x-s2.x)*(s1.x-s原创 2022-03-02 15:34:34 · 51 阅读 · 0 评论 -
201409-4 最优配餐
多源最短路问题,刚开始我每个起点做BFS,会超时,增加一个超级源点即可。#include<bits/stdc++.h>#define x first#define y second#define ll long longusing namespace std;typedef pair<int,int>PII;const int maxn=1e3+3,INF=0x3f;int n,m,k,s,a[maxn][maxn],d[maxn][maxn],vis[maxn][m原创 2022-03-02 15:06:18 · 199 阅读 · 0 评论