ICode9

精准搜索请尝试: 精确搜索
  • 剑指 Offer 13. 机器人的运动范围2022-04-17 00:02:09

    水题一道,bfs class Solution { public: int vis[110][110]; int dis[4][2] = {{1, 0}, {0, 1}, {-1, 0}, {0, -1}}; int cal(int x) { int sum = 0; while(x) { sum += x % 10; x /= 10; }

  • 最短路小结2022-04-16 18:00:50

    单源最短路径 DIjkstra 算法 auto Dijkstra = [&](int s) { std::priority_queue<PII, std::vector<PII>, std::greater<PII>> q; std::vector<int> dis(n + 1, inf), vis(n + 1); dis[s] = 0; q.push({0, s}); while (!q.empty())

  • 最大权匹配2022-04-16 12:35:41

    在完备匹配的基础上实现边权最大(KM算法) 如果不是完备匹配可以用费用流   blog 洛谷 AC #include <algorithm> #include <cstring> #include <cstdio> #include <iostream> using namespace std; const int N = 400 ; int n,m; int g[N][N] ; int match[N],el[N],er[N],sl[N] ;

  • 剑指 Offer 12. 矩阵中的路径2022-04-16 01:03:29

    给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。 例如,在下面的

  • 2022.4.152022-04-15 23:03:08

    AtCoder Beginner Contest 236 A - chukodai #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #include<cmath> using namespace std; typedef long long ll; typedef pair<int,int> pii; const int N=1e5+1

  • 洛谷P2607 [ZJOI2008] 骑士2022-04-15 22:32:43

    在做这道题之前,可以先去看一下: P1453 城市环路: https://www.cnblogs.com/liyishui2003/p/16150985.html 如果说城市环路是没有上司的舞会的基环树版本 那P2607就是城市环路的基环树森林版本 刚开始开开心心把城市环路的代码改了改输出输入就交了,wa,20tps 挠头,想了想,唉,它没有保证

  • 电梯2022-04-15 21:02:24

    题目 题目描述 小明所住的居民楼的电梯非常独特,楼房的每一层都可以停电梯,并且第i(1≤i≤N)层的电梯上有一个数字Ki(0≤Ki≤N)。电梯上只有两个按钮:上、下。如果在第i层按上,那么电梯会去到i+Ki楼(当然i+Ki必须要小于等于N,否则电梯不会动);如果在i层按下,那么电梯会去到i−Ki楼(当然i−Ki

  • AcWing 【算法提高课】笔记02——搜索2022-04-14 12:32:50

    搜索进阶 22.4.14 (PS:还有 字串变换 A*两题 生日蛋糕 回转游戏 没做) 感觉暂时用不上 BFS 1. Flood Fill 在线性时间复杂度内,找到某个点所在的连通块 思路 统计连通块个数(多个连通块):逮着一个就开搜 连通性问题(能走多远,迷宫性问题,一个连通块);起点开始搜 池塘计数 普通八连通

  • AcWing第12场周赛题解2022-04-10 21:04:20

    A. 3803. 数组去重 题目链接:https://www.acwing.com/problem/content/3806/ 题目大意:给数组去重,相同数字输出最右边一个。 解题思路:开一个 set 从右往左判断是否第一个出现,用 vis[] 数组标记是否要输出。 示例程序: #include <bits/stdc++.h> using namespace std; int T, n, a[55]

  • C++-电梯 解题思路2022-04-09 22:00:07

    【Horn Studio】编程专栏: 电梯  解题思路 题目 题目描述 小明所住的居民楼的电梯非常独特,楼房的每一层都可以停电梯,并且第i(1≤i≤N)i(1≤i≤N)层的电梯上有一个数字Ki(0≤Ki≤N)Ki(0≤Ki≤N)。电梯上只有两个按钮:上、下。如果在第ii层按上,那么电梯会去到i+Kii+Ki楼(当然i+Kii+Ki

  • 同余最短路2022-04-09 10:00:31

    同余最短路 什么神仙算法 这类问题的关键在于建模,头大了,主要总结几个题的思路技巧吧。 (标题有 Link) P3403 跳楼机 明显的楼层数只能在 \([1,k]\) 之间,因为可以回到第一层,那么问题转化一下: 满足 \(ax+by+cz \equiv i \pmod k\) 的 \(i\) 有几个。 对于每一个 \(i\) ,我们可以把它表

  • LGP5049题解2022-04-06 14:32:38

    无内鬼,来个线性做法 发现是一个 sb 贪心,只需要保证下一个去的节点尽量小即可。 问题分为三个阶段:在一颗“子树”内,在环上,在别的“子树”内。(环上每个节点挂着一堆子树) 首先肯定从 \(1\) 开始搜。尽量走小的地方。 走到环上后需要决定走哪个方向,这个很容易。 在环上某个位置需要判

  • 拯救行动2022-04-04 15:02:13

    题目:    这道题目非常难简单就花了我一个上午小时而已这道题就在bfs的模板上加亿些东西即可,这道题有守卫之后就要+2,要按step顺序从小到大遍历因此新的节点入队后要根据step值从小到大排序,还有一个点值得注意这道题要用到手写队列。 这道题目可以用优先队列来解决,但是我不会为了

  • 1135. 新年好(acwing)2022-04-03 17:02:09

    单源最短路 1135. 新年好 题目大意: n点m边(双向边),n个点保证连通。题目给定五个点,问一条包含点1和这五个点的最短路径长度。 思路和代码: 因为一般情况下不会去考虑暴力搜索或者全排列这样的高时间复杂度的操作,所以这题没有想到去枚举五个点的全排列。 正确做法是: 先做出dis[i][j]数

  • dfs bfs dp2022-04-03 08:00:22

    7-1 列出连通集 (25 分) 给定一个有N个顶点和E条边的无向图,请用DFS和BFS分别列出其所有的连通集。假设顶点从0到N−1编号。进行搜索时,假设我们总是从编号最小的顶点出发,按编号递增的顺序访问邻接点。 输入格式: 输入第1行给出2个整数N(0<N≤10)和E,分别是图的顶点数和边数。随后E

  • 剑指 Offer II 011. 0 和 1 个数相同的子数组2022-04-03 00:04:53

      给定一个二进制数组 nums , 找到含有相同数量的 0 和 1 的最长连续子数组,并返回该子数组的长度。   示例 1: 输入: nums = [0,1] 输出: 2 说明: [0, 1] 是具有相同数量 0 和 1 的最长连续子数组。 示例 2: 输入: nums = [0,1,0] 输出: 2 说明: [0, 1] (或 [1, 0]) 是具有相

  • 求细胞数量2022-04-02 19:32:00

    题目:    这道题呢需要用到一个知识点scanf("%1d",&a[i][j]);(精确输入一个数字在这里非常有用) 思路: 找到一个细胞数以他作为起点进行宽搜同时细胞数加1,所有能搜到点都对他的vis赋值为细胞数。 程序: #include<bits/stdc++.h> using namespace std; const int N=110; int n,m,

  • 1701: 抓住那头牛2022-04-01 21:31:50

    题目:    这道题呢是一位的不需要用结构体一维数组就够。 bfs的模板加上亿点改动即可:   1.删掉所有结构体。   2.这道题不用for+方向数组     单个手写。   3.这道题不用ans,用vis代替即可(just like vis[old+1]=vis[old]+1),最后输出vis[k]。 这道题呢非常之难简单 所以

  • 洛谷 P1135 奇怪的电梯2022-03-30 09:00:43

    题目链接 https://www.luogu.com.cn/problem/P1135 这题可以用bfs和dfs两种方法,这里先说一下bfs。   在本题中,相邻状态为当前所在楼层通过按向上或向下按钮所能到达的楼层,每个状态要记录的信息包括楼层编号和按按钮的次数。 先判断是否到达终点,是则返回x.step(到达此楼层一共需

  • 图以及搜索2022-03-29 21:34:39

    1.图的介绍 图分为有向图和无向图,而无向图可以看成是一种特殊的有向图,存储图可以使用邻接表,以及邻接矩阵。 个人一般使用邻接表来进行,邻接矩阵适合数据量较多的情况来使用,例如稠密图。 const int MAX = 100; vector<int>edge[MAX]; //使用vrctor数组来存储

  • P2863 [USACO06JAN]The Cow Prom S2022-03-29 13:32:13

    题面 有一个 \(n\) 个点,\(m\) 条边的有向图,请求出这个图点数大于 \(1\) 的强联通分量个数。 输入格式 第一行为两个整数 \(n\) 和 \(m\)。 第二行至 \(m+1\) 行,每一行有两个整数 \(a\) 和 \(b\),表示有一条从 \(a\) 到 \(b\) 的有向边。 输出格式 仅一行,表示点数大于 \(1\) 的强联

  • 剑指 Offer II 006. 排序数组中两个数字之和2022-03-29 00:35:27

    水题,vis记录,暴力即可 注意有重复 class Solution { public: vector<int> twoSum(vector<int>& numbers, int target) { int len = numbers.size(); int vis[3001]; memset(vis, 0, sizeof(vis)); for(int i = 0; i < len; i++)

  • 剑指 Offer II 005. 单词长度的最大乘积2022-03-29 00:02:58

    去重,然后暴力即可,去重时别忘了记录原来的长度 class Solution { public: int max(int a, int b) { return a > b ? a : b; } int maxProduct(vector<string>& words) { int len = words.size(); vector<string> ww; int a[1

  • pojTest for Job2022-03-25 16:00:37

    此题可用前向星建图,可优化时间,但我不会。。。 注意:用cin cout会超时。。。 ac代码: 1 #include<iostream> 2 #include<algorithm> 3 #include<cstring> 4 #include<vector> 5 #include<cmath> 6 #define ll long long 7 #define inf 0x3f3f3f3f 8 using namespace s

  • leetcode-每日一题2022.3.20 网络空闲的时刻2022-03-20 21:03:26

    题目 力扣 思路 建图+BFS 先根据边edge建图,计算每个服务器到0服务器的最短距离。如果来回传送时间小于等于等待重传时间,在这个服务器上的活动停止时间就是来回传送时间。如果来回传送时间大于等待重传时间,在这个服务器上的活动停止时间就是(di - 1)/ t * t + di。 代码 class So

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有