- 博客(26)
- 收藏
- 关注
原创 html垂直居中div中的元素
先创建一个大div,然后中间套一个小div<head> <meta charset="utf-8"> <title></title> <style> .box1{ background: red; height: 500px; width: 500px; } .box2{ background: blue; height:200px; width:200px;
2021-06-11 16:41:23
139
1
原创 快速幂
快速幂简单来说就是用一种算法很快求出a^b的结果#include <bits/stdc++.h>using namespace std;long long a,b;int main(){ cin>>a>>b; long long ans=1; while(b) { if(b&1) { ans*=a; } b>>=1; a*=a; } cout<<ans; return 0;}...
2021-04-04 17:04:19
119
原创 数据结构堆的基本操作实现
堆 其实就是一棵完全二叉树(见下图)在数组中的实现堆分为大根堆和小根堆大根堆:1.根节点最大 2.子节点必须大于等于父节点小跟堆:1.根节点最小 2.子节点必须小于等于父节点在数组中存储这种结构时,总是习惯将根节点存储在数组下标为1的位置每一个下标为k的节点的父节点的下标就是k/2每一个下标为k的节点的子节点的下标就是k2和k2+1在对堆进行操作(插入或删除了一个元素)的时候,有时会打破堆的有序性,使得子节点和父节点之间的有序性被打破,这时候就需要重新恢复堆的有序性。恢复堆的有序性需要
2020-12-20 12:40:09
486
1
原创 快速排序
标准快速排序#include<bits/stdc++.h>using namespace std;int a[100002];void exch(int i,int j){ int t =a[i]; a[i]=a[j]; a[j]=t;}void sort(int lo,int hi){ if(lo>=hi)return; int t=a[lo]; int i=lo,j=hi+1; while(1) { while(a[++i]<t)if(i==h
2020-12-19 21:29:26
129
1
原创 Java作业多线程的应用 三人抢票
1.三个线程,名称分别为”张三“,”李四“,”票贩子“,共同抢100张火车票2.每个线程抢到一张票后,都必须休眠500毫秒,用来模拟网络延时3.限”票贩子“只能抢一张票public class TicketOffice implements Runnable{ private int count=100; private int no=0; private boolean flag=false; public void run() { while(true) { if(!sa
2020-11-30 21:55:09
2285
6
原创 01背包问题
背包问题问题描述:有n个重量和价值分别为wi,vi的背包。从这些背包中挑选出总重量不超过W的背包,求所有挑选方案中价值总和的最大值输入不妨先从最原始的方法来考虑,从第一个背包开始,选这个背包是一种情况。不选这个背包是一种情况,然后又从这两种情况继续往下分,选第二个背包或者不选,依次往下,直到最后一个背包。这样每一种情况最后都会得到一个值,找到这些值中间的最大的那个,就是题目中所求的。采用递归的方法实现上述算法#include<bits/stdc++.h>using namespa
2020-11-03 13:04:48
1098
1
原创 C++用find()和substr()分割字符串
讲解全在注释里面,很好理解#include<bits/stdc++.h>using namespace std;int main() { string a="12-456-789-3"; int pos=0,index=0,start=0; //将a分割后的子字符串存到这个字符串数组中 string answer[150]; while(1) { //find()查找从指定位置开始的第一次出现的目标字符串 //它会返回一个可以通俗地理解为是下标的东西,当然到底是什么可.
2020-10-29 10:25:39
1640
原创 C++大数高精度基础(加减乘除)
#include<bits/stdc++.h>using namespace std;void moveFrontZero(string&a)//去除一个字符串的前导0{ a.erase(0,a.find_first_not_of('0')); if(a.empty())a="0";}//让两个字符串变成相同的长度,长度小的补0void align(string&a,string&b){ int a_size=a.size(); int b_size
2020-10-22 12:41:07
295
原创 1006HDU
这道题的题目很容易懂,但要独立做出来却很难,下面的代码也是借鉴的网上的方法 方法的大致思路是这样的: 1.肯定不可能一秒一秒的算,这样将每一秒看作一点算出来肯定精度是不够的,因为时间是连续的 2.每一根针与另外两根针都有一个从重合到再重合的时间段,在这个时间段里,两根针肯定会经历一个从相距D角度到相距(360-D)角度的过程。 3.因此,枚举从0点0时0分到12点12时12分(上午0点到中午12点和中午十二点到凌晨十二点是一样的,又因为题目算的是百分比#include<iostream&.
2020-10-12 13:18:17
107
1
原创 3789HDU
1.只需要对要求排名的M个国家进行排名,其他国家直接舍弃 2.注意一下排名的方式:1,2,2,4而不是1,2,2,3 3.在给定要排序的国家号的时候,并不一定会按照从小到大的顺序给定,题目中也没有这种说明,所以最后输出的时候一定注意顺序#include<iostream>#include<vector>#include<algorithm>using namespace std;class Country { public: int number,.
2020-10-11 16:59:07
870
2
原创 2708HDU
1.多个测试样例,每一个是四行字符串 2.在图表的每一行的最后一颗星之后,不能有空格 3.每两个测试样例之间应该有换行 总体思路:1.读入字符串 2.找出字母出现次数的最大值max 3.图表除去最后的字母部分,一共应该有max行 4.画图#include<iostream>using namespace std;int main() { string a[4]; int zimu[26]; while(getline(cin,a[0])) { getline(ci.
2020-10-10 17:18:54
98
原创 2565HDU
1.每行的最后一个X后面没有空格#include<iostream>using namespace std;int main() { int t; cin>>t; while(t--) { int size; cin>>size; int x=0,y=size-1; while(x<=y) { for(int i=0; i<=y; i++) { if(i==x||i==y)cout<<"X"; .
2020-10-10 16:01:08
79
原创 2074HDU
1.每两个筐之间才有换行符,最后一个筐后面不要有换行符 2.筐的尺寸为1的时候单独考虑#include<iostream>#include<vector>using namespace std;int main() { int a,count=0; char in,out;//in是中心字符,out则为另一个字符 while(cin>>a>>in>>out) { if(count++)cout<<endl; .
2020-10-10 15:32:57
87
原创 1736HDU
1.string类型读入带空格字符串使用getline函数,当然,无法读入换行符,而题目中说明输入的一段文字包含换行符,因此需要用while循环来不断地读入字符串 2.唯一的难点在于双引号的转换,在给定的文字中,双引号有可能是中文字符,这点需要注意#include<iostream>#include<string>using namespace std;int main() { string a; while(getline(cin,a)) { int num=.
2020-10-10 14:23:56
84
原创 1509HDU
题目大意:优先级低的消息先输出 优先级一样则输出先进入队列的消息 需要这样一种数据结构 满足先进先出 能够按一定的规则对内部元素排序 最终决定使用优先队列 注意:优先队列不同于普通的队列,并不满足先进先出规则,所以需要手动添加一个数据index来记录消息的先后顺序#include<iostream>#include<queue>#include<string>#include<vector>#include<f.
2020-10-10 13:45:06
82
原创 1308HDU
1 判断闰年的方法,分为两种,1582年及之前是旧的规则,1582年之后是新的规则2 总的思路:根据题目中给的输出数据知道1752.9.2是星期三,1752.9.14是星期四,所以将将给的日期划分为这两段,在1752.9.2号前的日期是一种计算方法,在1752.9.14之后的是一种计算方法3计算给的日期与1752.9.2号之间有多少天或者与1752.9.14号之间有多少天,然后根据天数来确定是星期几关于天数的计算:日期在1752.9.2及之前的a.年份小于1752的b.年份等于1752月份小于.
2020-10-10 11:18:55
146
1
原创 1276HDU
超级简单的水题,用STL中的vector或者list都行#include<iostream>#include<vector>using namespace std;void baoshu(vector<int> &v,int num) { int num1=1; for(vector<int>::iterator it = v.begin(); it!=v.end();) { if(num1%num==0)it=v.erase(it);
2020-09-28 19:55:16
84
原创 1263HDU
简单排序题#include<iostream>#include<vector>#include<string>#include<algorithm>#include<map>using namespace std;class Sale{ public: string address; string name; int num; //注意这里的const不能少,否则会报错 bool operator==(const Sa
2020-09-28 15:08:22
103
原创 1256HDU
一道比较简单的画图题,将一个8拆解成5个部分就会很好理解头部,只有一行上半圆圈中部,只有一行下半圆圈尾部,只有一行其中,头部,中部,尾部完全一样需要注意的点:每一行最后一个字符后面没有空格,这也是基本的格式控制#include<iostream>using namespace std;int main(){ int n; cin>>n; char c; int a; while(n--) { cin>>c>>a;
2020-09-27 19:02:22
81
原创 1177HDU
#include <iostream>#include<vector>#include<string>#include<algorithm>using namespace std;class Player{ public: int index; string time; int sloved;};bool Com(Player p1,Player p2){ if(p1.sloved!=p2.sloved)return p1.slov
2020-09-27 18:55:14
112
原创 1129HDU
这道题相对来说比较简单#include<iostream>#include<string>#include<map>using namespace std;int main(){ int k; //用两个Map容器来存储字母和值的键值对 map<int,char> code1; code1[0]='_'; for(int i=1;i<=26;i++) { code1[i]='a'+i-1; } code1[27]='.';
2020-09-26 18:47:34
96
原创 1084HDU
题目很好理解,就是一道简单的排序题当然,如果只有1个人完成了4道题,下面的代码仍然会输出90分,代码依然会ac,可能是题目的测试数据太水的缘故,可以自己修改#include<iostream>#include<vector>#include<algorithm>#include<string>using namespace std;class Student { public: string time;//完成题目的时间 int slo
2020-09-26 16:04:52
80
原创 1332hdu
题目大意很容易搞懂 这里记录下我用到的两种方法 第一种比较常规,每个数字都有五个部分组成,分部分打印#include <iostream>using namespace std;#include <string>int main(){ int a; string b; while (cin >> a >> b && (a || b != "0")) { for (int i = 0; i < b.size.
2020-09-25 10:31:59
114
原创 4011HDU
这道题大概是说,人一开始在北京,在每一个特定的日子就需要返回上海。 题目说的所谓要提前一天坐飞机和在那一天之后的一天再返回没有任何意义。 去上海和返回北京都需要机票钱,最后必须返回北京,人在北京每一天都有工资,如果去了上海,那么就得不到这一天的工资。 有很多个这样需要返回上海的日子,需要判断 如果两次需要返回上海的日子的间隔期间不能挣的工资钱小于往返的机票钱,那么人就不需要返回北京 最后题目所求的最小cost总的来说就是求最少花费的钱,包括所耽误的不能挣的工资钱,往返的机票钱...
2020-09-24 22:58:12
162
原创 HDU1103
这个题目的大意是说有一个餐厅,里面有两人桌,四人桌,六人桌。 1-2名顾客坐两人桌,3-4名顾客坐四人桌,5-6名顾客坐六人桌。 每桌顾客吃饭要花半个小时,如果餐厅里没有空余的桌子给新顾客,新来的顾客最多可以等半个小时。 当新顾客来的时候,先看餐厅里有没有对应类型的空余的桌子,如果有,那么就直接落座。 如果没有,再看看在接下来的半小时内会不会出现空余的桌子(顾客吃完离开),只要新空出来的桌子一出现,就让等待中的顾客落座. 所以每一个桌子都应该有一个数据来记录它最近一次顾客吃完离开的时间,每当有新.
2020-09-24 09:58:52
201
原创 C++STL(标准模板库)学习
STL六大组件1.容器:指各种数据结构,存放数据2.算法:各种常用算法3.迭代器:是容器与算法之间的胶合剂4.仿函数:行为类似函数5.适配器6.空间配置器算法分为质变算法(会在过程中改变容器中的存放数据)和非质变算法(不改变)算法通过迭代器访问容器中的元素迭代器也分种类:输入,输出,前向,双向,随机访问,常用的容器中迭代器都为双向和随机访问迭代器,他们两个的功能更为强大vectorvector存放内置数据类型 vector<int>v; vector<int>
2020-09-23 19:35:16
576
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人