- 博客(18)
- 收藏
- 关注
原创 2021-03-07
问题描述 给定n个十六进制正整数,输出它们对应的八进制数。 输入格式 输入的第一行为一个正整数n (1<=n<=10)。 接下来n行,每行一个由09、大写字母AF组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。 输出格式 输出n行,每行为输入对应的八进制正整数。 【注意】 输入的十六进制数不会有前导0,比如012A。 输出的八进制数也不能有前导0。 样例输入 2 39 123ABC 样例输出 71 4435274 【提示】 先将十六进制
2021-03-07 11:01:04
174
原创 hdu2544(最短路径/三种算法)
hdu2544"最短路" 目录hdu2544"最短路"Dijkstra算法(多米诺骨牌模型)Bellman-Ford(警察问路模型)Floyd-Warshall(动态规划思想) Dijkstra算法(多米诺骨牌模型) 复杂度:O(E*logV) AC代码: #include<iostream> #include<cstring> #include<cstdio> #include<cstdlib> #include<cmath> #include&
2021-02-23 19:24:44
415
原创 hdu1698(线段树/区间修改/求和)
hdu1698"Just a Hook" 题意: 有一个区间s [1,n],每一节si的初始价值为1。定义操作:x y val,将区间[x,y]中的每一个小节的价值改为val。问:经过Q次操作后总区间的价值是多少。 1<=n<=1e5 0<=Q<=1e5 算法/数据结构: 线段树 注意使用:long long scanf("%I64d") 吐槽: 3*10e5我觉得不需要长整型,但不知道为甚用int就是错!艹,搞这个点搞了一晚上。 代码: #include<iostream&g
2021-02-21 22:32:55
370
原创 hdu1394(线段树求逆序数)
hdu1394(线段树求逆序数) 题意 给出一串数字a,可以进行如下操作:将该串数字第一个数字a0放到该串数字的最后位置,形成新的数字串,求操作过程中最小逆序数。 思路 1)求一串数字的逆序数: 暴力法:对每一个数字x,判断x与x之前出现了多少个比x大的数字。复杂度为O(nn). 利用线段树:因为数字串出现的数字只能在区间0~n,可以利用线段树对出现的数字进行统计。对每个x,查询区间 [x+1,n-1] 已经有多少个被计数的数字,它们的合计就是逆序数。 2)用初始的逆序数推到移动第一个数到最后之后的逆序数
2021-02-21 19:10:28
267
原创 hdu1166(线段树)
#include<iostream> #include<cstring> #include<cstdio> #include<cstdlib> #include<cmath> #include<algorithm> using namespace std; const int maxn = 5e4+3; struct Node//营地 { int beg, end, num;//区间的开始和结束位置,该区间的人数 }tree[m
2021-02-21 16:02:41
101
原创 hdu4632:区间dp+容斥原理+记忆化搜索
hdu4632:区间dp+容斥原理+记忆化搜索 题意: 求给出字符串str中子序列(注:不是子字符串)是回文串的个数。 思路: 状态设计:dp[s][e]表示str[s]~str[e]区间的回文子序列个数 初始化/递归结束条件: 1)s>e:表示空串,dp[s][e]为零; 2)s==e:单个字符构成一个回文串,返回1; 状态转移:dp[s][e]的上一个状态是dp[s][e-1]或dp[s+1][e],将它们加起来,区间dp[s+1][e-1]中的回文子序列是被重复计数的,因此需要减去这个区间的d
2021-02-09 12:04:24
408
原创 hdu1401“Solitaire“
hdu1401"Solitaire"(双向广搜) 题意 有一个8X8的棋盘,上面有4个棋子,棋子可以上下左右移动。给定一个初始状态和一个目标状态,问能否在8步之内到达。 注意点(我的错误) 移动一步,棋子落到另一个棋子上是,才可以移动两步。(容易理解为即可以移动一步,也可以移动两步。) 棋子不区分顺序,所以需要按一定规则排序后才可以确定一个状态。 思路 使用8维数组vis*标记,进行查重。 有八个方向向量vex*。 伪双向广搜:并不是真的从两个初始一起搜索,分别从目标状态、初始状态使用bfs搜索4步,
2021-02-04 19:02:53
431
原创 hdu2844“Coins“多重背包
hdu2844"Coins"多重背包 一些感受(废话) 看了一下,可以将多重背包转化为0/1背包,将某种多个的硬币,对每一个硬币,每一个dp状态都有选择/不选择的0/1方案,由于硬币数可能很多,网上有博主使用二进制优化方案。这种方案是我第一次接触。以后需要学习一下。 链接:二进制优化,转化为0/1背包解决的方案 我的思路 一开始,我想要定义一个数组st[n][m],表示dp[m]状态硬币A[n]对应的数量,状态进行转移时,前状态必须有对应硬币剩余才可以进行转移(状态转移的硬币数量限制),但因为1<=n
2021-01-28 01:02:23
185
原创 hdu2159“FATE”完全背包
hdu2159“FATE”完全背包 一、什么是完全背包 有这样一个问题: 在你面前放着n种宝石,每种宝石重量为wi,价值为vi,数量无限;你有一个最多可以放m重量的背包。现在你想在不超重的情况下,是你带走的宝石价值最大,问最大价值是多少? 在这里,“完全”是指每一种宝石都有无数个,不是指背包能装多少物品(不是背包的属性)。 dp用于保存背包的状态S(有某些必要的维度,如容量等) 注意:在某一背包容量下的最大价值不一定是完全利用背包容量的!!! 二、代码 写了两个代码,注意区别:dp表示状态的方式不同。初始化
2021-01-26 01:36:36
376
原创 归并排序
归并排序 #include<iostream> using namespace std; #include<queue> #include<cstdio> #include<cstdlib> const int maxn = 1e2+1; int arr[maxn]; int temp[maxn]; void merge(int beg, int mid, int end){ int i = beg, j = mid+1; int t = 0; whi
2020-12-27 09:57:51
124
原创 2020-10-31
利用栈实现的全排列 数据结构学到栈了,了解到可以将递归函数的调用看作是函数的压栈,递归函数的结束返回上一层函数可以看作函数的出栈。 之前用递归函数实现过全排列,现在用栈实现一遍。 用栈的第k层保存第k层递归函数,每一层保存平行的变量。。。 问题 假设有一个盒子box[n],里面装着n个小球ball。有个条形、有凹槽的木块per[n],第一个凹槽放一个小球,接着放下一个,放满时,就完成一个排列了。 但第一个凹槽可放的小球有n种肯,第二个凹槽有n-1种可能……最后一个凹槽有一种可能。所有可能就是n的阶乘 #in
2020-11-23 19:19:35
217
原创 全排列(利用栈)
#include<iostream> using namespace std; #include<vector> //单个元素的结构体 struct Ball{ char ch;//元素 bool flag;//flag==true 时,该元素未被选择 }; int main(){ vector<int> si;//该层元素从si.back()下标开始扫描box数组 vector<int> sc;//该层元素由sc.back()种机会
2020-10-31 21:31:29
1422
原创 利用栈解决汉诺塔问题
利用栈解决汉诺塔问题 #include<iostream> using namespace std; #include<stack>//stl栈模板 #include<string> //定义一个解决汉诺塔的类 class HanNuoTa{ //保存要解决问题的规模与状态 (每一个规模对应一个状态) //当需要解决一个问题时将问题进行压栈 stack<int> m_n; //规模:即碟子的个数 stack<string>m_st
2020-10-21 13:45:24
957
原创 火星人数制(没有数字0,逢6进1)
火星人数制(没有数字0,逢6进1) 思路: 将1输入的10进制数字num转化6进制数字,每个数字用vector容器保存,然后转化为字母输出。 关键是转化的方法,可以先解决6进制数字加一的情况,将数字num转化为6进制相当于一个由“0”开始的6进制数字循环加num次1. #include<iostream> using namespace std; #include<vector> void addone(vector<int>& arr)//6进制数加1
2020-06-05 15:55:27
720
原创 7-3 螺旋方阵
7-3 螺旋方阵 (15分) 所谓“螺旋方阵”,是指对任意给定的N,将1到N×N的数字从左上角第1个格子开始,按顺时针螺旋方向顺序填入N×N的方阵里。本题要求构造这样的螺旋方阵。 输入格式: 输入在一行中给出一个正整数N(<10)。 输出格式: 输出N×N的螺旋方阵。每行N个数字,每个数字占3位。 输入样例: 5 输出样例: 1 2 3 4 5 16 17 18 19 6 15 24 25 20 7 14 23 22 21 8 13 12 11 10 9 #include<ios
2020-06-03 23:05:54
563
原创 找数据(10分)
找数据(10分) 题目内容: 编写程序,找出一个字符串中的所有数据然后加9输出(实数或整数)。 例如,China Daily | Updated: 2020-04-10 08:5.9, 输出: 2029 5 -1 17 14.9 单个正号或负号不算数据,但+0,-0都是数据。字符串总长度不超过200. 输入格式: 一个带空格的字符串。 输出格式: 若干行数据。 输入样例: China Daily ...
2020-05-01 22:31:56
260
原创 快速排序(思路 + c++实现例子)
快速排序(思路 与 c++实现例子) 我的思路(由小到大排列): 假设有一数组 arr = {……}(元素个数大于2)。 取任意一个元素为基准数temp,这里取数组的首元素。 把小于或等于temp的元素放在temp的左边,把大于或等于temp的元素放右边,就可以得到如下表排列的数组arr: 小于或temp的元素 基准数 大于或等于temp的元素 集合n1 temp 集合n2 ...
2020-04-05 23:23:54
321
原创 C语言递归剥洋葱
题目:7-21 剥洋葱 题目:输入格式:输出格式:输入样例:输出样例: 题目: 布告,布告! 应老师要求,我们要做一道打印图形的题目,这是程序员最基本的能力。 那废话不多说,我们来说要求的图形: AAAAA ABBBA ABCBA ABBBA AAAAA 就是外到内,从A到Z。每一层都是一种字母,最里面的一层为一个,即最中心的一个。 输入格式: 在一输入一个整数,即图形的层数。 输出格式: 如上述...
2020-02-10 16:31:28
913
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅