ACM
枸杞柠檬茶
行走在人生路上,笑看风起云涌,观四路八方,心中自有春秋。
一点点改变,一点点不一样,改变自己,世界因你变得不一样,蜕变的人生,正在上演,问我何以然也,只道一句:有所得,必有所失;有可为,有可不为!
展开
-
欧拉函数 打表
如果 大家 看完之后 还是 不太懂 的话 ,可以先把代码 记住 以后 会慢慢理解的 。 这个 欧拉函数 打表 还是 挺有用的 至于 欧拉函数 值的 计算 完全可以 用 线性筛法 查找 素数的时候 用一个 变量 计数 (素数的个数) 即可 求出 。 素数筛法 有好几个 而 线性筛法 为 时间复杂度 最低 的 也是 有前面两种 筛法 优化而来。#include原创 2017-08-04 15:52:42 · 326 阅读 · 0 评论 -
欧拉线性筛法求素数(顺便实现欧拉函数的求值)
我们先来看一下最经典的埃拉特斯特尼筛法。时间复杂度为O(n loglog n)int ans[MAXN];void Prime(int n){ int cnt=0; memset(prime,1,sizeof(prime)); prime[0]=prime[1]=0; for(int i=2;i<n;i++) { if(vis[i])原创 2017-08-04 15:32:13 · 436 阅读 · 0 评论 -
数论的欧拉定理证明 & 欧拉函数公式
欧拉函数 :欧拉函数是数论中很重要的一个函数,欧拉函数是指:对于一个正整数 n ,小于 n 且和 n 互质的正整数(包括 1)的个数,记作 φ(n) 。 完全余数集合:定义小于 n 且和 n 互质的数构成的集合为 Zn ,称呼这个集合为 n 的完全余数集合。 显然 |Zn| =φ(n) 。有关性质:对于素数 p ,φ(p) = p -1 。 对于两个不同素数 p, q ,它们的乘积 n = p *转载 2017-08-05 08:59:30 · 1372 阅读 · 0 评论 -
扩展欧几里德求解ax + by = c 的 最小正整数解 ( x, y)
大概思路 : 第一步 : 给出方程 ax + by = c 。 第二步 : 算出 辗转相除法 gcd(a, b) 。 第三步 : 运用 扩展欧几里德 ex_gcd(a, b)-》 ax + by = gcd(a,b) 的 一组解(x, y) 。 第三步: 根据 c % gcd(a, b) 判断是否 ax + by = c 有解 。原创 2017-11-05 15:55:01 · 7979 阅读 · 2 评论 -
快速幂 & 素数筛法
// 素数表 N static int visited[N]; memset(visited, 0, sizeof(visited)); int m = sqrt(N + 0.5); for(int i = 2; i <= m; i++) if(!visited[i]) for(int j = i*i; j <= N; j += i原创 2017-11-05 16:20:20 · 230 阅读 · 0 评论 -
二分的几种方法
这个分类方法我是从知乎是哪个面看到的,这里给大家普及一下:64种。 对其进行分类:取整方式:向下取整 向上取整 (共2种)**区间开闭:** 闭区间 左闭右开区间 左开右闭区间 开区间 (共4种)问题类型:**对于不下降序列a,求最小的i,使得a[i] = key 对于不下降序列a,求最大的i,使得a[i] = key 对于不下降序列a,求最小的i,原创 2018-01-24 11:33:16 · 844 阅读 · 0 评论 -
位运算 样例
12.2 位运算举例 取一个整数 a 从右端开始的 4~7 位 (1)先使 a 右移 4 位 a >> 4; (2)设置一个低 4 位全为 1 ,其余全为 0 的数,可以用下面方法实现: ~(~0<<4)~0 的全部二进制为 1 ,左移 4 位,这样右端低 4 位为 0。 (3)将上面二者进行 & 运算。 a >> 4 & ~(~0<<4)include <stdio.h>void m原创 2017-08-10 19:50:21 · 306 阅读 · 0 评论 -
Bound Found POJ - 2566(pair的简单运用)
Bound FoundSignals of most probably extra-terrestrial origin have been received and digitalized by The Aeronautic and Space Administration (that must be going through a defiant phase: “But I want to us原创 2017-08-26 16:10:07 · 317 阅读 · 0 评论 -
数字1的数量 51Nod - 1009
## 题目 ##给定一个十进制正整数N,写下从1开始,到N的所有正数,计算出其中出现所有1的个数。 例如:n = 12,包含了5个1。1,10,12共包含3个1,11包含2个1,总共5个1。Input 输入N(1 <= N <= 10^9)Output 输出包含1的个数Sample Input 12Sample Output 5题意分析:这个题呢,刚开...原创 2018-08-01 10:00:42 · 252 阅读 · 0 评论 -
c++ 引用于指针的区别
c++引用与指针的区别原创 2018-01-26 11:02:45 · 283 阅读 · 0 评论 -
东东的女朋友(二)(简单解法)
Description我们已经知道了,东东有很多的女朋友。每个女朋友都要东东陪她们,但是现在东东的女朋们每天也都需要上课,所以不可能一整天都有时间。现在的问题是,给出东东女朋友每一天的空闲时间,问东东最少用多少天可以陪每个女朋友至少一次。因为东东还要留很多时间来学习算法呢。当然当东东在陪一个女朋友时间段内不可以同时去陪另一个女朋友。Input第一个数t表示有t组测试实例,每组测试实例的第一个数n(n原创 2017-11-01 19:58:15 · 643 阅读 · 0 评论 -
memset 函数 的使用
memset()的函数, 它可以一字节一字节地把整个数组设置为一个指定的值。 memset()函数在mem.h头文件中声明,它把数组的起始地址作为其第一个参数,第二个参数是设置数组每个字节的值,第三个参数是数组的长度(字节数,不是元素个数)。相信大家 在学图论, 最小生成树,最短路 这一块的 时候 肯定都用过 cstring 头文件中的 memset 函数吧 , 这几天 我 对这个 mems原创 2017-08-02 09:54:55 · 552 阅读 · 1 评论 -
欧几里德, 与 扩展欧几里德
扩展欧几里得算法是欧几里得算法(又叫辗转相除法)的扩展。除了计算a、b两个整数的最大公约数,此算法还能找到整数x、y(其中一个很可能是负数)。通常谈到最大公因子时, 我们都会提到一个非常基本的事实: 给予二整数 a 与 b, 必存在有整数 x 与 y 使得ax + by = gcd(a,b)。有两个数a,b,对它们进行辗转相除法,可得它们的最大公约数--这是众所周知的。然后,收集辗转相除法中产生的式转载 2017-08-03 16:01:22 · 354 阅读 · 0 评论 -
3的幂的和 51Nod - 1013 (等比数列求和 + 快速幂 + 乘法逆元)
求:3^0 + 3^1 +…+ 3^(N) mod 1000000007 Input 输入一个数N(0 <= N <= 10^9) Output 输出:计算结果 Input示例 3 Output示例 40这道题很明显需要用到快速求幂,但是简单的快速求幂无法满足这道题的要求,如何求和是一个很重要的问题,求和有一个简单的方法,也有一个复杂的,先说复杂的,...转载 2018-08-01 12:47:18 · 320 阅读 · 0 评论 -
int & a = b 的 作用?
先来看一组代码:#include #include #include #include using namespace std;int main(){ int a = 1; int & b = a; b = a + 1; cout原创 2017-10-21 19:45:13 · 8009 阅读 · 4 评论 -
位运算
12 位运算 C语言是为描述系统设计的,因此它应该具有汇编语言所以完成的一些功能。C语言既有高级语言的特点,又具有低级语言的功能。因而具有广泛的用途和很强的生命力。12.1 位运算符和位运算运算符 含义& 按位与| 按位或^ 按位异或~ 取反<< 左移 右移 说明:(1)位运算符中除 ~ 外,均为二目运算符,即要求出侧各有一个运算量。(2)运算原创 2017-08-10 19:48:56 · 264 阅读 · 0 评论 -
逆序排列 51Nod - 1020 (dp)
逆序排列在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序。一个排列中逆序的总数就称为这个排列的逆序数。 如2 4 3 1中,2 1,4 3,4 1,3 1是逆序,逆序数是4。1-n的全排列中,逆序数最小为0(正序),最大为n*(n-1) / 2(倒序) 给出2个数n和k,求1-n的全排列中,逆序数为k的排列有多少种? 例如:n = 4 ...原创 2018-08-02 13:00:27 · 322 阅读 · 0 评论 -
石子归并(dp + 四边形不等式优化)
题目N堆石子摆成一个环。现要将石子有次序地合并成一堆。规定每次只能选相邻的2堆石子合并成新的一堆,并将新的一堆石子数记为该次合并的代价。计算将N堆石子合并成一堆的最小代价。例如: 1 2 3 4,有不少合并方法 1 2 3 4 => 3 3 4(3) => 6 4(9) => 10(19) 1 2 3 4 => 1 5 4(5) => 1 9(14) =&...原创 2018-08-03 15:27:01 · 541 阅读 · 0 评论 -
石子归并 51Nod - 1021
石子归并(DP)N堆石子摆成一条线。现要将石子有次序地合并成一堆。规定每次只能选相邻的2堆石子合并成新的一堆,并将新的一堆石子数记为该次合并的代价。计算将N堆石子合并成一堆的最小代价。例如: 1 2 3 4,有不少合并方法 1 2 3 4 => 3 3 4(3) => 6 4(9) => 10(19) 1 2 3 4 => 1 5 4(5) => 1 9(...原创 2018-08-02 20:35:21 · 158 阅读 · 0 评论 -
字符串函数全集
C语言字符串函数大全函数名: stpcpy功 能: 拷贝一个字符串到另一个用 法: char *stpcpy(char *destin, char *source);程序例:#include <stdio.h>#include <string.h>int main(void){ char string[10]; char *str1 = "abcdefghi"; s转载 2017-10-28 16:09:14 · 220 阅读 · 0 评论 -
1011 - Marriage Ceremonies (状压DP(dfs))
题目连接Time Limit: 2 second(s) Memory Limit: 32 MB You work in a company which organizes marriages. Marriages are not that easy to be made, so, the job is quite hard for you.The job gets more diffic原创 2018-01-28 10:46:11 · 269 阅读 · 0 评论 -
欧拉函数达标求值
题目连接代码:#include #include #include #include #define LL long longusing namespace std;const int N = 5 * 1e6;unsigned LL phi[N + 10];//采用 无符号的数组,应为数据太大会变成负数void phi_table()// 欧拉函数打标{ f原创 2018-01-24 20:29:23 · 478 阅读 · 0 评论 -
1003 - Drunk (from LightOj)
One of my friends is always drunk. So, sometimes I get a bit confused whether he is drunk or not. So, one day I was talking to him, about his drinks! He began to describe his way of drinking. So, let原创 2018-01-23 19:42:08 · 371 阅读 · 0 评论 -
用来作弊的药水
链接:https://www.nowcoder.com/acm/contest/90/L 来源:牛客网题目描述在一个风雨交加的夜晚,来自异世界的不愿透露姓名的TMK同学获得了两种超强药水A、B。根据说明书,TMK知道了这两种药水的作用:(1)药水A能使人的生命值提高,每饮用1个单位能使他生命值变成原来的x倍,即每饮用p个单位能使他的生命值变成原来的x^p(x的p次方)倍。(2)药水B...原创 2018-03-24 20:24:28 · 453 阅读 · 0 评论 -
ACM STUDT NOTE(Record every good moment)
ACM Study Note座右铭:Life is like a watch , you can return to the starting point , they are not yeserday!All endings are beginnings, we just don’t know it at the time! 人生是一场不需要彩排的电影,而你就是主角,你的人生因你原创 2017-08-27 09:29:25 · 1110 阅读 · 1 评论 -
dfs 例题(寻找最大距离)
A - 滑雪 POJ - 1088Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。Michael想知道载一个区域中最长底滑坡。区域由一个二维数组给出。数组的每个数字代表点的高度。下面是一个例子 1 2 3 4 516 17 18 19 615 24 25 20 714 23 22 2原创 2017-10-21 16:20:37 · 1078 阅读 · 0 评论 -
depth first search 入门例题(油田的个数)
B - Oil Deposits POJ - 1562题意: 输入数据有多组,输入两个整数,表示数组的行和列,下面输出,一个二维的字符串数组,仅包含‘@’和 ‘*’ 两种字符,相邻的‘@’ 表示 同一个油田,求总共个几个油田。 这道题也是dfs 的很简单的题型,也是一个原始的模板。 代码如下:#include <iostream>#include <cstdio>#include <cst原创 2017-10-21 15:39:24 · 258 阅读 · 0 评论 -
算法学习资料(bolg net)
刘毅原创 2018-01-30 11:21:13 · 297 阅读 · 0 评论 -
蓝桥杯研究生组C/C++程序设计例题分析
第十届蓝桥杯大赛C/C++程序设计省赛1 试题A-立方和1.1 问题描述1.2 代码实现#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>//常用的算法函数库,eg:sort()等 #define LL long long using namespace std;bool CheckNum(int num){ //这个循环是为了遍历nu原创 2021-04-15 16:13:20 · 2412 阅读 · 0 评论 -
1009 - Back to Underworld(DFS)
题目连接 Time Limit: 4 second(s) Memory Limit: 32 MBThe Vampires and Lykans are fighting each other to death. The war has become so fierce that, none knows who will win. The hu原创 2018-01-28 12:51:38 · 264 阅读 · 0 评论 -
拓扑排序(判断是否存在环,或者对有关任务进行排序进行排序)
题目连接:Drunks题目的大意:题目大意及另一种并查集的方法了解一下拓扑排序的大概意思:拓扑排序本体 阶梯大意:《1》用map对字符串进行编号《2》用拓扑排序 进行判断是否存在环代码如下:#include #include #include #include #include #include #include using namespace std原创 2018-01-24 10:01:29 · 722 阅读 · 0 评论 -
栈和 队列 和 优先队列的 简单操作(初学者)
1. 栈关于栈简单的理解就是一个 “先进后出”的容器。下面为基本的操作:#include <stack> 头文件stack<int> s 创建一个 存储 int 型 的栈 ,类似的 int 还可以 改为:double float char 或者 结构体s.push(x) 让 x 这个元素进栈s.pop() 栈中的 第一个 元素出栈原创 2017-10-15 13:58:08 · 274 阅读 · 0 评论 -
数独(c++ dfs实现)
数独概念,思路,解法思路,C++code该博客整体代码的思路十分的清晰,值得借鉴! 上述博客当中的代码dfs知识输出的一种数组的答案,如果该数独有多中解法的话,只需将dfs的代码简单改动即可(如下):void dfs(int row,int col){ if (row>9) //如果行超出9行,直接输出 { for (int i=1; i9; i+原创 2018-01-29 16:54:20 · 2606 阅读 · 0 评论 -
ACM 编程 出错 小知识 总结 (continue update)
2017.8.24.14.56. 由于 一个数组 开小啦 从而导致 oj 提示 超时 , 改了 好久。。。。原创 2017-08-24 14:58:34 · 348 阅读 · 0 评论 -
1293: 大斐波数(acm.zzuli.edu.cn)
DescriptionFibonacci数列,定义如下: f(1)=f(2)=1 f(n)=f(n-1)+f(n-2) n>=3。 计算第n项Fibonacci数值。 Input输入第一行为一个整数N,接下来N行为整数Pi(1Output输出为N行,每行为对应的f(Pi)。Sample Input5 1 2 3 4 5 Sample Output原创 2017-11-12 15:07:50 · 1828 阅读 · 0 评论 -
1005 - Rooks(排列组合,大树乘法溢出问题)
题目连接这道题 是有规律的,规律呢比较简单,相信大家都已经知道了,下面关键是如何处理溢出的问题了;由于题目中的 n 是 0到30 的,C(n, m) 用longlong int 存储的话不会溢出,但是和后面的A(n,m)相乘的时候可定会溢出的(long long int也不行),在 C(n, m)这里,我进行了除去公约数的运算,假设 C(n,m)= num, 然后 num * A(n,m)原创 2018-01-24 18:53:32 · 409 阅读 · 0 评论 -
程序设计比赛知识总结
引言小老虎和阿甜一起报了研究生的蓝桥杯程序设计比赛,比赛内容是C/C++程序设计,我们的目标都是省一(之前没听说过蓝桥杯省赛,这次专门问了问工作人员,今年确实有省赛,嘿嘿),故给阿甜总结这个编程秘籍(嘻嘻),内容都是小老虎之前在ACM队学习到的知识,不过也选择那些比较实用的进行总结,希望阿甜学习完之后,编程能力大大提高,和小老虎一起拿省一,然后导师快快送论文,小老虎快快发论文,快快找工作,挣钱给阿甜花!!!加油!一、 优先队列1)定义:可以自动实现内部排序的队列,可以自定义排序规则。2)代码实现如下原创 2021-01-23 22:34:32 · 965 阅读 · 0 评论 -
1- n , n个数的全排列(dfs)
这个模板呢可以应用于许多地方,例如:一串字符的全排列;或者给你一段字符或者数字,然后让你找到一组或者多组满足特定要求的 排列;给你一组数, 然后让你求相邻两个数有特定关系的排列:等等许多类似的问题都可以通过下面这个求解n个数的全排列代码 来改变,可以都过添加以下函数,或者修改一下dfs 的 一些条件;#include <iostream>#include <cstdio>#include <cs原创 2017-10-21 14:54:31 · 1054 阅读 · 0 评论 -
在线判题(字符串)
DescriptionLittleTom开发了一个在线判题系统,判题系统需要把用户提交上来的代码编译成可执行文件,然后运行。而用户会提交什么样的代码是无法预知的,所以LittleTom做了充分的准备,比如阻止解题程序访问文件系统、阻止解题程序访问注册表、阻止解题程序修改系统设置、阻止解题程序关闭系统、阻止解题程序超限或非法使用内存、阻止解题程序的运行时间超过设定时间等。这些工作LitteTom都已完原创 2017-10-27 13:05:55 · 2599 阅读 · 0 评论 -
c语言main函数参数问题
我们经常用的main函数都是不带参数的。因此main 后的括号都是空括号。实际上,main函数可以带参数,这个参数可以认为是 main函数的形式参数。C语言规定main函数的参数只能有两个, 习惯上这两个参数写为argc和argv。因此,main函数的函数头可写为: main (argc,argv)C语言还规定argc(第一个形参)必须是整型变量,argv( 第二个形参)必须是指向字符串的指针数组...转载 2020-02-11 14:18:47 · 2296 阅读 · 0 评论