
dfs
二分抄代码
去了18ec没资格去19ec的反向训练选手
展开
-
gym102835B Make Numbers
https://codeforces.com/gym/102835/problem/B当年高一24点写了200多行直到大三暑假我才学会vector传参进函数,前几周看别人cf代码学会了next_permutation,上次天梯赛学会了map可以映射vector这种题就随便写了#include<bits/stdc++.h>using namespace std;#define pb push_back const int maxl=1e5+10; int n,ans;原创 2020-12-02 22:28:33 · 359 阅读 · 0 评论 -
gym102460I The Spectrum 2019ICPC Taipei
https://codeforces.com/gym/102460曾今OI时期还是搜索king,打了acm以后没有搜索骗分了,弱智搜索题都不会写了dfs(k,l,r)表示每次取出一个剩下还没确定最大的差值num[k],当前已经确定了1-l和r-n的值,且这些数之间两两只差都已经算过了,那么剩下的最大值一定是a[r-1]-a[1]或者a[n]-a[l+1],那么这个搜索的最坏复杂度就是2^62次方的,但是这题是要输出所有方案的,说明合法方案其实并不多,所以可以加一些剪枝优化。首先考虑如果当前已经确原创 2020-09-11 14:26:03 · 248 阅读 · 0 评论 -
fzu2321 竞赛图 2020福州大学校赛重现
http://acm.fzu.edu.cn/problem.php?pid=2321竞赛图中如果存在环,那么肯定存在三元环,手画一下四元环,发现只有四元环没有三元环是不可能的然后说明必须是DAG,那么DAG一定可以知道每个人的排名,那么我们dfs这个排名,然后去拓扑排序一下,每个点rudu没有归零说明这些边需要反过来,然后记录一下最小值就好#include<cstdio>#include<algorithm>#include<vector>#defin原创 2020-08-23 21:28:25 · 237 阅读 · 0 评论 -
codeforces1394B Boboniu Walks on Graph
https://codeforces.com/contest/1394/problem/B我们知道对于C的任意一组选择,最后每个点都只有一个出度,然而这题要保证最后所有点可以走到自己,那么这等价于每个点都只有一个出度和一个入度。然后我们枚举每条边(u,v,l),把{out[u],rank(l)}给v,表示如果最后选择为c[out[u]]=rank(l),那么v这个点将会多一个入度,显然对于一个点v,所有这些选择之间必须选择一个,但不能选择多个,因为必须保证入度为1,所以他们是互斥了,用一个set表示原创 2020-08-13 00:41:30 · 304 阅读 · 0 评论 -
hdu6797 1007 Tokitsukaze and Rescue 2020杭电hdu多校第3场
这题k=5。。。所以直接dfs下去,每次spfa跑出一条最短路,然后枚举哪条边被删,然后dfs下一层就行了由于随机数据,所以每一层的最短路不会很长,spfa也可能比dijstra快,所以复杂度不会达到50^5这个上限#include<bits/stdc++.h>using namespace std;const int maxl=60;const int inf=2e9+10;int n,k,ans;int frm[maxl],dis[maxl];int f[max原创 2020-07-28 17:03:51 · 1442 阅读 · 0 评论 -
E - M‘s Solution atcoder M-SOLUTIONS Programming Contest 2020
https://atcoder.jp/contests/m-solutions2020/tasks/m_solutions2020_e考虑一个点,要么被x覆盖,要么被y覆盖,要么没被覆盖,所以我们只需要枚举每个点的3个状态就行了。因为要覆盖一个点只需要一条铁路,至于新增的那条怎么影响其他点不用管,因为其他点的情况也被枚举了,所以其实一个点是被横的覆盖,他也有可能被其他点的竖的覆盖了,但对求答案无所谓比赛的时候再判断函数里面排序加滑动窗口求答案3^n*nlogn TLE了,赛后加了个2^n*nlo原创 2020-07-25 23:56:07 · 240 阅读 · 0 评论 -
2019上海网络赛 D Counting Sequences I
https://nanti.jisuanke.com/t/41412分享一下打表程序首先从感觉上讲,数字大小每个数字的大小应该不超过2n(其实好像不超过n),然后我们从大到小开始枚举数字,整个a数组是一个不递增序列,这样可以只枚举出集合的划分情况,而不枚举出顺序,最后再用 n! / 每个数字内部交换的cnt ! 就是有顺序的答案。然后考虑剪枝,如果当前数字是mx,且 左边和l <...原创 2019-09-16 08:58:34 · 201 阅读 · 1 评论 -
ccpc2016杭州D题HDU5937
upd:这篇是17年写的博客,结果后来18年出成月赛于是把这篇删了,现在还原又变成最新发布时间了。。。。传送门:http://acm.hdu.edu.cn/showproblem.php?pid=5937一开始认为是网络流,1边是1-9,另一边是1+1=2 1+2=3,但如何限制3个流量满流到右边才能对答案贡献为1?完全想不出,以为是个神建模。之前认为D是搜索,然后队友说不可能这个也是搜索...原创 2019-08-15 19:03:23 · 181 阅读 · 0 评论 -
2019牛客多校第二场 F
题目链接:https://ac.nowcoder.com/acm/contest/882/F队友一开始读错题了,费用流半天。结果一发搜索过了,加了一些优化剪枝。结果题解比我的还暴力,我的代码跑了1.8s枚举每一个放在A组还是B组,然后可行性剪枝,后面还没安排的的所有放在A(B)组还不够n,return最优化剪枝,当前状态总价值是w,sum[i]为v[i][1...n]的和,如果w+...原创 2019-07-21 16:05:47 · 286 阅读 · 0 评论 -
G - Sticks HDU - 1455 POJ1011
当年林会东给我们的爆炸J题,好像用了一下午优化没过,最后超的题解,还是总结一下。3个剪枝。1.从大到小排序,那么错误的组合方式就会先排掉。2.每次选小棒组合按顺序选3.若上次的长度一样且没有被选,那么当前这根跳过。贴一发我高一在网上抄的源代码233#include <stdio.h>#include <string.h>const int Ma...原创 2017-07-28 22:18:44 · 283 阅读 · 0 评论 -
F - Twenty-four point CSU - 1600
给4个数,求24点。自己写的太丑,学习了swb大神的代码。每一次搜索把这一层产生的数字放进数组,传到下一层。正确姿势十分方便。#include<cstdio>#include<cstring>#define eps 1e-6using namespace std;int dcmp(double x) { if(x<-eps) return -...原创 2017-07-28 22:00:44 · 271 阅读 · 0 评论 -
B - 国庆出游 HihoCoder - 1041
大意是每条边走2遍,并且是否按给出的顺序访问某些城市,输出yes或no。一开始写了个TLE的傻逼搜索把每条边都走了两遍。关键在于,这是一棵树!2个点之间的路径唯一。还有一个重要的思想就是从1个点到另一个点时,其他不在那个顺序里的点就当顺路走掉了,不用考虑。于是就随那个顺序遍历就行。 #include<cstdio>#include<cstring>...原创 2017-07-28 20:55:50 · 1029 阅读 · 0 评论 -
牛客多校第七场C Bit Compression
考场上直接就想到处理最后2^4=16位,然后去爆搜,然而,当时觉得第一层要遍历所有数字,2^18,第二层2^17,跟本不敢写,以为复杂度趋近与2^18*3^10+左右,然而事实上。最后算出来竟然8*1e8,那我们再对最后16位搞个状压数字再记忆化一蛤,之后就只有2*1e8,我感觉常数一大还是不行,然而,我也不知道为撒只跑了400ms,那些没写记忆化的人,有些1000+ms也过了,没想到是一道暴力水...原创 2018-08-10 09:27:45 · 233 阅读 · 0 评论 -
ncpc2016 C Gym 101550C
首先想到4种颜色,不同的顺序,和上升下降,可以通过搜索枚举出来,然后知道当前这手牌的目标按dfs出的顺序的最终情况应该是多少。接下来就是一个巧妙的想法了,既然可以随便抽牌移动到任何地方,那么每次操作就一定插到最后的位置。那么不要动的牌就是那些本来相对位置就正确的牌了。而相对位置正确可以通过经典的lcs问题的二维DP解决,将最初情况和最终情况进行lcs,那么最长公共子序列就是相对位置正确的牌。答案就...原创 2018-04-14 18:42:10 · 372 阅读 · 0 评论 -
csu8月月赛,csuoj1978
此题一开始WA了很久,之前NOIP2015的时候DAY1T2也是类似的题目,然而那是无向图找最小环,于是可以到过的点不经过,这里是有向图找乘积最小环,所以到过的点还是要经过,但每条边走一次就行了,还有一个要注意的地方是,如果即将到达的位置也在队列里,首先是对这个环进行记录,然而还必须继续到这个点,因为可能存在联环和环套环的情况,所以一次要把所有可能形成的环找干净,然而其实如果一个点在队列里面多原创 2017-08-12 15:59:03 · 334 阅读 · 0 评论