ICode9

精准搜索请尝试: 精确搜索
  • 线性筛法求素数2022-05-29 16:03:05

        时间复杂度为 O(n)! #include<bits/stdc++.h> using namespace std; const int N = 10e6 + 10; int primes[N]; bool book[N]; void get_primes(){ int cnt = 0; for(int i = 2; i <= N; i++){ if(!book[i]) primes[++cnt] = i; for(int j = 1; i * primes[j

  • CF546E2022-05-29 11:04:30

    题意 CF546E Soldier and Traveling 有 \(n\) 个点,\(m\) 条无向边,人只能在有边相连的点之间移动。 给定每个点的初始人数 \(a_i\) 和目标人数 \(b_i\),询问是否可以使每个点的人数变换到目标人数,若可行输出方案。 \(1\le n\le 100,0\le m\le 200,0\le a_i,b_i\le 100\)。 题

  • CF EDU 101 D - Ceil Divisions2022-05-28 21:31:07

    D - Ceil Divisions 构造 方法1 可考虑先把除了 1,2,k 的所有数跟 n 搞一下,这个一定是花 n - 4 次让除了 k,n 都满足条件 现在就让 n,k 变成 1 一直让 n 跟 k 搞,需要 \(\lceil log_kn\rceil\)次 一直让 k 跟 2 搞,需要 \(\lceil log_2k\rceil\) 次 求出 \(\lceil log_kn\rceil+\lceil

  • LCA学习笔记2022-05-28 16:35:43

    目录 前言 LCA简介 倍增求LCA 树剖求LCA LCA在树形结构题中的妙用 1.前言 应老师要求,来写一篇关于LCA的学习笔记 2.LCA简介 两个节点的最近公共祖先,就是这两个点的公共祖先里面,离根最远的那个。 画张图理解一下: 如图,10与8的LCA是2,13与3的LCA是3 那么怎么求LCA呢? 3.倍增求LCA 想

  • 304 最短路 Johnson 算法2022-05-28 13:35:14

    视频链接: #include<algorithm> #include<cstring> #include<iostream> #include<queue> #define N 30010 #define INF 1000000000 using namespace std; int n,m,a,b,c; struct edge{int v,w;}; vector<edge> e[N]; int vis[N],cnt[N]; long lon

  • 307 最小生成树 Prim 算法2022-05-28 13:33:47

    视频链接: // Luogu P3366 【模板】最小生成树 #include <iostream> #include <cstring> #include <algorithm> #include <vector> #define inf 1e9 using namespace std; int n,m,a,b,c,ans,cnt; const int N=5010; struct edge{int v,w;}; vector<edge>

  • apriori算法2022-05-27 20:34:40

    #include<cstdio> #include<algorithm> using namespace std; int n,k=1,maxi; double mins;//最小支持度 int d[15][15];//交易数据集 struct item//项集类型 { int cnt;//元素的个数 int a[15];//项集内的元素 double s;//支持度 }; struct tab//列表类型 {

  • 判断括号是否匹配–python2022-05-27 15:03:59

    例子: valid_parentheses('i(hi)()') == True valid_parentheses('hi())(') == False valid_parentheses('') == True valid_parentheses('())(())') == False 实现: 方法一: def valid_parentheses(string): cnt = 0 for char i

  • Fsm serialdata2022-05-27 12:04:23

    现在您有了一个有限状态机,可以识别何时在串行比特流中正确接收到字节,添加一个数据路径来输出正确接收到的数据字节。 out_byte 需要在 done 为 1 ,否则不在乎。 请注意,串行协议首先发送 最低 有效位。   module top_module(    input clk,    input in,    inpu

  • 【力扣 077】387. 字符串中的第一个唯一字符2022-05-25 22:32:22

    387. 字符串中的第一个唯一字符 给定一个字符串 s ,找到 它的第一个不重复的字符,并返回它的索引 。如果不存在,则返回 -1 。   示例 1: 输入: s = "leetcode"输出: 0示例 2: 输入: s = "loveleetcode"输出: 2示例 3: 输入: s = "aabb"输出: -1  提示: 1 <= s.length <= 105s 只包含

  • 202205022022-05-25 18:00:29

    tot: 140 (280) rk: 10/28 a 100pts 不存在 \(0\) 的话区间合法 \(\iff\) 区间和为偶数,线段树维护区间和分别为奇偶的左端点有多少个即可 \(0\) 相当于分成了若干段,维护下最后一个合法段的左端点即可 考场代码 const int N = 5e5+5; int n,m,a[N]; bool s[N]; vector<Pii> q[N];

  • AtCoder Beginner Contest 252 D - Distinct Trio2022-05-24 19:01:34

    找出三元组i,j,k(i<j<k,ai,aj,ak互不相等) 等价于找出ai,aj,ak(ai<aj<ak,i,j,k互不相等) #include<bits/stdc++.h> using namespace std; typedef long long LL; const int N = 2e5+10; int sum[N]; unordered_map<int,int> cnt; vector<int> v; int main(

  • 【poj 3250】Bad Hair Day 单调栈/ST表2022-05-23 13:04:21

    题目 给你n头牛的身高,\(c_i=\)[i+1,n]中比第i头牛高度矮的牛的数目 注意,如果\(h_j\)比\(h_{j+1}\)高,那么第j头牛是会把j+1头挡住的 求\(\sum_i{c_i}\) n<=80000 方法1:ST表 从一个最朴素的想法而来——对于第i头牛,我们需要找出[i+1,n]中第一个比\(h_i\)高的位置j,然后ans+=j-i-1; 如

  • AcWing 903. 昂贵的聘礼2022-05-22 21:04:38

    y总做法:建立一个虚拟原点,到所有物品的距离为物品原本价值,物品之间的价值为交易价值,枚举等级范围跑最短路即可 我的做法:以女儿为原点反向建图,物品之间的距离为交易价值,到每个物品的最短路加上这个物品的原本价值即为总花费,取最小 时间复杂度均为O(n^2*logn)(dij堆优化) #inclu

  • hdlbits day112022-05-21 22:32:43

    5.17、Fsm serial 在许多(较旧的)串行通信协议中,每个数据字节都与一个起始位和一个停止位一起发送,以帮助接收器从位流中划定字节。一种常见的方案是使用 1 个起始位 (0)、8 个数据位和 1 个停止位 (1)。当没有传输任何内容(空闲)时,该线路也处于逻辑 1。 设计一个有限状态机,当给定比特

  • Codeforces Round #791 (Div. 2)2022-05-21 14:00:54

    比赛链接: https://codeforces.com/contest/1679 D. Toss a Coin to Your Graph... 题目大意: 一个有向图,每个点有一个权值,从一个点出发,向它可以到达的点进发,总共走 \(k\) 步,\(x\) 为这 \(k\) 步之后经过的所有点的权值的最大值,问 \(x\) 最大能是多少。 思路: 因为最大值是单调的,所以

  • 如何优雅的对拍2022-05-21 11:02:43

    对拍有很多种,这是直接用 c++ 的 system 指令来对拍的。 具体就是先写一个数据生成器 data,然后一个正解 std,一个暴力 baoli。 然后将这三个 cpp 放到同一个文件夹里。 然后在文件夹里新建一个 cpp。 里面这样写: int cnt = 0; while (1) { ++cnt; cout << cnt << "\n"; syste

  • 磊磊零基础打卡算法:day17 c++堆排序2022-05-21 00:02:49

    5.20 前言吐槽: 今天是5.20啦,但是作为单身修狗的我只能和代码过啦。。。继续加油算法打卡!!! 堆排序: 堆就是一棵完全二叉树 二叉堆是一种支持插入,删除,查询最值的数据结构。他其实是一棵满足"堆性质"的完全二叉树,树上的每个节点带有一个权值。若树中的任意一个节点的权值都小于

  • LIS2022-05-20 19:31:11

    友好城市 https://www.acwing.com/problem/content/1014/ 画一条河的上下两岸 建桥 要求不能交叉 问最多建立多少道桥 转化成对于任何下河道的桥 转化为数组下表 上河道第几个桥变成数组的值 那么就是看LIS的值 数据给出一对值 如果不能保证单调上升说明这么做不行 使用PII 来做 #

  • AT2004 [AGC003D]Anticube 题解2022-05-20 12:35:07

    题面 由于乘起来不能是完全立方数,考虑对每个数质因数分解之后,所有的指数都 \(\bmod 3\),这样操作完之后,每个数都与唯一一个数对应(乘起来是完全平方数),即对于每个质因子,如果次数为 \(1\),对应的那个数的次数应该为 \(2\),反之同理。这样可以建立起一个一一映射,对于每个映射都只能选择一

  • 磊磊零基础打卡算法:day16 c++ Trie树2022-05-19 23:35:57

    5.19 Trie树: 用处:快速的查找和高效存储字符串集合的数据结构。     类似如此的查找,存储 其简单的两个操作:插入和删除 插入: void insert(char str[]) { int p; //定义数据前一位的位置 for (int i = 0; i < str[i]; i++) { int u = str[i] - 'a'

  • LeetCode No462. 最少移动次数使数组元素相等 II2022-05-19 22:33:11

    题目 给你一个长度为 n 的整数数组 nums ,返回使所有数组元素相等需要的最少移动数。 在一步操作中,你可以使数组中的一个元素加 1 或者减 1 。 示例 1: 输入:nums = [1,2,3] 输出:2 解释: 只需要两步操作(每步操作指南使一个元素加 1 或减 1): [1,2,3] => [2,2,3] => [2,2,2] 示例 2:

  • P2669 [NOIP2015 普及组] 金币2022-05-19 21:00:28

    题面:金币 思路: 用两个变量分别来记录每天分的金币数和总天数 #include<bits/stdc++.h> using namespace std; long long i,ans,cnt,n; bool bj; int main() { cin>>n; while(++i)//i:每天领的金币数 { for(int j=1;j<=i;j++)//每天领 i 枚金币,共领 i 天 { ans+=i; cn

  • CF Round#290 C - Fox And Names2022-05-19 19:33:27

    C - Fox And Names 拓扑排序 要自定义字典序使给出的字符串是按字典序递增的顺序 可对于前后两个字符串可找到一组字母间的关系,转化为差分约束问题 #include <iostream> #include <cstring> #include <algorithm> #include <vector> #include <cmath> #include <queue> using name

  • CF1383B GameGame2022-05-18 21:35:06

    CF1383B GameGame Problem - 1383B - Codeforces 题目大意 轮流选一个数,得分为选的数异或和,判断最终输赢情况 解题思路 首先可以判断,所有值的异或和如果等于0,那么一定是平局,因为他们拆成任意两部分都是相等的 接下来我们可以按位进行考虑——如果高位就能判断出结果,那么低位显然

专注分享技术,共同学习,共同进步。侵权联系[admin#icode9.com]

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

ICode9版权所有