Kattis - glitchbot 【DFS】】的更多相关文章

Kattis - glitchbot [DFS] 题意 有一个机器人 刚开始在(0, 0),然后给出一个目标点,并且会给出一系列指令,但是其中会有一个指令是错误的.我们需要找出那个指令,并且改成正确的. 思路 因为数据范围比较小,我们可以把每条指令都改一下 暴力搜索一下,能不能走到目标点,如果改了,可以 那么 这就是答案 直接输出 break 掉就可以了 AC代码 #include <iostream> #include <cstdio> #include <algorith…
目录:1.潜伏者 [map] 2.Hankson的趣味题[数论]3.mayan游戏[dfs] 题目: 1. 潜伏者(spy.pas/c/cpp)[问题描述]R 国和S 国正陷入战火之中,双方都互派间谍,潜入对方内部,伺机行动.历经艰险后,潜伏于S 国的R 国间谍小C 终于摸清了S 国军用密码的编码规则:1. S 国军方内部欲发送的原信息经过加密后在网络上发送,原信息的内容与加密后所的内容均由大写字母‘A’—‘Z’构成(无空格等其他字母).2. S 国对于每个字母规定了对应的“密字”.加密的过程就…
Kattis - virus[字符串] 题意 有一个正常的DNA序列,然后被病毒破坏.病毒可以植入一段DNA序列,这段插入DNA序列是可以删除正常DNA序列中的一个连续片段的. 简单来说就是,给你一段字符串,然后这段字符串中插入一段,删掉一段.然后可以不插入,只删除.也可以只插入,不删除.但是 插入的只有一段,删除的也只有一段.也就是说 ATAA T 这组数据 删掉两边是不对的. 而且 插入的那段和删除的那段 必须是连着的. 也就是说 ATAT TATAA 这组数据 我们应该视为 删除了ATAT…
Kattis - honey[DP] 题意 有一只蜜蜂,在它的蜂房当中,蜂房是正六边形的,然后它要出去,但是它只能走N步,第N步的时候要回到起点,给出N, 求方案总数 思路 用DP 因为N == 14 所以 最多走7步 我们不妨设 (7, 7) 为原点,然后 dp[0][7][7] = 1 因为 N == 0 的时候 方案数只有一个 那就是 不动吧.. dp[i][j][k] i 代表第几步 j k 分别表示 目前的位置 一个点 在一张图里面本来有八个方向可以走 这里六边形 我们只取六个方向就可…
Kattis - fence2[二分法] 题意 有一个农夫需要建造一个 N - 1 米长的篱笆,需要 N 根柱子,然后有 K 根 柱子 需要将这 K 根柱子 切成 N 段 然后 要尽量保证这 N 段柱子的长度尽量长,并且这 N 段柱子的长度是相等的 然后求最少需要切几次.注意:柱子的长度可以是浮点数. 思路 用二分法找答案,然后再求和 不过要注意的是 ,如果柱子原来的长度与要分成的柱子的长度是可以整除的 那么切的刀数 就是 N/MAX - 1 AC代码 #include <iostream>…
Kattis - cokolada[水] 题意 有一个人想吃巧克力,但是巧克力都是按照 2 的幂次的数量包装的,然后他想吃一定数量块的巧克力,然后可以敲碎,每次敲碎都分成两半,比如四块装的分成两块就是二块和二块,但是只能买一块,求要买的那块的数量,和要敲几次 思路 因为数据比较小,可以先打一个 2 的幂次的表,然后二分查找最少的那个数量,然后每次都剪掉一半,然后往下找,直到减为0 就跳出 然后用 大的减最小的那个数 就可以了 AC代码 #include <iostream> #include…
Kattis - amsterdamdistance[数学] 题意 给出两个点 算出从第一个点到第二个点的最短距离,只不过这里不是直角坐标系, 是雷达图 思路 因为内圈的圆的路径要比外圈的小,所以我们要尽可能先往内圈走,加一个判断条件 走到哪里就好了 AC代码 #include <iostream> #include <cstdio> #include <algorithm> #include <cmath> #include <deque> #…
度度熊的01世界 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1117    Accepted Submission(s): 400 Problem Description 度度熊是一个喜欢计算机的孩子,在计算机的世界中,所有事物实际上都只由0和1组成. 现在给你一个n*m的图像,你需要分辨他究竟是0,还是1,或者两者均不是. 图像0…
题目描述 在峰会期间,武装部队得处于高度戒备.警察将监视每一条大街,军队将保卫建筑物,领空将布满了F-2003飞机.此外,巡洋船只和舰队将被派去保护海岸线.不幸的是因为种种原因,国防海军部仅有很少的几位军官能指挥大型海战.因此,他们考虑培养一些新的海军指挥官,他们选择了“海战”游戏来帮助学习. 在这个著名的游戏中,在一个方形的盘上放置了固定数量和形状的船只,每只船却不能碰到其它的船.在这个题中,我们仅考虑船是方形的,所有的船只都是由图形组成的方形.编写程序求出该棋盘上放置的船只的总数. 输入输出…
1441:[例题2]生日蛋搞 [题目描述] 7月17日是Mr.W的生日,ACM-THU为此要制作一个体积为Nπ的M层生日蛋糕,每层都是一个圆柱体.设从下往上数第i(1≤i≤M)层蛋糕是半径为Ri, 高度为Hi的圆柱.当i<M时,要求Ri>Ri+1且Hi>Hi+1.由于要在蛋糕上抹奶油,为尽可能节约经费,我们希望蛋糕外表面(最下一层的下底面除外)的面积Q最小. 令Q=Sπ,请编程对给出的N和M,找出蛋糕的制作方案(适当的Ri和Hi的值),使S最小. (除Q外,以上所有数据皆为正整数) [输…
1212:LETTERS [题目描述] 给出一个roe×colroe×col的大写字母矩阵,一开始的位置为左上角,你可以向上下左右四个方向移动,并且不能移向曾经经过的字母.问最多可以经过几个字母. [输入] 第一行,输入字母矩阵行数RR和列数SS,1≤R,S≤201≤R,S≤20. 接着输出RR行SS列字母矩阵. [输出] 最多能走过的不同字母的个数. [输入样例] 3 6 HFDFFB AJHGDH DGAGEH [输出样例] 6 错误原因: 把控制4个方向的数组dx,dy里的值赋值时,把0,…
题目背景 迷宫 [问题描述] 给定一个N*M方格的迷宫,迷宫里有T处障碍,障碍处不可通过.给定起点坐标和 终点坐标,问: 每个方格最多经过1次,有多少种从起点坐标到终点坐标的方案.在迷宫 中移动有上下左右四种方式,每次只能移动一个方格.数据保证起点上没有障碍. 输入样例 输出样例 [数据规模] 1≤N,M≤5 题目描述 输入输出格式 输入格式: [输入] 第一行N.M和T,N为行,M为列,T为障碍总数.第二行起点坐标SX,SY,终点 坐标FX,FY.接下来T行,每行为障碍点的坐标. 输出格式:…
[题目大意] 农夫约翰有N(1≤N≤1000)头奶牛,每一头奶牛都有一个确定的独一无二的正整数产奶率.约翰想要让这些奶牛按产奶率从高到低排序,约翰已经比较了M(1≤M≤10000)对奶牛的产奶率,但他发现,他还需要再做一张关于另外C对奶牛的产奶率比较,才能推断出所有奶牛的产奶率排序.请帮他确定C的最小值. [思路] 对于M对关系,从产奶率高的往产奶率低的连一条有向边.对于每个节点i,它能抵达的节点的总数即是能比较得出的比它小的奶牛总数. 由于原本总共有N*(N-1)/2对关系,ans=N*(N-…
[题目大意] 给出一棵树,求三个节点使得它们两两之间的距离相等,问共有多少种可能性? [思路] 显然,这三个节点是关于一个中心点对称地辐射出去的. 枚举中心点,往它的各个子树跑Dfs.tmp[i]表示当前子树深度为i的节点个数,p1[i]表示之前的子树中(不包括当前的子树),深度为i的节点的个数,p2[i]表示到当前子树之前,选取两个不同子树的节点的方案数. 对于当前这一棵子树的深度i,显然有ans+=tmp[i]*p2[i].然后更新下次要用的p1[].p2[],p2[i]+=p1[i]*tm…
[题目大意] 给出一张地图,一旦往一个方向前进就必须一直向前,直到一下情况发生:(1)碰到了block,则停在block前,该block消失:(2)冲出了场地外:(3)到达了终点.改变方向十次以上或者冲出场外都判输,问至少几步能到达终点,无法到达输出-1. [思路] DFS,往四个方向搜索,每次不断向前直到出现如上三种情形,并根据三种情形操作,有点类似于模拟.回溯的时候犯的小错误记在代码的注释里面了. #include<iostream> #include<cstdio> #inc…
题目链接 https://www.patest.cn/contests/gplt/L3-001 思路 DP[I][J] I 表示第几个物品 J 表示多少钱 dp[i][j] 为 bool 值 表示 当前状态是否能满足 对于一个物品 有两个选择 一个是选 当 arr[i] < j 的时候 dp[i - 1][j - arr[i]] == 1 就可以选 一个是不选 就是 更新为 dp[i - 1][j] 的答案 然后最后找 满足条件的最小序列 在刚开始选的时候 将数组 按 从大到小 排列 然后最后找…
http://codeforces.com/contest/839/problem/C [AC] #include<iostream> #include<cstdio> #include<cstring> #include<string> #include<algorithm> #include<cmath> using namespace std; ; struct edge { int to; int nxt; }e[maxn];…
http://codeforces.com/contest/812/problem/B [题意] 有一个n*m的棋盘,每个小格子有0或1两种状态,现在要把所有的1都变成0,问最少的步数是多少?初始位置在左下角,只有把下面一层的1都变成0后才可以到上一层,只有在每层的最右边和最左边可以向上走(up),否则只能左右移动(left or right).只要经过1,就可以把1变成0,只要把最后一个1,就可以立即停止操作. [Accepted] #include <iostream> #include…
Sequence Decoding 题目描述 The amino acids in proteins are classified into two types of elements, hydrophobic (nonpolar) and hydrophilic (polar). Hydrophobic and hydrophilic are denoted by H and P respectively. A protein is represented by a sequence of H…
[题目链接:NYOJ-82] #include<iostream> #include<cstring> using namespace std; struct node{ int x1; int y1; int num; }arry[]; ; char Map[MAXN][MAXN]; int ac; ]; ]; void check(); void dfs(int x,int y){ if(Map[x][y] != 'X'){ switch(Map[x][y]){ case 'a…
[题目链接:NYOJ-325] 一道以我名字命名的题目,难道要我生日的时候再A? 思路:依旧深搜,但这个问题应该有一个专有名词吧,看别的博客说是 “容量为 sum/2 的背包问题”,不懂... // abs() 对应头文件 stdlib.h 返回int参数 // fabs() 对应头文件 math.h 返回double参数 #include<cstdio> #include<cstring> #include<stdlib.h> ],sum,m,n; void dfs(…
Lake Counting Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 34735   Accepted: 17246 Description Due to recent rains, water has pooled in various places in Farmer John's field, which is represented by a rectangle of N x M (1 <= N <= 10…
题目:https://pintia.cn/problem-sets/994805342720868352/problems/994805364711604224 题意: 给定一个数n,要求从1~n中找出k个数,使得这些数的p次方之和等于n 思路: 因为n为400,所以dfs加剪枝[本来还在想dp来着] 他要求输出的方案是数字之和最大的,如果之和相等要输出字典序较大的. 所以还需维护一个数字之和. 一个剪枝的方法是从大到小进行dfs,后面被选的数一定比前面被选的要小,这里不限制的话显然会出现重复.…
题目:https://pintia.cn/problem-sets/994805342720868352/problems/994805346063728640 题意: 给定一棵二叉搜索树的先序遍历结果,问这棵树是不是一棵红黑树. 思路: 首先需要明确二叉搜索树和红黑树的性质. 二叉搜索树的每个节点,左子树上的值都比这个节点的值小,右子树上的值都比这个节点的值大. 因此对于一棵二叉搜索树,如果给定了先序遍历结果,就可以唯一确定这棵树了. 红黑树的性质: 1.每个节点是红色或是黑色 2.根节点是黑…
2200: [Usaco2011 Jan]道路和航线 Time Limit: 10 Sec  Memory Limit: 259 MBSubmit: 1384  Solved: 508[Submit][Status][Discuss] Description Farmer John正在一个新的销售区域对他的牛奶销售方案进行调查.他想把牛奶送到T个城镇 (1 <= T <= 25,000),编号为1T.这些城镇之间通过R条道路 (1 <= R <= 50,000,编号为1到R) 和P…
题面 [错解] 百年难得一见之提高考搜索了 ...怎么搞啊 相当于是S进去有一个环? tarjan? 跑个联通块,可以穿过去的连一条边? 好主意-- dfs写完了-- 哎等下? 5 5 .##.. ##### ..##S #.#.. ..#.# 那直接搜吧 写了个纯暴搜,T了 不对啊,dfs判下连通性就好了 然后复制了3×3的,记录每个小图的点对应的大图的点跑过几次,大图中的点哪些访问过,如果没访问过但小图跑过,说明有解 卡常卡进1s WA了,20分 [正解] 首先复制3×3的是错的 6 20…
2103: Fire 消防站 Time Limit: 30 Sec  Memory Limit: 259 MBSubmit: 157  Solved: 116[Submit][Status][Discuss] Description Input 共N+1行. 第一行有一个正整数N,表示区域的个数. 接下来有N-1行,每行两个整数u.v,表述区域u和区域v之间有一条道路. 最后一行有N个正整数,第i个正整数表示区域i的权值W(i). Output 包含一个正整数,为最小的S(x, y)的值. Sa…
题目链接:https://www.luogu.org/problemnew/show/P1118 题意: 1~n的一个排列,相邻的两项加起来得到下一行. 现在给定最后一行的数字,问最初的1~n的排列是什么. 思路: next_permutation大法好.但是要注意剪枝. 首先要发现最后一行这个数系数的规律是一个杨辉三角. 先处理出这个系数. 然后排列. 如果我们在加到前i项的时候发现他已经比结果大了,那么后面不管怎么排列都是没有用的,要跳过. 怎么跳过呢,这里还挺tricky的[要学会!] 用…
题意: 就是说给你一些数,然后要求你使用这些数字组成2个数,然后求他们的差值最小. 思路: 我用的双重DFS做的,速度还比较快,其中有一个很重要的剪枝,若当前搜索的第二个数后面全部补零与第一个数所产生的差值比当前所搜索到的结果还要大,那么就直接返回.这个剪枝就是超时与几十MS的差距 注意一点就是可能有0 与一个数字存在的情况,比如0 3,0 5等等. #include<cstdio> #include<cstring> #include<cstdlib> #includ…
有一个筒,从A口可以放球,放进去的球可通过挡板DE使其掉进B管或C管里,现有带1-10标号的球按给定顺序从A口放入,问是否有一种控制挡板的策略可以使B管和C管中的球从下往上标号递增. 输入: 第一行输入数据组数N.接下来N行为N组具体数据,每组数据中有10个整数,代表球的放入顺序. 输出: 对于每组数据,若策略存在,输出YES:若不存在,输出NO 解法1:DFS 思路:每次判断当前小球是否大于左边容器的最上端的小球,如果可以就放,否则再去看右边的.一旦发现左右两边都不能放,那就只能判定是NO了.…