算法=====================
文章平均质量分 93
acm记录
1900_
你热爱什么,你追求什么,你就成为什么
展开
-
圆排列问题详解(原理+代码)
回溯法解决圆排列问题原创 2021-12-14 11:48:13 · 10592 阅读 · 4 评论 -
register 寄存器变量
1.寄存器变量可以用来优化加速c语言程序2.声名只需在类型前多加register当对一个变量频繁被读写时,需要反复访问内存,从而花费大量的存取时间。为此,C语言提供了一种变量,即寄存器变量。这种变量存放在CPU的寄存器中,使用时,不需要访问内存,而直接从寄存器中读写,从而提高效率。寄存器变量的说明符是register。对于循环次数较多的循环控制变量及循环体内反复使用的...原创 2019-05-03 14:26:55 · 808 阅读 · 0 评论 -
ACM中一些细节问题
1、尽量不要使用万能头文件#include<bits/stdc++.h> 一是有些oj是不允许用的 二是 他会让你忘记一些比较长的头文件怎么写 比赛的时候不能用 那就gg2、c++打函数的时候,一定要打retrun。函数一定要有返回值 (这个很重要!)比如//这种写法自己可以运行 交题却显示编译错误//因为你写了两个if 系统...原创 2018-08-08 19:22:33 · 1146 阅读 · 0 评论 -
51nod1057-大数阶乘
题目链接:戳这里题目大意:输入N求N的阶乘的准确值。N(1<=N<=10000)思路:显然,10000的阶乘用什么也没法存下。这是个大数问题。而且还要考虑一个问题 我们如果套大数相乘模板 就增加了乘法的复杂度 可能会超时(没试,不知道)在网上学习了一个很巧妙的写法 数组分块模拟大数乘法主要原理呢 是由于乘法运算的封闭性,所以将大数划分后从低位依次...原创 2019-04-04 17:48:07 · 189 阅读 · 0 评论 -
基姆拉尔森计算公式---计算星期几
基姆拉尔森计算公式用于计算一个日期是星期几m 代表月份 d 代表日期 y代表年份公式 w= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400+1)%7所得到的w 代表星期 w对7取模得:0-星期日,1-星期一,2-星期二,3-星期三,4-星期四,5-星期五,6-星期六注意:当年的1,2月要当成上一年的13,14月进行计算...原创 2019-04-04 17:45:54 · 704 阅读 · 0 评论 -
快速幂
补充个知识点:快速幂中 我们经常会做取模运算一般 a%mod我们会写成(a+mod)%mod因为运算过程中 a可能会变成0而 程序在除法的分母为0或用0取模时会出现算术异常 也就会出现垃圾值 导致RE快速幂原理就不解释了网上很多留个快速幂模板//快速幂取模#include<bits/stdc++.h>#define ll ...原创 2019-03-10 16:01:52 · 143 阅读 · 0 评论 -
快速乘
快速乘快速乘可以解决 A*B%mod 爆long long的问题两种方法O(1)复杂度引用自2009年国家集训队论文,骆可强:《论程序底层优化的一些方法与技巧》原文中用的double 做题的时候建议用long double(longdouble舍弃低位且范围保留18位)typedef long long ll;const int mod=1e9+7;ll...原创 2019-03-10 15:59:12 · 219 阅读 · 0 评论 -
C语言文件读写(输入输出重定向)
freopen("D:\\test.txt","r",stdin);//文件读入 输入重定向freopen("D:\\test.txt","w",stdout);//文件写入 输出重定向文件读入(输入重定向)freopen ( " D:\\test.txt " , "r" , stdin );文件写入(输出重定向)freopen ( " D:\\t原创 2018-12-22 09:51:12 · 1971 阅读 · 0 评论 -
NYOJ954--N的阶乘的二进制表示最低位的1的位置
这个题和51nod1003 原理差不多51nod1003都是关于阶乘的一些技巧题目:原理:二进制数乘上2 末尾会多一个0 再乘一个二 末尾会再多一个0 也就是乘上2^2(2的平方)末尾会多两个0以此类推 末尾有多少0 怎么算这个数 的因子中2出现的次数 就是末尾0的个数 而求一个数字n的阶乘中某个因子出现的次数 我们的方法之前说过我们...原创 2018-11-10 23:46:56 · 274 阅读 · 0 评论 -
快速判断一个数能否被 2 ,3 ,4 ,5, 7,9,11 整除
性质1:如果数a、b都能被c整除,那么它们的和(a+b)或差(a-b)也能被c整除。性质2:几个数相乘,如果其中有一个因数能被某一个数整除,那么它们的积也能被这个数整除。 能被2整除的数:个位上的数能被2整除(偶数都能被2整除)能被3整除的数:各个数位上的数字和能被3整除能被4整除的数:个位和十位所组成的两位数能被4整除能被5整除的数:个位上的数都能被5整除(即个位为...转载 2018-09-24 13:59:17 · 2561 阅读 · 0 评论 -
hdu4883-模拟---区间计数小技巧
hdu4883用一维数组模拟时间轴,某个时刻来了num个顾客,就在这个时间点累加num 并且再离开的时间点累加 -num最后对整个数组 遍历累加 累加过程中最大的值 就是店内顾客同时吃饭最多的人数 也就是答案代码#include<cstdio>#include<iostream>#include<algorithm>#inclu...原创 2018-08-03 14:27:16 · 247 阅读 · 0 评论 -
GCD和exgcd
GCD最大公约数辗转相除法(又称欧几里得算法)当时,;否则递归或循环运算得出结果。#include<stdio.h>#include<iostream>#include<algorithm>using namespace std;int gcd(int a,int b){ int r; while(b>0){ r=b; ...原创 2018-04-30 13:47:28 · 301 阅读 · 0 评论 -
位运算初步入门&&状态压缩操作
位运算程序中的所有数在计算机内存中都是以二进制的形式储存的。位运算就是直接对整数在内存中的二进制位进行操作。位运算的用处很多,也很强大。首先再学习位运算之前,我们先复习以下,编码知识在计算机中,正数是直接用原码表示的,如5,在计算机中就表示为:0000 0101。负数用补码表示,如-5,在计算机中表示为1111 1011。原码 反码 补码问题原码:将一个整...原创 2018-05-01 10:42:39 · 632 阅读 · 1 评论 -
素数筛选法--hdu4548美素数
#include<algorithm>#include<stdio.h>#include<iostream>#include<math.h>#define maxn 1000010using namespace std;int prime[maxn];int n,l,r,t=1;bool isprime[maxn];int sie...原创 2018-07-26 09:49:56 · 263 阅读 · 0 评论 -
队列Q----双数组下标查找
链接比赛题目链接:https://www.nowcoder.com/acm/contest/131/A来源:牛客网 题目描述ZZT 创造了一个队列 Q。这个队列包含了 N 个元素,队列中的第 i 个元素用 Qi 表示。Q1 表示队头元素,QN 表示队尾元素。队列中的元素是 N 的一个全排列。ZZT 需要在这个队列上执行 P 次操作,操作分两种:FIRST X: 将元素 X 移...原创 2018-08-09 20:51:46 · 509 阅读 · 0 评论 -
汉诺塔问题(三柱及四柱)详解
汉诺塔(Hanoi Tower),又称河内塔,传说大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,任何时候,在小圆盘上都不能放大圆盘,且在三根柱子之间一次只能移动一个圆盘。问应该如何操作?需要求两个问题,一是求所需要的步数,二是求移动过程中每一步的做法步骤汉诺塔问题...原创 2018-08-19 19:27:53 · 6274 阅读 · 0 评论 -
约瑟夫环问题
约瑟夫环问题第一个解法引用了大佬的模板代码 但是感觉第二个公式法比较简便大佬博客原文在这里/* * n个人(编号 1...n),先去掉第m个数,然后从m+1个开始报1, * 报到k的退出,剩下的人继续从1开始报数.求胜利者的编号. */#include<stdio.h>#include<iostream>#include<algor...原创 2018-08-19 10:52:13 · 284 阅读 · 0 评论 -
读入优化和输出优化
前两天做牛客的题 才知道有这么个玩意。。。。。果然还是太菜 大佬们打比赛是去切题 我是去认识新名词。。。。。。题目也很直白 说了 读入文件较大,请使用读入优化,本机调试时请使用文件输入输出而且题目 也给出了优化写法 可以直接用 非常良心inline int read() { char c = getchar(); int x = 0, f = 1...原创 2018-09-11 22:05:22 · 399 阅读 · 0 评论 -
尺取法---poj3601
《挑战程序设计》148页题目链接poj3601题目的关键在于 subsequence of consecutive elements 所以是连续子序列所以我们可以使用尺取法具体尺取法怎么用参照样例5 1 3 5 10 7 4 9 2 8根据下图 走一遍就好了答案是2代码#include<stdio.h>#include<stri...原创 2018-10-16 09:37:05 · 298 阅读 · 0 评论