自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 ccpc2023桂林(铜牌银牌)题解

ccpc2023桂林站题解,持续更新中...

2023-11-28 22:23:34 402

原创 归并排序的非递归实现

归并排序的非递归实现

2022-11-22 17:24:47 1003 2

原创 洛谷—数据结构1-1线性表 队列安排

【心得】:刚开始写的时候,构造了一个双链表,自以为写的不错,但,,只过了两个测试数据,其他都是TLE,于是看题解,原来是自己在插入元素的时候,总是需要遍历一遍列表来寻找插入位置,花费了大量时间,看题解才懂得记录每个元素位置的做法,于是写了很多种做法(在题解的帮助下各种做法全部AC),但还是想练练STL的list,学会了很多东西,于是写此文章记录一下【代码】:#include <bits/stdc++.h>using namespace std;list<int>

2022-02-11 21:44:41 746

原创 UVa11988 Broken Keyboard (用指针模拟链表做法)

闲谈:本来打算睡觉了,但还是忍不住发一篇题解,毕竟是自己第一次写出来的单链表数据结构,做这道题还真是历经磨难,看看刘汝佳大神的代码,发现好难搞懂(因为那时还没学链表),所以就没出息地用了STL里的list,AC了这道题,但心里一直不是滋味,就下定决心学学链表,在b站上搜了数据结构的网课,总算是开了一点点窍,就用指针模拟链表,写了下面的AC代码:#include <bits/stdc++.h>using namespace std;struct List{ char da

2022-01-30 23:29:13 1129

原创 UVa 442 Matrix Chain Multiplication 矩阵链乘(用栈来解析表达式)

题目大意:输入几个矩阵,接着输入一个矩阵乘法表达式,这里的表达式都是用括号括起来的,计算在矩阵相乘中,乘法运算了几次,例如axb矩阵乘以bxc矩阵,乘法次数为a*b*c次。难点:表达式的解析,即怎么在表达式中提取出计算的顺序。如果用字符串处理的话会相当麻烦,所以我还是果断地看了刘汝佳大神的思路。分析(汝神的思路):本题的关键是解析表达式。本题的表达式比较简单,可以用一个栈来完成:遇到字母时入栈,遇到右括号时出栈并计算,然后结果入栈。因为输入保证合法,括号无须入栈。简单的栈解析,遇到字

2022-01-29 22:20:33 738

原创 UVa 230 图书管理系统 Borrowers

题目链接:Borrowers - UVA 230 - Virtual Judge (vjudge.net)https://vjudge.net/problem/UVA-230题目大意:写一个图书管理系统,它的运行步骤如下:(1)输入多个书名+作者,至END结束(2)输入多个命令 BORROW、RETURN、SHELVE , 至END结束(3)每次输入SHELVE之后,输出书籍的名称+它的位置我的解题思路:总体思路:定义两个不定长数组bks和now,先将所有的书存入bks中,当收到SH

2022-01-27 16:32:13 375

原创 快速幂和用矩阵快速幂解决问题

一、快速幂的基本代码int fastpow (int a, int n){ int ans = 1; while(n) { if(n & 1) ans = ans * a % mod; a = a * a % mod; n = n >> 1; } return ans;}判断奇偶性用位运算效率更高://判断n的奇偶性n & 1 == 1 //奇数n & 1 =

2022-01-26 11:08:47 254

原创 UVa 1593 代码对齐

最开始写的AC代码#include <bits/stdc++.h>using namespace std;string in[1005][185];int len[185];//每一列的输出格式int lens[1005];//每行的长度int i = 0,ii = 0,iii = 0;void print(string s,int len){ cout<<s; for(int j=0;j<len-s.length();j++) cou

2022-01-24 21:27:04 411

原创 全球变暖——BFS搜索

#include <bits/stdc++.h>#define pan tx-1>=0&&tx+1<n&&ty-1>=0&&ty+1<nusing namespace std;char a[1001][1001];int vis[1001][1001] = {0};//保证每块地只搜索一次,避免进入死循环int n,flag,ans = 0;int dfs(int i,int j){ queue.

2022-01-23 15:44:51 573 1

原创 UVa 202 Repeating Decimals 循环小数问题

//算法总结://对于a / b//它的余数最多只有b种(即从0到b-1)//所以当被除数c在前面出现过时,则表示出现了循环节//循环节即为上一个c的位置到当前c的位置中间的部分这道题总体不算难,并且目前网上已经有很多题解啦,但我还是受到巧妙数学算法和数学规律的震撼,所以就发表这篇博文啦。同时自己也要多学习学习标记数组的用法。#include <stdio.h>#include <string.h>#define MAXN 10005int

2021-12-12 10:14:13 428

转载 常用函数小结(动态储存)

头文件 #include <stdlib.h>1、malloc函数 void *malloc(size_t size) 分配所需的内存空间,并返回一个指向它的指针。分配一块内存(连续的)供使用,并返回首 地址的指针。2、calloc函数 void *calloc(size_t nitems, size_t size) nitems 要被分配的元素的个数;size 要被分配的元素的大小。 分配所需的内存空间,并返回一个指向它的指针...

2021-12-05 21:53:09 134

原创 UVa 1586 分子量(真 · 入门(fen)题)

An organic compound is any member of a large class of chemical compounds whose molecules contain carbon. The molar mass of an organic compound is the mass of one mole of the organic compound. The molar mass of an organic compound can be computed from the s

2021-11-26 20:40:51 161

原创 UVa 1583 生成元问题 (打表法优化运算时间)

刚看到题目的时候,第一想法是用循环做,即每次都从1~100000枚举,如果遇到符合条件的就输出即可,但是仔细想想,这样的话每次都要进行n-1次的枚举,要消耗大量时间。下面是紫书中给出的“打表法”:可以说,颠覆了我对打表法的认知,没想到活用打表法,可以这样显著降低时间复杂度。下面先上我根据紫书的提示写的代码:#include <stdio.h>int a[100005],i,j;int main (){ int n,t,m; for(i=1;i&lt..

2021-11-24 23:05:43 227

原创 洛谷---回文质数 Prime Palindromes (普及-)(解决TLE超时问题)

题目描述因为 151 既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 151 是回文质数。写一个程序来找出范围[a,b](5≤a<b≤100,000,000)( 一亿)间的所有回文质数。输入格式第 1 行: 二个整数 a 和 b .输出格式输出一个回文质数的列表,一行一个。输入输出样例输入 #15 500输出 #15711101131151181191313353373383#include <st.

2021-11-20 00:33:32 3309 7

原创 OJ---The 3n + 1 problem

Description计算机科学中的问题往往被归纳为某一类问题(如NP问题,无法解决问题,递归等)。在这道问题中你将分析一种算法,它对所有可能的输入结果是未知的。考虑以下算法: 1. 输入n 2. 输出n 3. 如果n=1然后停止 4. 如果n是奇数: n <-- n*3+1 5. 其他的情况: n <-- n/2 6. 转向 2例如:对于输入22,输出将会是22 11 34 17 52 26 13 40 20 10 5 1...

2021-11-18 19:59:51 241

原创 C语言---<string.h>函数库常用简单函数

1、char * strcat (char * dest,const char *src) 把src所指向的字符串追加到dest所指向的字符串的结尾。2、char * strchr(con char *str , int c) 在参数str所指向的字符串中搜索第一次出现字符 c(一个无符号字符)的位置。3、int strcmp ( const char * str1 , const char *str2) 字符串大小的比较是以ASCII 码表上的顺序来决...

2021-11-18 19:35:46 351 1

原创 PTA 7-123 空心字母金字塔

输入一个大写的英文字母,输出空心的字母金字塔。输入格式:一个大写英文字母。输出格式:一个空心的大写英文字母金字塔,其中第1层的“A”在第1行的第40列,列从1开始计数。输入样例:E结尾无空行输出样例: A B B C C

2021-11-16 15:32:12 1610

原创 2021-11-14 洛谷练手总结

#include <stdio.h>int main (){ int x; int a=0,b=0,c=0,d=0; scanf("%d",&x); if(x%2==0&&(x>4&&x<=12)) a=1; if(x%2==0||(x>4&&x<=12)) b=1; if((x%2==0&&(x<=4||x>12))||(x%2!=0.

2021-11-14 22:48:18 246

原创 UVa10082---WERTYU

题目见紫书p47​​//自己敲的代码,过程有一点点繁琐#include <stdio.h>int main (){ char s[]="`1234567890-=QWERTYUIOP[]\\ASDFGHJKL;'ZXCVBNM,./"; int c; int judge=1; while((c=getchar())!=EOF) { for(int i=0; ;i++) { if(s[i

2021-11-05 15:34:51 128 1

原创 OJ---递归求解爬楼梯

Description有一楼梯共M级,若每次只能跨上一级或二级,要走上第M级,共有多少种走法?-----------------------------------------------------------------------------Invalid Word(禁用单词)错误:在解决这个题目时,某些关键词是不允许被使用的。如果提交的程序中包含了下列的关键词之一,就会产生这个错误。被禁用的关键字:for, while, do, break, continue, goto。

2021-11-04 19:44:06 854 1

原创 OJ---百钱买百鸡问题

Description“百钱买百鸡”是我国著名的古代数学问题,中国古代数学家张丘建在他的《算经》中提出了这样一个问题:鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡,问翁、母、雏各几何?你的任务是求解下面这个问题。问题是这样描述的:a文钱可买一只公鸡,b文钱可买一只母鸡,c文钱可买d只小鸡。用m文钱买n只鸡,那么有公鸡x只、母鸡y只、小鸡z只。求解出符合题意的x,y,z。Input输入为一张表。第一行是一个固定不变的表头,格式见sample。后面有多行,每行为一组测试数据。每组测试

2021-11-04 18:54:46 829

原创 2021年11月1日—输出格式小技巧

#include <stdio.h>int main (){ int a[1005]; int n,k; int first=1;//前方高能预警 scanf("%d %d",&n,&k); for(int i=1;i<=n;i++) a[i]=1; for(int t=2;t<=k;t++) for(int i=t;i<=n;i+=t) a[i]++; for(int i=1;i<=n.

2021-11-01 23:46:30 160

转载 c语言——输入输出函数简单比较

gets和scanf的区别1、gets可以接收空格;而scanf遇到空格、回车和Tab键都会认为输入结束,所有它不能接收空格。例如:如果输入为"helloworld"时,上面程序的运行结果是"helloworld"。而如果用scanf则只能输出hello2、scanf对末尾回车符的处理:把回车符保留在缓存中。gets对末尾回车符的处理:接收回车,但把回车替换为\0.3、gets的返回值为char*型,当读入成功时会返回输入的字符串指针地址,出错时返回NULL;scanf返回值为int型,返回实...

2021-10-31 23:34:25 333

原创 2021年10月28日错误总结及心得

#include <stdio.h>#include <ctype.h>int a[10];//此处为全局变量数组,未初始化,则其默认值为0int main (){ //int a[10]={0}; 此处为局部变量数组,未初始化,则其为垃圾值 int c; while((c=getchar())!=EOF) //此处c=getchar()必须用括号括起,因为=的优先级最低,若不加括号,则a[]将一直被赋值为1 if(isdigit(c)).

2021-10-28 23:46:57 73 1

转载 c语言---冒泡排序(一维数组)

根据轻气泡不能在重气泡之下的原则,从下往上扫描数组R:凡扫描到违反本原则的轻气泡,就使其向上"飘浮"。如此反复进行,直到最后任何两个气泡都是轻者在上,重者在下为止。void sort(int a[],int len){ int temp; for(int i=0;i<len-1;i++) for(int j=0;j<len-i-1;j++) if(a[j]>a[j+1]) {

2021-10-27 23:58:02 563 1

原创 辗转相除法

辗转相除法,也称欧几里得算法,是求最大公约数的算法。辗转相除法首次出现于欧几里得的《几何原本》(第VII卷,命题i和ii)中,而在中国则可以追溯至东汉出现的《九章算术》。两个整数的最大公约数(亦称公约数)是能够同时整除它们的最大的正整数。辗转相除法基于如下原理:两个整数的最大公约数等于其中较小的数和两数的差的最大公约数。例如,252和105的最大公约数是21(252 = 21 × 12;105 = 21 × 5);因为252 − 105 = 147,所以147和105的最大公约数也是21。在这个过程中..

2021-10-27 19:06:20 10523 1

原创 PTA 7-17 成绩转换

本题要求编写程序将一个百分制成绩转换为五分制成绩。转换规则:大于等于90分为A; 小于90且大于等于80为B; 小于80且大于等于70为C; 小于70且大于等于60为D; 小于60为E。输入格式:输入在一行中给出一个整数的百分制成绩。输出格式:在一行中输出对应的五分制成绩。输入样例:90结尾无空行输出样例:A结尾无空行#include <stdio.h>int main (){ int grade; scanf("%

2021-10-24 16:14:56 188

原创 PTA 7-16 计算符号函数的值

对于任一整数n,符号函数sign(n)的定义如下:请编写程序计算该函数对任一输入整数的值。输入格式:输入在一行中给出整数n。输出格式:在一行中按照格式“sign(n) = 函数值”输出该整数n对应的函数值。输入样例1:10结尾无空行输出样例1:sign(10) = 1结尾无空行输入样例2:0输出样例2:sign(0) = 0输入样例3:-98输出样例3:sign(-98) = -1#include <st

2021-10-24 16:08:35 126

原创 PTA 7-15 BCD解密

BCD数是用一个字节来表达两位十进制的数,每四个比特表示一位。所以如果一个BCD数的十六进制是0x12,它表达的就是十进制的12。但是小明没学过BCD,把所有的BCD数都当作二进制数转换成十进制输出了。于是BCD的0x12被输出成了十进制的18了!现在,你的程序要读入这个错误的十进制数,然后输出正确的十进制数。提示:你可以把18转换回0x12,然后再转换回12。输入格式:输入在一行中给出一个[0, 153]范围内的正整数,保证能转换回有效的BCD数,也就是说这个整数转换成十六进制时不会出现A-F

2021-10-24 16:00:07 141

原创 PTA 7-14 然后是几点

有时候人们用四位数字表示一个时间,比如1106表示 11 点零 6 分。现在,你的程序要根据起始时间和流逝的时间计算出终止时间。读入两个数字,第一个数字以这样的四位数字表示当前时间,第二个数字表示分钟数,计算当前时间经过那么多分钟后是几点,结果也表示为四位数字。当小时为个位数时,没有前导的零,例如 5 点 30 分表示为530;0 点 30 分表示为030。注意,第二个数字表示的分钟数可能超过 60,也可能是负数。输入格式:输入在一行中给出 2 个整数,分别是四位数字表示的起始时间、以及...

2021-10-21 19:08:43 64

空空如也

空空如也

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

TA关注的人

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