自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 YYHSOI4月月赛考点与分析

提高赛#A 计算器的改良 NOIP2000提高组考点:模拟,字符串的读取与处理 难度:普及组 期望分数:100#B 神奇的幻方 NOIP2015提高组考点:模拟,基本程序操作 难度:入门 期望分数:100#C 求和 NOIP2015普及组考点:前缀和优化、排序、数学优化思想 难度:提高组基础 期望分数:20#D 推销员 NOIP2015普及组考点:贪心、线段树优化 难度:提高组基础

2017-03-18 21:51:34 358

原创 笔记

21日尼克的任务N T1 p1 n1 … 状态:f[i] i~n段内最大空闲 状态转移方程: i时刻无任务 f[i]=f[i+1]+1 i时刻有任务 f[i]=max{f[ej+1]} ej是某任务结束的时间 决策:选择结束时间状态(最大空闲)最多(贡献最大)的任务化工厂装箱员状态:f[i][A][B][C](A+B+C<=10) 拿了i个后手中有A、B、C的数量的最少装箱次数 决策:装

2017-01-22 17:03:59 346

原创 CCF基础P54练习题解

练习1#include <string>#include <iostream>#include <cctype>using namespace std;bool judge(string s) { if(!isalpha(s[0])) { return false; } string::iterator it = s.begin(); for(;

2017-01-03 17:57:39 452

原创 CCF基础P226练习题解

练习1#include <cstdio>int gcd(int a, int b) { if(b == 0) return a; return gcd(b, a % b);}int lcm(int n, int m) { return n * m / gcd(n, m);}int main() { int n, m; scanf("%d%d", &n, &

2016-12-27 17:50:50 471

原创 CCF基础P29练习题解

练习1#include <cstdio>int shugen(int n) { int sum = 0; while(n != 0) { sum += n % 10; n /= 10; } if(sum / 10 != 0) shugen(sum); else return sum;} int main(void) { int

2016-12-25 11:54:12 488

原创 二进制最大公约数算法

一、介绍二进制最大公约数算法避免了欧几里得算法(辗转相除法)的大量取模操作,有效减少了时间消耗,且更为方便。二、原理本算法基于以下事实: 对于两个数的最大公约数gcd(m, n),有m<n时,gcd(m, n)=gcd(n, m)m偶n偶时,gcd(m, n)=2*gcd(m/2, n/2)m偶n奇时,gcd(m, n)=gcd(m/2, n)m奇n偶时,gcd(m, n)=gcd(m,

2016-12-25 08:50:04 1369

原创 CCF入门P243练习4:奇数阶幻方

题目(来源:NOIP2015提高组复赛D1T1,Vijos) 幻方是一种很神奇的 N ∗ N 矩阵:它由数字 1,2,3, … … , N ∗ N 构成,且每行、每列及两条对角线上的数字之和都相同。 当 N 为奇数时,我们可以通过以下方法构建一个幻方: 首先将 1 写在第一行的中间。 之后,按如下方式从小到大依次填写每个数 K(K = 2,3, … , N ∗ N) :若 (K − 1) 在

2016-12-18 11:52:02 598

原创 CCF入门P231练习6:ISBN号码

Vijos链接题目每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括9位数字、1位识别码和3位分隔符,其规定格式如“x-xxx-xxxxx-x”,其中符号“-”就是分隔符(键盘上的减号),最后一位是识别码,例如0-670-82162-4就是一个标准的ISBN码。ISBN码的首位数字表示书籍的出版语言,例如0代表英语;第一个分隔符“-”之后的三位数字代表出版社,例如670代表维京出版社;

2016-12-18 10:48:57 534

原创 高精度整数(n进制,n<=10)加法

一、概述高精度整数的意思即是数据范围极大,已经无法用unsigned long long存储的数据的运算。很多OJ中都有相关练习题(如a+b升级版等),而对于故意给出极大数据的题目此算法为常用算法。 本章仅研究对于10进制以内(2进制~10进制)数的加法。本章将使用例题的讲解方法。二、例题例题1已知两个10进制数a,b,求a+b的值。数据范围对于a,b,50%的数据不大于10100。输入输出输入1

2016-12-15 17:57:47 1947

转载 数论:整数规则

一、常见数字的整除判定方法1.一个数的末位能被2或5整除,这个数就能被2或5整除;一个数的末两位能被4或25整除,这个数就能被4或25整除;一个数的末三位能被8或125整除,这个数就能被8或125整除;2.一个位数数字和能被3整除,这个数就能被3整除; 一个数各位数数字和能被9整除,这个数就能被9整除;3.如果一个整数的奇数位上的数字之和与偶数位上的数字之和的差能被11整除,那么这个数能被11整除.

2016-12-14 11:51:01 857

原创 CCF入门P204练习5:求所有x^2

题目求所有满足x2=□□□□□□□□□的x,其中每个□中数字都不同,且遍历数字1~9。输入输出示例输入1[无输入]输出111826 12363 12543 14676 15681 15963 18072 19023 19377 19569 19629 20316 22887 23019 23178 23439 24237 24276 24441 24807 2

2016-12-13 17:55:15 931

原创 CCF入门P216练习6:世博会志愿者

题解#include <cstdio>void sortsubarray(int data[], int begin, int end) { int i, j, k, temp; for(i = begin; i < end; i++) { for(j = i - 1; j >= begin; j--) if(data[j] > data[i]) break;

2016-12-11 11:16:40 797

原创 查找算法:二分法查找

一、原理对于长度为n的有序数组,一般我们采用遍历数组的方法找到数据的位置,这样做效率较低。如果我们能采用二分法的思想,逐步拆分成在很小数组内找解,就能节省很多时间。 对于这种方法,只需要使二分法的中间位置指针指向要找的数据,便可得到答案。二、程序使用while循环判断是否mid指向要查找的数据,维护low和high的指向即可。三、实现#include <cstdio>int main() {

2016-12-11 10:38:00 353

原创 排序算法:希尔排序(优化插入排序)

一、原理希尔排序实际上是一种分治思想,将给出数组分为一段段子数组并先对子数组进行直接插入排序,形成部分有序数组,缩小分割子数组的增量,再次重复。这样比遍历线性查找节省时间。二、原理如下图 三、实现#include <cstdio>int main() { int n; scanf("%d", &n); int data[n + 5]; int i; for(

2016-12-11 09:57:54 467

原创 排序算法:插入排序

一、原理对于长度为n的数组,遍历其中元素,并且将其插入其之前一段有序数据中合适的位置。二、程序(1)从第1个数据取起,向其之前(第0个、…)查找第一个小于该数据的位置为i; (2)将i之后的元素向后转移1位; (3)将该元素放入第i+1位。三、实现#include <cstdio>int main() { int n; scanf("%d", &n); int data[

2016-12-11 09:41:55 378

原创 CCF入门P141练习5:Cantor斜表

题解#include <cstdio>int main() { int n; scanf("%d", &n); int i, line = 0; for(i = 1;; i++) { line++; if(n <= i) break; if(n - i > 0) n -= i; } printf("%d/%d

2016-12-11 08:56:32 375

原创 排序算法:冒泡排序

实现#include <cstdio>int main() { int n; scanf("%d", &n); int data[n + 5]; int i; for(i = 0; i < n; i++) { scanf("%d", &data[i]); } int temp;}

2016-12-08 17:58:23 367

原创 排序算法:选择排序

一、原理(1) 从整个数组中找到最小值,并将其移动至第0位 (2) 从第1位到最后数组找到最小值,并将其移动至第1位 … (n) 从第(n-1)位到最后数组找到最小值,并将其移动至第(n-1)位实现可以使用双嵌套循环,第一层指定数组起点,第二层取出最小值。二、实现#include <cstdio>int main() { // 输入 int n; scanf("%d",

2016-12-07 11:56:24 380

原创 求“最大连续段和”题目分析

一、题目说明给出一段长度为n的数列,要求从中找出连续的一段来使得总和最大。输入包含两行,第1行表示数列长度为N(N<=100 000),第2行包括N个整数来描述这个数列,每个整数的绝对值不超过1 000。输出只有一个整数,为最大的连续段总和。二、输入输出样例输入1 5 1 -2 3 1 -4 输出1 4三、题目分析工事中

2016-12-06 17:55:25 2116

原创 CCF入门P130练习6:密码

题解#include <cstdio>int main() { char c; while((c = getchar()) != EOF) { if(c >= 'a' && c <= 'z') { putchar(c + 3 % 'a'); } else if(c >= 'A' && c <= 'Z') {

2016-12-04 16:03:23 507

原创 求质数:筛选法(埃拉托色尼筛法)

所谓“筛选法”指的是“埃拉托色尼(Eratosthenes)筛法”。他是古希腊的著名数学家。他采取的方法是,在一张纸上写上1到100全部整数,然后逐个判断它们是否是素数,找出一个非素数,就把它挖掉,最后剩下的就是素数。原理先将所有范围内的正整数列出,构成数集A。 (1) 从A中删去1; (2) 从A中删去2的整数倍; (3) 从A中删去3的整数倍; (4) 从A中删去5的整数倍; … (

2016-12-04 15:35:27 822

原创 数论笔记本

m与n的最大公约数和最小公倍数之积等于这两个数的积

2016-12-04 14:54:09 295

原创 位运算使用技巧(持续更新)

(1)取二进制数a末尾:not(a and 1)原理: 00000001 11010100 按位与结果即是0 取反后得到结果1

2016-12-04 10:57:44 418

原创 角谷猜想,计算第一次出现1经过了几次操作

题目描述70年代中期,美国各所名牌大学校园内,人们都像发疯一般,夜以继日,废寝忘食地玩弄一种数学游戏。这个游戏十分简单:任意写出一个自然数N,并且按照以下的规律进行变换: 如果是个奇数,则下一步变成3N+1。 如果是个偶数,则下一步变成N/2。 不单单是学生,甚至连教师、研究员、教授与学究都纷纷加入。为什么这种游戏的魅力经久不衰?因为人们发现,无论N是怎样一个数字,最终都无法逃脱回到谷底1。准

2016-12-04 10:06:02 2651

原创 进制转换:二进制和十进制的互转和推广至任意进制

二进制是信息技术中常用的数制。二进制的基数为2,进位规则“逢二进一”,借位规则“借一当二”。一、十进制转换至二进制通常采用“除二取余,逆序连接”方法。 (13)52=(00110100)2 二、二进制转换为十进制采用“权值展开”方法。 (1101)2=(1*23+1*22+0*21+1*20)10=(8+4+0+1)10=(13)10三、推广类似地,我们可以使用以上方法来解决16进制或8进制的

2016-12-04 09:38:08 782

原创 求最大公因数:辗转相除法(欧几里德算法)

辗转相除法即欧几里德算法。对于任意两个自然数a和b,如果q和r是a除以b的商和余数,那么a和b的最大公约数等于b和r的最大公约数。求解过程可描述如下:(1)a除以b,得到商q和余数r1;(2)若r1=0,则a和b最大公约数为b;(3)若r1≠0,则继续(1),即b除以r1得到商q和余数r2;(4)若r2=0,则a和b最大公约数为r1;(5)若r2≠0,则继续(1),即b除以

2016-12-04 09:23:28 5708 1

转载 cmath库中常用的数学函数

数学函数库,一些数学计算的公式的具体实现是放在math.h里,具体有:1、 三角函数double sin(double);正弦double cos(double);余弦double tan(double);正切2 、反三角函数double asin (double); 结果介于[-PI/2,PI/2]double acos (double);

2016-12-04 09:04:15 3144

转载 rand()的用法

关于随机数的产生,有以下说明。(1) 需要#include (2) 需要向随机数函数指定生成随机数的seed,一般采用时间作为seed#include ...srand(time(NULL));或srand(time(0))(3) 可以通过如下方式指定随机数的产生范围1. 产生[a, b)的随机整数(rand() % (b - a)) + a2. 产生[

2016-12-04 08:59:05 787

原创 UVa 1586 Molar Mass

//#include //#include #include #include #include #include //using namespace std; int main() { //ios::sync_with_stdio(false); FILE *f = fopen("in.txt", "r"); char c[85]; int n, i; fscanf

2016-11-29 18:00:25 420

原创 UVa 1585 Score

//#include //#include #include #include //using namespace std; int main() { //ios::sync_with_stdio(false); FILE *f = fopen("in.txt", "r"); char c[85]; int n, i; fscanf(f, "%d",

2016-11-27 16:51:05 224

原创 UVa 401 Palindromes

//#include //#include #include #include #include #include //using namespace std; const char s[] = "A 3 HIL JM O 2TUVWXY51SE Z 8 "; char* rev(char string[]) { int len = strlen(s

2016-11-27 11:52:58 284

原创 UVa 10082 WERTYU

//#include //#include #include #include //using namespace std; const char s[] = "`1234567890-=QWERTYUIOP[]\ASDFGHJKL;'ZXCVBNM,./"; int main() { //ios::sync_with_stdio(false); //FILE *f

2016-11-27 11:21:19 328

原创 UVa 272 Tex Quotes

//#include //#include #include #include using namespace std;int main() { //ios::sync_with_stdio(false); FILE *f = fopen("in.txt", "r"); char c; int begin = 0; while((c = fgetc(f)) != EOF)

2016-11-27 10:51:29 311

空空如也

空空如也

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

TA关注的人

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