搜索-dfs
Nemaleswang
ACM退役狗一只
展开
-
codevs 1008 选数
题目链接:选数 题意很简单,给你n个数,从中选出k个数,问k个数的和为素数的情况有多少种,因为n的范围是20,所以很容易的想到深搜,然后只需要判断当前位置的数取还是不取就可以了,具体看代码#include using namespace std;int n,k,a[25],cot;bool isprime(int s){ for(int i = 2;i*i <原创 2017-04-06 15:21:53 · 714 阅读 · 0 评论 -
Educational Codeforces Round 36
题目链接: Educational Codeforces Round 36 A. Garden 题目大意:有n个浇水长度为a[i]的浇水壶和一个长度为m的,现在只能选一个水壶,并且水壶浇水不能交叉,不能超出花园长度,问最小需要用这个水壶浇多少次题目思路:题目转化为找出最大的并且存在n个数里面的m的因子,直接找就好了#include <map>#include <...原创 2018-01-17 18:13:37 · 261 阅读 · 0 评论 -
2016-2017 ACM-ICPC CHINA-Final
题目链接:A题题目大意:问有多少个小于2n2^n的形式是2k−12^{k}-1的能整除7的数字的个数题目思路:7的二进制是111,而2k−12^{k}-1的二进制是k个1,所以只需要k能被3整除就好了#include <map>#include <set>#include <cmath>#include <queue>#include <stack>#include <vector>#i原创 2017-11-22 17:33:46 · 1261 阅读 · 1 评论 -
codeforces Educational Codeforces Round 32 E. Maximum Subsequence
题目链接:Maximum Subsequence题目大意:给你n个数,现在需要你从这n个数里面选一些数出来使得这些数的和对m求余后得到的数最大,问这个能得到的最大的数题目思路:n最大为35,直接搜肯定是要炸的,所以我们可以折半搜索一下,然后两边得到的数二分去找一下最大的数就可以了,复杂度为2(n/2)log(n/2)2^{(n/2)}log(n/2)#include <map>#include原创 2017-11-20 20:00:24 · 277 阅读 · 0 评论 -
hdoj 6060(2017 Multi-University Training Contest - Team 3) RXD and dividing
题目链接:RXD and dividing题目大意:有n-1个数2到n,现在需要你去切分这n-1个数为k个区间,区间可以为空,给出n-1条边,有边权,使得这些点组成一棵树,现在要你去算你分的每个区间的贡献,res res=∑ki=1f({1}⋃Si)res = \sum_{i = 1}^{k}{f(\{1\}\bigcup S_i)} f代表要使得所有的点都能直接或者间接相连,问需要那些边的边权原创 2017-09-09 21:06:02 · 218 阅读 · 0 评论 -
hdoj 5971 Wrestling Match
题目链接:Wrestling Match题目大意:现在有N个人,M个对立的关系,有X个已知的好人,Y个已知的坏人,问能不能把所有的人都分成两堆某一堆里面,并且所有的限制条件都成立题目思路:题意真傻逼,完全是猜题意,先把所有跟好人对立和坏人对立的关系全部扔出来,然后对还没有分到某一个阵营的枚举好人或者坏人两种情况,最后看有没有都对立或者还没有分到某一个阵营的人就好了#include <map>#i原创 2017-09-15 20:57:30 · 285 阅读 · 0 评论 -
hdoj 5952 Counting Cliques
题目链接:Counting Cliques题目大意:给你一张n个点,m条边的无向图,问尺寸为s的完全图有多少个,尺寸即为这张完全图有多少个点,完全图是值每两点之间都有边题目思路:这题吃时间吃的比较紧,想法还是很简单,从某一个点开始dfs,然后每次去dfs与他相连的边,然后如果这个边与之前已经存在完全图里面的边都相连的话(这个用邻接矩阵去判断),这道题最主要的地方是优化,我们可以从1开始遍历比他大的点原创 2017-08-21 16:47:35 · 237 阅读 · 0 评论 -
Educational Codeforces Round 5 C - The Labyrinth
题目链接:The Labyrinth题目大意:给你一张图,里面只有”“和“.”两种符号,然后叫你去看”“附近有多少个”.”并加上一,既是找周围与这个”“联通的”.”有多少个,并把这个”“变成那个值加一,”.”保持不变题目思路:首先我们考虑写普通做法,既找到一个”“然后就开始搜,我们发现数据范围为1000*1000,那么可见直接爆搜是不行的,所以我们可以预先保存一下每个联通块里面”.”的数量,然后直接原创 2017-07-11 23:01:35 · 284 阅读 · 0 评论 -
hdoj 1241 Oil Deposits
题目链接:Oil Deposits题目大意:#是油田,可以搜索八个方向能够到的#都是一块油田,问一共有几块油田题目思路:dfs套路题,直接按照题目内容写就可以了#include using namespace std;int n,m;char mp[105][105];int dir[8][2] = {{0,1},{0,-1},{1,0},{-1,0},{1原创 2017-04-25 18:19:12 · 309 阅读 · 0 评论 -
fjutoj 2574 宝藏
题目链接:宝藏题目大意:给你一个n,k,tk,代表有n个房间,k条路,最大限制时间为tk,然后给你k条边并且给出边权,边权代表的是两个房间之间需要的时间,然后每个房间有一个点权,房间不能重复访问,问你在限定的时间里能得到的最大价值为多少题目思路:直接建图,可以用vector >这种东西存,因为还有边权嘛,然后dfs一下就可以了#include using namespa原创 2017-05-05 22:33:57 · 490 阅读 · 0 评论 -
poj 1321 棋盘问题
题目链接:棋盘问题题目大意:给你一个n*n的棋盘,然后有#和.两种状态,#代表棋盘,.代表空白,现在要求你在棋盘上下k颗棋子并且这k颗棋子没有在同一列的,问你一共有多少种情况题目思路:数据不大,直接dfs就可以了,dfs里面存两个值,一个是行数,一个是当前放了多少棋子,具体看代码#include #include #include #include #inclu原创 2017-04-23 17:22:11 · 335 阅读 · 0 评论 -
tyvj 1080 N皇后
题目链接:N皇后按字典序算N皇后的前三组数据和总共多少组数据,直接按照N皇后去搜就可以了#include using namespace std;int n,ind,ans[100005][15],cs;bool row[15],dia1[100005],dia2[100005];void dfs(int q){ if(q > cs){ ind++;原创 2017-04-16 17:18:33 · 573 阅读 · 0 评论 -
hdoj 2553 N皇后问题
题目链接:N皇后问题同样是一道很裸的N皇后问题,直接贴板子,不过需要注意的是这道题目可以存一个表扔进去,否则会超时#include using namespace std;int n,ind,ans[1500][100],cot[15];bool row[1200],dia1[2500],dia2[2500];void dfs(int q){ if(q > n){原创 2017-04-16 17:33:56 · 397 阅读 · 0 评论 -
九度OJ 1140 八皇后
题目链接:八皇后这道题目实际上就是八皇后的简单拓展,在简单的八皇后上变化了一下,要求你去保存每种方式的路径,所以在dfs里面需要一个二维的ans数组老保存每一次操作每一行的位置#include using namespace std;int n,ind,ans[96][10];bool row[12],dia1[25],dia2[25];void dfs(int q){原创 2017-04-16 16:52:09 · 458 阅读 · 0 评论 -
Leetcode 1161. Maximum Level Sum of a Binary Tree
题目链接:2. Add Two Numbers题目大意:给你由两个链表组成得数,链表上得每个位置得值代表一个位得值,例如3->8->4就代表483这个值,然后两个链表相加,返回结果。题目思路:简单题,每次相加得时候记录一次进位就可以了,只不过处理链表得时候比较麻烦,具体看代码吧时间复杂度&&空间复杂度:O(max(n,m))&&O(n+m)(n,m...原创 2019-08-17 11:49:22 · 172 阅读 · 0 评论