iOS

基础算法(十二)双指针---以题为例

给定一个长度为 n 的整数序列,请找出最长的不包含重复的数的连续区间,输出它的长度。 输入格式 第一行包含整数 n。 第二行包含 n 个整数(均在 0∼105范围内),表示整数序列。 输出格式 共一行,包含一个整数,表示最长的不包含重复的数的连续区间的长度。 数据范围 1≤n≤105 输入样例: 5 1 2 2 3 5 输出样例: 3

基础算法(十三)位运算---以题为例

给定一个长度为 n 的数列,请你求出数列中每个数的二进制表示中 1的个数。 输入格式 第一行包含整数 n。 第二行包含 n 个整数,表示整个数列。 输出格式 共一行,包含 n 个整数,其中的第 i 个数表示数列中的第 i个数的二进制表示中 11 的个数。 数据范围 1≤

CF877F Ann and Books (分类统计贡献+普通莫队)

CF877F Ann and Books 题意: 商店里有 (n) 本书,每本书中有 (a_i) 个 (t_i=1/2) 类问题。 (m) 次询问,每次询问给出一个区间,求有多少个符合下列条件的区间: 这个区间是给出区间的子区间 这个区间的所有书中第 (1) 类问题比第 (2) 类问题多 (k) 个,其中 (k) 在所有询问中相同。 抽象一下,也就是求 ([L, R]) 内有多少个子区间 ([

hdu 4460 Friend Chains (图最长路的最小值-BFS)

Problem - 4460 (hdu.edu.cn) 写完提交答案错了,后面发现vis初始化的地方错了,以前BFS都只调用一次,看来我中毒太深。这个题更能体现BFS的特性,增加dis数组记录距离。  

hdu 1312 Red and Black (BFS模板题)

Problem - 1312 (hdu.edu.cn) BFS模板题  

[ABC285Ex] Avoid Square Number 【生成函数】【容斥原理】

很好的题目,使我螺旋升天。 讨论题目要求,容易想到容斥,设 (x_i) 表示钦定有 (i) 个元素是完全平方数的方案数,则有答案: [sum_{i=0}^{n}begin{pmatrix}n iend{pmatrix}(-1)^{i}x_i ]考虑如何求 (x_i),显然我们要把每个 (E_j) 分成至少 (i) 个偶数。 设这个方案数为 (f_{i,E_j}),发现它可以很方便的用生成函数表达

CF1454F Array Partition 题解

题目链接:CF 或者 洛谷 感觉很多人写太复杂了,其实感觉这题性质很好的。。询问是否可以分为三段 (max_1=min_2=max_3)。考虑枚举 (max_1),由于后缀 (max_3) 具有单调性,所以我们可以双指针轻松拿到这样一个模型: 因为后缀 (max) 具有单调性,通过双指针我们可以拿到 (j) 后缀 (max) 恰好等于 (i) 前缀 (max),(pre_j) 后缀 (max)

牛客寒假训练赛第一场

基本状况 赛时开了五题,B题大分讨卡住了,其他题目就看了题面。 有几个基本状况: 贪心题没有深入思考,就无脑二分入手,倒是大量罚时。 分讨思路不清楚。 E题很搞,名字叫贪心题但是纯爆搜,爽切。 A https://ac.nowcoder.com/acm/contest/67741/A 虽然签到题,但是学习一下 jly 写法。 我的 jly E https://ac.nowco

0129-0203部分校赛题解复盘

vj第一场 A题 https://codeforces.com/gym/103480/problem/A 该题让我们可以从回文串的特点入手,即两个相同的字母便可增加长度2,所以并不用思考该回文串要如何排序出来,而是看有多少对相同的字母,使用map<char,int>来记录字母出现的次数,再计算可以除以2的次数即可。 点击查看代码 B题 https://codeforces.com

CF522D Closest Equals 离线扫描 + 线段树

CF522D Closest Equals 题意:m 个询问,求 [l,r] 内相同元素的最小距离。 离线询问,按右端点排序。 对于每一个 a[i],如果 last[a[i]] 存在,将线段树 last[a[i]] 的位置改为 i - last[a[i]]。 查询区间最小值。 当然这题也可以回滚莫队。 注:本题一路从黑题堕落到绿题

2020-2021 ICPC East Central North America Regional Contest (ECNA 2020)

Preface 队友C麻了我直接3h下班雀魂启动,如果时间多点感觉还有AK希望 不过不得不说北美场难度都集中在模拟题上了,一般压轴都是数学或者几何,而这类题目遇到徐神祁神就是洒洒水了 A. All in the Family 出题人真是丧心病狂,不过这题只是看起来恶心实际写起来感觉还好 做法本身由于树的点数很少,找LCA什么的都可以暴力 只不过输出答案的时候要多讨论讨论,按照题目里给出的一个个判

std::optional用法

目的:用于处理异常值,可将异常值导出,不用设置中途退出 用法: 文件包含optional 函数返回值为std::optional<T>(注意:T&不可以,但T*可以),异常值使用std::nullopt 用std::optional<T>接收数据结果,.has_value()判断结果是否异常,.value()显示结果 .value_or(num)可以设置异常时的默

PVE直通Nvidia显卡

本文参考:PVE开启硬件直通功能、PVE 7.3 优化和显卡直通、PVE开启硬件显卡直通功能、PVE设置显卡直通、proxmox PCI Passthrough 简介 其实网络上有很多不错的文章讲述了如何直通显卡,也有简单易用的脚本帮你直通(pvetools)。我也成功在pve上直通n卡给win10,但是在Debian12上,我一直没办法使用Nvidia-smi,后来在朋友的提醒下,成功的解决了此

ABC 339 破防记

我是沙波。嘿! A 好难。 Code B 好难。英语太差了。 Code C 比 A 简单。 点击查看代码 D 设 (dp_{a,b,c,d}) 为两人在 ((a,b),(c,d)) 的地方最小步数。bfs 即可。 Code E 设 (dp_i) 为结尾为 (i) 的最大长度。(dp_{i}=max_{j=1}^{i-1} dp_jtimes [|a_j-a_i|le d]+

大胆假设小心验证——cf_922_C. XOR-distance

目录问题概述思路想法参考代码问题反思 问题概述 给出整数a、b、r,要求输出|(a^x) - (b^x)|的绝对值,其中0<=x<=r(取值都是[0, 1e18]) 思路想法 首先是一个位置关系,由于求的是绝对值,所以我们可以假定a > b;第二,我们要做的是异或操作,因此可以将a和b的二进制数写出来,结合异或的特点,可以发现,当a和b的相应位数上相同时,无论该位取0/1,不影响

Acwing第 141 场周赛

A题 签到模拟即可 B题 单独考虑每一个a[i],如果i要是答案需要指针移动多少次,然后算完,排个序,指针移动最少的就是答案。 C题 赛时没过被卡map了开成vector光速过了 我的思路就是从前往后(O(n))扫一遍模拟一下交换,这样交换的次数应该是最少的 用(3*n-cnt)去判断如果为偶数说明剩下的数可以通过偶数次交换不改变结果的情况下消耗掉。 这时就直接输出1反之则输出2

ABC339_g Smaller Sum 题解

题目链接:Atcoder 或者 洛谷 比价朴素的题,首先有暴力的想法就是树套树或者分块。这两种就不再赘述,这里来正式提提 主xi树 (应该不能打出来这玩意)的本质而不再停留在板题找第 (k) 大上。 对于可差性问题和传统问题不同,我们对于可差性问题往往都有更好的优化方案。例如对于树类问题来说,可差性问题我们的 主xi树 其实是可以算作能够实现树套树的常见功能的一种更优的结构,只是它只能解决的普遍问

第四次比赛

D.网络寻路(dfs,但是可以简便方法) #include<bits/stdc++.h> using namespace std; int s[100000],a[100010],b[100010]; int main() { int n,m; cin>>n>>m; for(int i=0;i<m;i++) {

排位1

A.解开束缚丝(map写错了,直接存map然后搜索就可以) #include<bits/stdc++.h> #include<map> using namespace std; void solve() { int n; cin>>n; int a; for(int i=0;i<n;i++) { m

排位2

B.steel heart(主要是心之刚效果和冷却效果30秒的特判) #include<bits/stdc++.h> using namespace std; struct gang { int hh; int mm; int t; int e; }; struct gang g[10000]; int main() { int h1,h2,m

c++加速cin和关闭同步流

signed main() { ios::sync_with_stdio(0); cin.tie(0) , cout.tie(0); int T = 1; // cin >> T ; while(T--) solve(); return 0; }

基础算法(九)二维前缀和模板---以题为例

输入一个 n 行 m的整数矩阵,再输入 q 个询问,每个询问包含四个整数 x1,y1,x2,y2,表示一个子矩阵的左上角坐标和右下角坐标。 对于每个询问输出子矩阵中所有数的和。 输入格式 第一行包含三个整数 n,m,q。 接下来 n行,每行包含 m 个整数,表示整数矩阵。 接下来 q 行,每行包含四

[NOIP2011 提高组] 聪明的质监员

原题链接 首先要读懂题目啊 :[Wj>=W] 其实是一种bool表达,即大于等于时取1,小于时取0,然后再进行求和。 根据要求出 最小值 大概可以猜测要运用二分,那么我们来判断单调性,首先W在所有矿石的最大最小值之间取值,W越小Y越大,W越大Y越小(观察和推理都很容易得到),那么Y是符合单调性的,即可以运用二分。 而题目又给出了m个区间,如果都一个区间一个区间的遍历时间复杂度就是O(n*m*

2022CCPC女生赛-L.彩色的树(线段树合并)

  链接Problem - L - Codeforces 以前迷迷糊糊用dsu on tree写的题目 但是其实没搞明白 现在换一种写(太菜了还是没搞明白dsu on tree) 题意: 给你一棵树,询问给定询问的节点上,子树内距离小于等于k的节点不同颜色的种类有多少个。k是固定的值。 解法: 本题做法为比较板子的线段树合并,如果您没有接触过,可以先写几道简单的学习一下。  

基础算法(十)差分模板---以题为例

输入一个长度为 n的整数序列。 接下来输入 m个操作,每个操作包含三个整数 l,r,c,表示将序列中 [l,r]之间的每个数加上 c。 请你输出进行完所有操作后的序列。 输入格式 第一行包含两个整数 n 和 m。 第二行包含 n 个整数,表示整数序列。 接下来 m 行,每行包含三

left 2 Codeforces Round 916 (Div. 3)

题目链接 A. 遍历字符串,用map记录下每个字符出现的次数 最后遍历26个字母,若出现了相应次数答案+1 B. 升序能让他兴奋,倒序不会 让k+1是升序的,剩下的倒序 C. 枚举+贪心 初步思路一直想着一次贪完,发现无法做 然后考虑枚举+贪心 枚举的是要顺序完成几个任务,贪心的是维护b数组的最大值 去掉顺序完成任务的必须天数,剩下的全部去完成最大值 debug: 注意k和n的大小关系,可能枚

2024牛客寒假算法基础集训营1

题目链接 A. 因为判断要素较少,直接条件模拟 C. 贪心+二分 贪心是把处理时长升序排序 二分的是鸡处理事情的时间点 当鸡在t时处理事情时,在t时还没有办完事情的人的不满意度都要加上tc E. 数据范围很小,3的10次方爆搜 每一轮每种结果去枚举,取最优 G. 贪心 按原价升序排序,然后把优惠价求前缀和 只要优惠后+本钱能买得起当前原价,结果就为优惠和+本钱 M. 若n能被6整除,那么就

(坚持每天写算法)算法复习和学习part1基础算法part1-14——离散化

  直接上题目:   离散化描写的是题目,离散化题目都是像这种,被操作的数据是”某个数据在无限长的x里面“,它的数据范围都是比较广阔的,所以被称为离散化。对于这种题目,我们要将数据以某种方式用连续的形式排到一个容器里面。(这就是映射)(ps:这里讲的是容器是为了提醒我自己)   这道题或许有人说使用哈希表,但是求区间和哈希表的遍历是真的两端点之间全遍历一次吧,那还是没有解决问题,嗯,离

[ABC328G] Cut and Reorder 题解

[ABC328G] Cut and Reorder 题解 状压fw实锤 思路 观察到排列操作只会做一次,答案的编号一定是一段一段的。 所以可以考虑 (f_s) 表示前 (popcount(s) + 1) 个 (a) 元素,放进 (b) 中 (s) 的最小代价 转移可以考虑放置一段,每放一段需要 (c) 的代价。 专业看起来复杂度非常爆炸,但是仔细分析可以得到时间复杂度为 (O(2^nn))。

<<  <  208  209  210  211  212  213  214  215  216  217  218  >  >>