自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(309)
  • 收藏
  • 关注

原创 大数模板

java中大数开方(被开方数不超过1000位)import java.util.*;import java.math.*; public class Main{ public static void main(String[] args) { Scanner cin=new Scanner(System.in); ...

2018-09-15 20:02:56 194

原创 数论模板

1. 辗转相除法(欧几里得除法)int gcd(int a,int b){ return b==0?a:gcd(b,a%b);}或者c++直接用函数__gcd()2.扩展欧几里得int exgcd(int a,int b,int &x,int &y){ if(b==0) { x=1; y=0; return a; } int k=ex...

2018-04-15 21:51:48 306

原创 LeetCode 15. 三数之和 减杂

题目:给你一个包含 n 个整数的数组nums,判断nums中是否存在三个元素 a,b,c ,使得a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。思路:初始暴力复杂度,且可能有重复。要去重,可以将数组进行排序,使三元组(a,b,c)满足a<=b<=c,即不重复地在同一个位置取相同的数。但复杂度没变。移项可得-a=b+c,也就是说当三元组中的一个数固定时,另外两个数的一个增大,另一个肯定要减小,因此第二和...

2021-11-11 13:18:21 253

原创 HDU - 5514 Frogs —— 容斥

题意:有n只青蛙m块石头,每只青蛙跳的长度是固定的,问所有被跳过的石头的下标和思路:转化为求0~m-1之间,gcd(ai,m)的倍数的和求一个数的倍数和是可以直接用等差数列计算出的,但是会有数被重复计算,我们要做的就是用容斥计算重复的数首先,gcd(ai,m)一定是m的因子,所以需要容斥的数只有可能是m的因子,1e9的数的因子最多有1600+,所以可以通过预处理出m的因子来容斥...

2018-10-19 11:37:37 219

原创 CodeForces - 768F Barrels and boxes —— 组合数

题意:有n个盛食物的箱子,m个盛酒的箱子,只有同种箱子能叠在一起,只有不同种的箱子能相邻摆放,问所有酒箱垒出的高度都大于h的概率思路:需要求出所有摆放的情况总数和满足条件的情况数枚举酒箱的堆数i,即把m分成i个不为0的数,由隔板法,情况总数为C(m-1,i-1)这时食物箱的摆放会出现三种情况i-1堆时,情况总数为C(n-1,i-2)i堆时,情况总数为C(n-1,i-1)...

2018-10-10 10:41:53 260

原创 CodeForces - 768E Game of Stones —— nim博弈变种

题意:在石堆中取石子,每次在一堆中取任意个,但是不能取这堆石子以前被取过的数量思路:nim的变形,求出每堆石子最多能被取多少次(依次取1个2个3个等),异或起来即可这里的1个2个3个就相当于nim博弈里的每堆石子的1#include &lt;iostream&gt;#include &lt;cstdio&gt;#include &lt;cmath&gt;#include...

2018-10-10 10:19:25 328

原创 CodeForces - 768C Jon Snow and his Favourite Number —— 规律题

题意:进行操作,将数列排序,奇数位上的数与x异或,问重复进行k次操作,得到的数列中最小和最大值是多少思路:多找几个数模拟一下可以看出是有循环节存在的,就直接暴力找循环节,然后取一下模#include &lt;iostream&gt;#include &lt;cstdio&gt;#include &lt;cmath&gt;#include &lt;vector&gt;#in...

2018-10-10 10:13:22 367

原创 CodeForces - 768B Code For 1 —— 递归分治

题意:把一个数n拆分,奇数拆成n/2,1,n/2,偶数拆成n/2,0,n/2,1和0不可拆,问拆分后从l位置到r位置1的个数思路:分治递归拆分即可...想的太多...n最大是2^50,最多递归调用也才是高为50的二叉树#include &lt;iostream&gt;#include &lt;cstdio&gt;#include &lt;cmath&gt;#includ...

2018-10-10 10:03:58 448

原创 bzoj - 2115 Xor —— 线性基

题意:求图中从1点到n点的所有路径中边权值异或的最大值思路:首先要理解,路径可以任意异或环像图中,从1到n的黑色路径,可以由任意一条红色路径到一个环,走遍环之后,再通过红色路径回到黑色路径上,这时红色路径上的值被异或了两次为0,结果就相当于是黑色路径异或蓝色环环是没有大小限制的,甚至可以包括黑色路径,所以通过这种方法可以由任意一条从1到n的路径得到所有的路径剩下的问题一...

2018-10-10 09:51:24 255

原创 HDU - 3949 XOR —— 线性基

题意:询问给定的数列里第k大的异或和思路:线性基将所有数插入线性基之后,所有62个数有的是0,其他数最高位1的位置不相同用类似高斯消元的方法将线性基变为每个数只有最高位1,这样就可以方便的求出第k大的异或最大的异或值一定是这些里面所有数的异或(全部能为1的位置都是1),第二大的异或值一定是最大的去掉最后一个1,依此类推(其实结果就是k的二进制里的1的下标对应的数的异或)...

2018-10-10 09:27:03 235

原创 zoj - 2460 元素 —— 线性基

思路:要使得最后得到的魔力值最大,只需要根据矿石的魔力值从大到小使用几个数异或,不能和之前能异或出的数相同,恰好是线性基插入操作#include &lt;iostream&gt;#include &lt;cstdio&gt;#include &lt;cmath&gt;#include &lt;vector&gt;#include &lt;map&gt;#include &lt;...

2018-10-10 09:00:50 195

原创 CodeForces - 633B A Trivial Problem

题意:问所有x,使得x阶乘的末尾恰好有n个0思路:计算阶乘的末尾0的个数就是计算这个数中有多少个5的倍数然后直接暴力就可以了#include &lt;iostream&gt;#include &lt;cstdio&gt;#include &lt;cmath&gt;#include &lt;vector&gt;#include &lt;map&gt;#include ...

2018-10-02 09:55:39 205

原创 CodeForces - 618A Slime Combining

题意:不断地向当前数列的最右侧放1,一旦出现连续的两个数x相等,就合并为x+1,问放n次1最后数列的值思路:因为是两个1合并形成2,所以可以看作二进制的加减,模拟一下就会发现答案就是n的二进制的每个1所在的位置#include &lt;iostream&gt;#include &lt;cstdio&gt;#include &lt;cmath&gt;#include &lt;...

2018-10-02 09:46:27 279

原创 CodeForces - 618B Guess the Permutation

题意:矩阵里bij=min(ai,aj)求满足条件的a数组思路:胡乱搞一下,每行出现次数最多的数就是数组这个这个位置的数,最后剩两个出现都出现一次的,一个放n一个放n-1#include &lt;iostream&gt;#include &lt;cstdio&gt;#include &lt;cmath&gt;#include &lt;vector&gt;#includ...

2018-10-02 09:40:39 231

原创 CodeForces - 633D Fibonacci-ish —— 斐波那契数列

题意:有1000个数,问能形成的最长斐波那契数列的长度思路:只要确定了数列的前两项,数列就已经确定了,所以可以枚举前两项,来找剩下的最长因为数的绝对值小于1e9,斐波那契数列的增长速度很快,项数很少用map记录了一下每个数出现的个数,方便搜索要特判0的情况,因为0很多,就退化为n^3的复杂度了#include &lt;iostream&gt;#include &lt...

2018-10-02 09:33:15 276

原创 CodeForces - 635D Factory Repairs —— 点更新 区间查询

题意:工厂生产产品,开始时每天生产b个,维修连续的k天后变成每天生产a个第di天有需求量为ai的订单,每个订单只能当天生产,不能今天生产的明天卖问若从某天开始维修,能完成的订单里的产品总数思路:用线段树维护,每个节点里分别记录这个区间内修理之前和修理之后能完成的产品总数,询问时分别查询修理前和修理后要注意订单是可以叠加的,点更新时不是赋值是累加#include &lt...

2018-10-02 09:23:39 199

原创 CodeForces - 633C Spy Syndrome 2 —— 字典树+dfs

题意:问一个字符串能否由一些单词反转,再转为小写后构成思路:用字典树记录每个字符串,然后dfs进行搜索字典树要先向后取值再判断能否形成单词..好久不写手都生了#include &lt;iostream&gt;#include &lt;cstdio&gt;#include &lt;cmath&gt;#include &lt;vector&gt;#include &lt;...

2018-09-30 16:47:39 265

原创 Gym - 101775K Downgrade

题意:等级由大等级和小等级构成,当小等级达到大等级对应的最大值,再升一级大等级就加1,小等级变为1降级时等级每次变为以大等级作为经验值对应的等级思路:题意比题难系列...维护一下等级的前n项和,就是经验值对应的大等级,模拟一下就可以了当这次和上次所处的大等级一样时,就不用再模拟了,以后都一样用long long#include &lt;iostream&gt;#...

2018-09-30 15:14:52 564

原创 Gym - 101775J Straight Master —— 差分数组

题意:问能不能通过操作多次将长度为3~5的区间都加1得到给定的数列思路:利用差分数组的思想,将区间X,Y都加1可以变成在X处加1,在Y+1处减1,这样我们可以通过拿这一项减前一项得到给定数列的差分数组,因为每个区间长度至少要是3,所以在每个大于0的位置,找它加3位置后面是否有足够的负数与其对应,一旦出现有数不能变成0,就肯定不能形成#include &lt;iostream&gt...

2018-09-30 15:07:51 427

原创 Gym - 101775L SOS —— 规律

题意:长度n的棋盘,依次向里面放S或者O,谁下的时候形成了SOS谁就赢Panda先手Sheep后手思路:这题真的蛮有趣所有情况中,只有形成了S - - S这种情况时,不管再向里面填了什么,另一个人都会赢,这是这题的突破口(1)当n小于7的时候,随便模拟一下知道最优情况下都是平局,不会有一个人会让另一个人赢(2)当n为大于7的奇数时,先手必胜以7为例:先手   ...

2018-09-30 10:07:08 664

原创 HDU - 5979 Convex —— 几何计算

题意:多边形每个顶点到原点的距离都是d,已知两两相邻线段的夹角,问多边形的面积思路:两两相邻线段可以形成一个等腰三角形,知道顶角的度数,可以求面积多边形的面积就是每个小等腰三角形的面积之和#include &lt;iostream&gt;#include &lt;cstdio&gt;#include &lt;cmath&gt;#include &lt;vector&gt...

2018-09-30 09:27:28 172

原创 HDU - 5973 Game of Taking Stones 威佐夫博弈+高精度

威佐夫博弈的模板题判断(√5-1)/2 *(b-a)是否和a相等但是数据很大,用Java开了高精度,二分求√5的值import java.util.*;import java.math.*;public class Main { public static void main(String args[]) { Scanner cin=new Scanner(Syst...

2018-09-30 09:16:47 207

原创 HihoCoder - 1249 Xiongnu's Land —— 差分数组

题意:两个人分一块横坐标0~R,纵坐标无限大的土地,里面有许多矩形形状的绿洲,保证绿洲没有重叠需要选定一个整数横坐标x,满足:1.坐标左侧的绿洲面积大于等于右侧的绿洲面积2.坐标左侧的面积要尽可能大问x是多少思路:要满足第二个条件,只需要从R处向左找第一个满足条件的位置,问题在如何快速求出左右两侧的绿洲面积绿洲都是矩形,假设有一个左上角坐标XY,宽度W高度H的矩形,...

2018-09-30 09:06:25 251

原创 CodeForces - 632C The Smallest String Concatenation

题意:将所有的字符串连接使得字典序最小思路:精妙!#include &lt;iostream&gt;#include &lt;cstdio&gt;#include &lt;cmath&gt;#include &lt;vector&gt;#include &lt;map&gt;#include &lt;set&gt;#include &lt;stack&gt;#inc

2018-09-30 08:47:23 196

原创 CodeForces - 632B Alice, Bob, Two Teams ——思维

题意:选定字符串的一个前缀或者后缀,将里面的A变为B,B变为A,问所有B下标对应值的和的最大值思路:将区间反转也就是在原本的基础上加A的值,减B的值,从前到后或者从后到前遍历,记录当前这些值和的最大值如果不是选定前缀后缀,而是任意选定一段区间,可以用尺取法选一段区间和的最大值#include &lt;iostream&gt;#include &lt;cstdio&gt;#...

2018-09-30 08:45:17 318

原创 HDU - 4407 Sum —— 容斥 求互斥数的和

题意:数组开始为1~n两个操作,一是查询下标x~y之间与p互素的数的和,二是将pos位置的数改为value思路:容斥可以很容易地求1~n之间与p互素的数的个数,本质是运用了对p的每个因子,1~n中有多少个这个因子的倍数那么我们要求互素的数的和,其实也是求p的每个因子在1~n中的倍数的容斥,只是原本求个数时是n/sum直接求出个数,现在求和是求sum..sum*2..sum*3....

2018-09-25 20:09:17 276

原创 HDU - 5469 Antonidas —— dfs+剪枝

题意:树上的每个节点都有一个字母,问有没有一条路径上的字母是目标串思路:从每个符合第一个字母的地方搜索搜索分为向父节点和子节点搜,向子节点搜时必须满足子节点子树的最大深度要大于剩余的目标串长度所以要预处理出每个节点的父节点和节点子树的最大深度搜索的时候记录每个点是否被访问过就A,但记录路径上这个点的上一个点就T,不知道为啥....#include &lt;iostre...

2018-09-17 15:40:32 236

原创 模拟实现请求分页虚存页面替换算法

编写程序, 由必要的数据结构、 主函数、 页面置换算法函数和显示内存使用函数构成,模拟实现请求分页管理中至少两种页面替换算法。要求程序运行时:(1)显示主菜单,包含初始化内存、随机生成页面访问序列、模拟进程执行过程、显示内存使用情况、显示进程页面状态。(2)接收用户输入参数:可用内存容量、页面长度(即主存块大小)、进程个数、进程长度(页面数)等。(3) 可模拟一个进程的动态执行过程中各...

2018-09-16 21:59:59 2546

原创 动态多分区存储管理模拟系统

编写程序,由必要的数据结构、主函数、主存分配函数和主存回收函数构成,实现在动态多分区管理方式下对主存分配与回收的模拟。要求程序运行时:(1)显示一个主菜单:初始化、显示主存使用情况、模拟分配、模拟回收、退出。(2)模拟分配:输入进程名、容量;进入二级菜单选择使用 First_Fit 还是 Best_Fit。在主存分配函数中,要求实现的基本功能操作:寻找空闲分区,空闲分区表的修改,已分配分...

2018-09-16 21:58:23 3316

原创 生产者-消费者问题

设计任务: 利用信号量解决生产者-消费者问题 解决方案 生产者-消费者问题是典型的进程同步问题, 其本质是如何控制并发进程对有界共享区的访问. 生产者进程生产产品,然后将产品放置在一个空缓冲区中供消费者进程消费. 消费者进程从缓冲区中获得产品,然后释放缓冲区. 当生产者进程生产产品时,如果没有空缓冲区可用,那么生产者进程必须阻塞,等待消费者进程释放出一个空缓冲区. 当...

2018-09-16 21:56:24 339

原创 多线程编程—单词统计和热词统计

设计任务 从网上下载一些英文小说,用多线程实现文本本件中所含单词总数的统计。 从网上下载一些英文小说,统计单词出现频率并从中找出Top10热词。 解决方案 区分单词原则:凡是一个非字母或数字的字符跟在字母或数字的后面,那么这个字母或数字就是单词的结尾. 允许线程使用互斥锁来修改临界资源,确保线程间的同步与协作。 如果两个线程需要安全地共享一个公共计数器,需要把公共计数器加...

2018-09-16 21:55:39 3138 1

原创 HDU - 5468 Puzzled Elena —— 容斥

题意:每个点的子树上有几个节点与该节点的权值互质思路:首先要明白怎么求一个集合中有多少个数与n互素将集合中的数用算术基本定理分解,记录每个数能形成的所有因子的个数,然后将n分解进行容斥,可以求出与n不互素的个数,总数减掉不互素的个数就是互素的数的个数这个题也一样,只是把集合改成了树上的节点。当我们dfs遍历树时,一定先访问父节点再访问子树,我们分别在访问父节点时和遍历完子树...

2018-09-16 21:44:23 188

原创 HYSBZ - 4551 BZOJ - 4551 树 —— dfs序+线段树

思路:对一个节点打标记,就意味着询问这个节点的子树节点都是这个节点,如果有多个父节点被标记,只需要记录深度最深的那个dfs序遍历树,记录每个点的深度,维护线段树,区间更新点查询,因为我们只要深度最大,所有不用把区间下放,只需要查找整个线段树路径上深度最大的#include &lt;iostream&gt;#include &lt;cstdio&gt;#include &lt;cm...

2018-09-16 21:31:35 186

原创 HDU - 5475 An easy problem

题意:初值为1,操作1时乘上后面的数,操作2时除以后面的数作为下标时乘的那个数保证操作2只会对不相同的操作1输出结果模y思路:开始想逆元乘,然后模数不一定有逆元因为操作只有乘法,可以用线段树维护区间乘积,操作2时把前面的值改为1#include &lt;iostream&gt;#include &lt;cstdio&gt;#include &lt;cmath&gt...

2018-09-16 21:25:27 152

原创 HDU - 5478 Can you find it

题意:求满足题目式子的所有a,b对思路:暴力打表可以发现,若满足n=1和n=2,则对于大于2的n都满足因为a和b都小于c,直接暴力所有可能的情况#include &lt;bits/stdc++.h&gt;using namespace std;#define ll long longll c,k1,k2,b1;int casnum=1;struct node{ ...

2018-09-16 21:18:58 120

转载 C++中关于cin、cin.get()、cin.getline()、getline()、gets()等函数的用法

C++中关于cin、cin.get()、cin.getline()、getline()、gets()等函数的用法1.cin&gt;&gt;用法1:最基本,也是最常用的用法,输入一个数字:注意:&gt;&gt; 是会过滤掉不可见的字符(如 空格 回车,TAB 等) cin&gt;&gt;noskipws&gt;&gt;input[j];//不想略过空白字符,那就使用 noskipws ...

2018-09-11 21:44:08 152

原创 ACM-ICPC 2018 沈阳赛区网络预赛 G. Spare Tire

题意:给了a数组的递推式,问所有满足1&lt;=i&lt;=n且i与m互素的ai之和思路:由a的递推式可以很容易地得到ai=i*(i+1)求所有满足条件的数不好求,我们可以用所有的减去不满足条件的,即与m不互素的数贡献的a值根据算数基本定理将m分解,与m不互素的就是至少有其中一个因子,算所有的所以要容斥对于每个因子积sum,会形成sum,2*sum,3*sum...[n/s...

2018-09-08 17:00:01 863 2

原创 HDU - 4965 Fast Matrix Calculation —— 矩阵快速幂

题意:n最大是1000,k最大是6,矩阵A规模n*k,矩阵B规模k*n,求矩阵(A*B)^(n*n)次方中每个数模6的和思路:求矩阵的幂可以用快速幂解决,但A*B最大是1000×1000的,快速幂的复杂度是1e9,会T把(A*B)^(n*n)展开可以得到(A*B)^(n*n)=A*B  *  A*B  *  A*B  *....=A  *  B*A  *  B*A  *...

2018-09-08 16:33:25 136

原创 HDU - 4990 Reading comprehension —— 矩阵快速幂

题意:由给定的代码求第n个数模m思路:看代码能够得到,奇数an=4*an-2+1,偶数an=4*an-2+2所以直接分奇偶分别构造矩阵,快速幂#include &lt;bits/stdc++.h&gt;using namespace std;#define mod m#define ll long longll n;ll m;ll num[20];struct ...

2018-09-07 10:53:21 197

原创 CodeForces - 450B Jzzhu and Sequences

思路:移项得到Fn=Fn-1-Fn-2构造矩阵1 -11 0注意long long  取模 和n=1和2的情况#include &lt;iostream&gt;#include &lt;cstdio&gt;#include &lt;cmath&gt;#include &lt;vector&gt;#include &lt;map&gt;#include &lt;s...

2018-09-07 10:45:51 184

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除