iOS

abc099d<dfs,枚举排列方案>

题目 D - Good Grid 思路 用一个对角线上颜色相同,间隔3个对角线上颜色相同,一共分为3组; 考虑在c种颜色中,选择3种,分配给这3组,共(A(n, 3))种选法; dfs枚举排列方案,对每种方案计算花费,取最优即可。 总结 dfs枚举排列方案; 代码 点击查看代码

图论 - 某进制分组 - P5304 旅行者

P5304旅行者 (mathtt{TAGS}): 多源多汇最短路,二进制分组 (mathtt{ESTIMATION}):非常好二进制分组,让我的大脑旋转 题意简述 给定 (k) 个点和一张有向图,求以这 (k) 个点为起点和终点的最短路中最短的一条的长度。 First. 怎么求多源多汇最短路 solution.1 超级源点和超级汇点,超级源点以 (0) 的权值连接所有起点,所有终点以 (0)

【树上启发式合并】CF1709E XOR Tree

XOR Tree (mathtt{TAGS}):树上启发式合并 + 异或 + 贪心 (mathtt{ESTIMATION}):非常好的启发式合并题目 First.如何去除 (0) 路径 对于一条路径 (u to v),要使其不为 (0) 肯定是将 (mathtt{LCA} (u,v)) 变为 (2 ^ {30 + x}) 最好,这样异或值的第 (30 + x) 位一定为 (1)(因为 (a_

P5501 [LnOI2019] 来者不拒,去者不追 题解

题目链接:来者不拒,去者不追 直接在线查询题目所给的式子是很困难的,我们考虑单点考察贡献。对于一个已经确定的式子,我们发现加入一个数或者删除一个数的贡献如图所示: 如图所示,在原有的序列为 ((1,2,3)) 当中,我们加入新的 (2) 进去,我们观察到每个数的贡献的变化是这样,比 (2) 小的数并未更改贡献,比 (2) 大的数每个人的 (kth) 增大 (1),所以比 (2) 的数每个都会比原

C++U3-第09课-递归函数的应用

学习目标  斐波那契数列例题     View Code [【递归的应用(一)】Pell数列]   View Code   [【递归的应用(一)】辗转相除法最大公约数]  枚举会超时  辗转相除法     View Code   初赛知识: &nbs

P9816 少项式复合幂 题解

题目链接:少项式复合幂 注意到题目的模并不是很大,我们考虑两个核心的性质。 (f(f(x)) bmod p=f(f(x) bmod p) bmod p),证明直接代入 (f(x)) 进去得到:(f(f(x))=a_0 times f^0(x)+a_1times f^1(x)...+a_ntimes f^n(x) bmod p=) [sum_{i=0}^{n}a_i times f^{i}(x)

类模板和友元

友元内部实现 友元外部实现

CF414B - Mashmokh and ACM

思路 dp。dp[i][j]表示第i位填j时的方案数 ac代码

图解TCP/IP笔记

网络基础知识 批处理 在起初,计算机的主要用途是自动完成写复杂的计算,用户事先将数据和用户程序(也可以理解为计算方式)装入卡带或磁盘,计算机安装一定方式读取、执行,自动完成计算任务。现如今我们计算机也有很多批处理功能,例如点个按钮自动打开一个软件等,时代在发展,批处理系统已被放入博物馆,但留下的这个概念依旧沿用 分时系统 继批处理系统之后,20世纪60年代出现了分时系统TSS。它是指多个终端与同

C++多线程并发(一)--- 线程创建与管理

目录进程和线程的区别何为并发?C++11线程基本操作C++11新标准多线程支持库std::thread类成员函数std::thread的关键总结C++中多线程创建 C++的多线程可以充分利用计算机资源,提高代码运行效率。在这里总结了一些多线程应用过程中的基本概念和用法。    进程和线程的区别 进程是一个应用程序被操作系统拉起来加载到内存之后从开始执行到执行结束的这样一个过程。简单来说,进程是程

三国游戏

三国游戏 题目 小蓝正在玩一款游戏。 游戏中魏蜀吴三个国家各自拥有一定数量的士兵 X, Y, Z(一开始可以认为都为 0)。 游戏有 n个可能会发生的事件,每个事件之间相互独立且最多只会发生一次,当第 i 个事件发生时会分别让 X, Y, Z增加 (A_i, B_i, Ci) 。 当游戏结束时 (所有事件的发生与否已经确定),如果 X, Y, Z的其中一个大于另外两个之和,我们认为其获胜。 例如,

c++线程概述

2. 正文 2.1 线程中为什么有join? thread::join()的一个作用就是阻塞直到线程执行完; 线程的使用源于异步并发的需求,如下需要把taskA()和taskB()的计算结果加起来,但假设它们都是耗时的任务,可以通过线程的方式同时跑两个任务; taskB()运行结束后,threadTask.join()的作用是阻塞等待直到线程的taskA执行完毕,都执行完才能将两者的结果相加;

c/c++条件变量的使用注意要点

正文 多线程下使用条件变量需要注意一些要点 1.消费者线程尽量使用time_wait,去定期检查消费者队列长度,这可以防止一些notify丢失的问题而导致的消费者block,譬如说在cpu调度上: 如果先进行了notify,然后此时消费者线程才开始运行执行了wait,此时notify是消失的,消费者线程将会永远阻塞, 一个常见的错误程序如下,看上去正确的程序由于无法保证thread能够中的wait

E. Happy Life in University

E. Happy Life in University Egor and his friend Arseniy are finishing school this year and will soon enter university. And since they are very responsible guys, they have started preparing for admissi

类模板分文件编写

接下来就是主函数所在的文件

(坚持每天写算法)基础算法复习与学习part1基础算法1-7——高精度减法(处理t=1和t>1代码的写法,t为操作次数)

  题目:   思路:这一道题其实和高精度加法的思路是差不多的,都是使用算式进行模拟。   重点:关于代码怎么写,在高精度加法那里还看不太出来(我也没有写),但是在高精度减法这里就完全可以看出来了。我们在加法算式里面,一般是A[i]+B[i]+t,但是也可以这么写:t+A[i]+B[i],我们可以先写进位,然后之后对进位t进行处理就行了,而在刚开始的时候我们只要将t设置成0就可以了,0没有进位为

C++ --- 智能指针

智能指针存在的意义 智能指针主要解决以下问题: (1)内存泄漏:内存手动释放,使用智能指针可以自动释放。 (2)共享所有权指针的传播和释放,比如多线程使用同一个对象时析构问题。   智能指针的实现依赖于C++语言的RAII(资源获取即初始化)技术,即资源的获取和释放应该与对象的构造和析构分别相关联。这意味着,在对象构造时分配资源,而在对象析构时释放资源。 智能指针的原理就是将动态分

2024-1-13 DAY4

2024-1-13 DAY4 B - Integral Array 1644D - Cross Coloring 1394A - Boboniu Chats with Du

2021-2022 ICPC Northwestern European Regional Programming Contest (NWERC 2021)

Preface 和昨天刚好相反,前期极度崩盘2h2题而且一堆银铜牌题不会 但好在后面稳扎稳打慢慢追回来了一点,最后超高罚时8题收场 这场一边打一边看ECF的实况,最后看到同校的Wifi暴打全场,实在是ORZ A. Access Denied 签到,首先暴力问出长度然后从前往后一位一位确定即可 注意实现的时候不需要特意去算返回的秒数的含义,只要找一个和其它返回结果不同的即可 B. Boredo

CF-613-D

613-D 题目大意 给定一颗(n)个节点的树。 (q)组询问,每组询问给定(k)个点,问至少要删除树中多少个点才能使这(k)个点两两不连通,无解则输出(-1)。 这里(sum{k_i})的规模大致和(n)相当。 Solution 虚树模板题。 暴力的做法是每组询问都对整棵树进行遍树形DP,复杂度为(O(qn))。虚树的做法是对于每组询问的(k)个点,在原树的基础上重构一颗小规模的新树,在新树上

CF1201C - Maximum Median

思路 二分答案。对于一个mid,查询中位数要是为mid的话至少要做多少次操作,最小操作次数就是排序后从中位数开始计算max(0, mid - v[i])的和 ac代码

GDB调试之寄存器查看与修改(六)

一、寄存器查看命令 命令:"i register"查看所有的寄存器,如果只想查看指定的寄存器,则使用"i r 寄存器名称",如"i r rdi",寄存器的名称列表如下所示: 函数参数低于六个的时候,会把参数放在寄存器中,当函数参数高于六个参数的时候,就不会把参数放在寄存器中,而是放在函数栈中。 调试代码如下所示: 调试代码下载地址 #include <iostream> #incl

abc096d<素数筛,整除>

题目 D - Five, Five Everywhere 寻找n个素数,使得这n个素数中任意5个数之和都是合数。 思路 如果一个数除5余1,那么5个这样的数之和一定能被5整除; 筛出范围内所有满足上述条件,且为素数的数即可。 总结 如何想到除五余一这一点呢? 首先应思考如何构造合数,想到如果是5个数之和,那么就让这些数的和时满足被5整除最好,这样在选择不同的数时,能够利用个数确定保持某些不变

abc097d<并查集,排列>

题目 D - Equals 给出(1sim n)的排列p,给出(m)种对换((p_i, p_j)),在这(m)种对换中任选操作,对原排列对换任意多次。求能够实现的(p_i = i)的最大个数为多少? 思路 将m中对换中能够相互关联的位置归为一组,这组位置之间可通过对换操作实现任意顺序; 因而对于一组内的数据,是需要求出组中涉及的原始位置集合({i})与原始排列数集合({p_i})的交集,将所有组

armv8虚拟化原理笔记

随便记记,没有章法。 VTTBR_EL2和TTBR1_EL2有啥区别? VTTBR_EL2是内存虚拟化中stage2页表的基地址存放的寄存器,高16位存放了VMID,用于提高VM TLB性能; TTBR1_EL2,是指在VHE开启的情况下host OS可以在EL2运行,这时候内核使用的页表基地址就存放在这里; 设备模拟分为软件模拟和直接assign。前者通过stage 2 entry 设置为fau

Ansible - 定义变量

  Ansible 支持十几种定义变量的方式 Inventory 变量 Host Facts 变量 Register 变量 Playbook 变量 Playbook 提示变量 变量文件 命令行变量     Inventory 变量 1、定义变量(在主机清单配置文件中进行定义) [root@control ansib

KY158 找xC++

摆了几天,重新再来学习。 ‘ 把数据输入数组,然后遍历数组就行了,没什么难度。 #include<iostream> #include<cstdlib> using namespace std; int main(){ int n; while(cin >> n){ int* A=(int*)malloc(sizeof(int)*

KY199 查找C++

    二分查找,没什么好说的。关键在于排成有序数组。然而C++调用sort就可以了。 #include<iostream> #include<algorithm> #include<cstdlib> using namespace std; bool judge(int* A, int n ,int t){ int head =

<<  <  246  247  248  249  250  251  252  253  254  255  256  >  >>