洛谷
qcccc_
这个作者很懒,什么都没留下…
展开
-
P2770 航空路线问题
题目戳我 本题有一个套路,就是来回一个圈从a到b在到c可以看成从a到b和c,因为这题是网络流所以考虑建图,像这种网络流建图一个点只能通过一次的图,一般情况下都是要拆点的.然后拆点后就要考虑边的容量和cost的分布了,边的容量那么终点和起点都是2其他都是1,cost都为1,因为都是一个点,最后答案再减去2以为起点和终点都经过了两次。如果最后求得的流量是2,说明有两条路径,如果是1的话可能存在1直接到n这种情况,特判一下就好了,其余的都无法到达,具体看代码吧。 #include<iostream>原创 2020-08-05 16:37:10 · 645 阅读 · 0 评论 -
P2426 删数
题目链接 好久没有来水博客了,来水一道区间dp吧。这道题应该不难看出是区间dp,而且很简单,所以我就拿来水一篇博客. #include<iostream> #include<stdio.h> #include<math.h> #include<string.h> #include<string> #include<vector> #include<queue> #include<algorithm> #inc原创 2020-08-02 11:34:08 · 162 阅读 · 0 评论 -
P1537 弹珠(多重背包问题)
很简单的一个题,只是我最近很少自己写出来过题。自己写出了个dp题很爽,所以写篇博客。 就贴个代码算了,明天还有大事 #include<iostream> #include<stdio.h> #include<math.h> #include<string.h> #include<string> #include<vector> #include<queue> #include<algorithm> #incl.原创 2020-07-30 20:38:57 · 181 阅读 · 0 评论 -
P1412 经营与开发(多重背包二进制写法,单调队列待补)
题目戳我 为什么可以用二进制写这种题呢?因为二进制可以表示任何一个数。 先给一个二级制拆分的模板 for(int i=1;i<=n;i++) { for(int j=1;j<=a[i].m;j<<=1)//j表示这次拆分的个数 { a[i].m-=j;//减去拆了的数量 b[++tot].v=j*a[i].v;//重新分配后新物品的价值 b[tot].w=j*a[i原创 2020-07-29 11:29:21 · 96 阅读 · 0 评论 -
P1523 旅行商简化版
题目戳我 中文题且好理解,但是不好做,烦!!! 看了题解才知道,从西走到东和从东走到西可以看成从西往两个方向走到西,当我们走到一个点要去另外一个点的时候很自然的想到了dp,因为从这个点走到另外一个点无非是从两条路中选一条走,dp[i][j]代表第一条路走到了i,第二条路走到了j,规定j>i,那么就可以得到转移方程: dp[i][j+1]=min(dp[i][j+1],dp[i][j]+dis(j,j+1));//从最长的那条路走到j+1 dp[j][j+1]=min(dp[j][j+1],dp原创 2020-07-29 10:03:30 · 95 阅读 · 0 评论 -
P4568 [JLOI2011]飞行路线
题目链接 本题呢和以前最短路一毛一样,难就难在了建边,说实话我知道是分层图也不怎么会写,我还是太菜了,建图看一下代码应该就会了,最短路就是板子也不说了,我想吐槽的是这一题可以不用用到k次就可以到达终点,而且这个数据还很毒瘤。解决方法就是把终点的每一层都连起来。 #include<iostream> #include<stdio.h> #include<math.h> #include<string.h> #include<string> #in原创 2020-07-23 10:49:03 · 115 阅读 · 0 评论