- 博客(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
150
原创 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
373
原创 hdu1698(线段树/区间修改/求和)
hdu1698"Just a Hook"题意:有一个区间s [1,n],每一节si的初始价值为1。定义操作:x y val,将区间[x,y]中的每一个小节的价值改为val。问:经过Q次操作后总区间的价值是多少。1<=n<=1e50<=Q<=1e5算法/数据结构:线段树注意使用:long long scanf("%I64d")吐槽:3*10e5我觉得不需要长整型,但不知道为甚用int就是错!艹,搞这个点搞了一晚上。代码:#include<iostream&g
2021-02-21 22:32:55
323
原创 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
242
原创 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
79
原创 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
348
原创 hdu1401“Solitaire“
hdu1401"Solitaire"(双向广搜)题意有一个8X8的棋盘,上面有4个棋子,棋子可以上下左右移动。给定一个初始状态和一个目标状态,问能否在8步之内到达。注意点(我的错误)移动一步,棋子落到另一个棋子上是,才可以移动两步。(容易理解为即可以移动一步,也可以移动两步。)棋子不区分顺序,所以需要按一定规则排序后才可以确定一个状态。思路使用8维数组vis*标记,进行查重。有八个方向向量vex*。伪双向广搜:并不是真的从两个初始一起搜索,分别从目标状态、初始状态使用bfs搜索4步,
2021-02-04 19:02:53
387
原创 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
160
原创 hdu2159“FATE”完全背包
hdu2159“FATE”完全背包一、什么是完全背包有这样一个问题:在你面前放着n种宝石,每种宝石重量为wi,价值为vi,数量无限;你有一个最多可以放m重量的背包。现在你想在不超重的情况下,是你带走的宝石价值最大,问最大价值是多少?在这里,“完全”是指每一种宝石都有无数个,不是指背包能装多少物品(不是背包的属性)。dp用于保存背包的状态S(有某些必要的维度,如容量等)注意:在某一背包容量下的最大价值不一定是完全利用背包容量的!!!二、代码写了两个代码,注意区别:dp表示状态的方式不同。初始化
2021-01-26 01:36:36
324
原创 归并排序
归并排序#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
100
原创 2020-10-31
利用栈实现的全排列数据结构学到栈了,了解到可以将递归函数的调用看作是函数的压栈,递归函数的结束返回上一层函数可以看作函数的出栈。之前用递归函数实现过全排列,现在用栈实现一遍。用栈的第k层保存第k层递归函数,每一层保存平行的变量。。。问题假设有一个盒子box[n],里面装着n个小球ball。有个条形、有凹槽的木块per[n],第一个凹槽放一个小球,接着放下一个,放满时,就完成一个排列了。但第一个凹槽可放的小球有n种肯,第二个凹槽有n-1种可能……最后一个凹槽有一种可能。所有可能就是n的阶乘#in
2020-11-23 19:19:35
169
原创 全排列(利用栈)
#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
1392
原创 利用栈解决汉诺塔问题
利用栈解决汉诺塔问题#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
911
原创 火星人数制(没有数字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
680
原创 7-3 螺旋方阵
7-3 螺旋方阵 (15分)所谓“螺旋方阵”,是指对任意给定的N,将1到N×N的数字从左上角第1个格子开始,按顺时针螺旋方向顺序填入N×N的方阵里。本题要求构造这样的螺旋方阵。输入格式:输入在一行中给出一个正整数N(<10)。输出格式:输出N×N的螺旋方阵。每行N个数字,每个数字占3位。输入样例:5输出样例:1 2 3 4 516 17 18 19 615 24 25 20 714 23 22 21 813 12 11 10 9#include<ios
2020-06-03 23:05:54
532
原创 找数据(10分)
找数据(10分)题目内容:编写程序,找出一个字符串中的所有数据然后加9输出(实数或整数)。例如,China Daily | Updated: 2020-04-10 08:5.9,输出:20295-11714.9单个正号或负号不算数据,但+0,-0都是数据。字符串总长度不超过200.输入格式:一个带空格的字符串。输出格式:若干行数据。输入样例:China Daily ...
2020-05-01 22:31:56
235
原创 快速排序(思路 + c++实现例子)
快速排序(思路 与 c++实现例子)我的思路(由小到大排列):假设有一数组 arr = {……}(元素个数大于2)。取任意一个元素为基准数temp,这里取数组的首元素。把小于或等于temp的元素放在temp的左边,把大于或等于temp的元素放右边,就可以得到如下表排列的数组arr:小于或temp的元素基准数大于或等于temp的元素集合n1temp集合n2...
2020-04-05 23:23:54
288
原创 C语言递归剥洋葱
题目:7-21 剥洋葱 题目:输入格式:输出格式:输入样例:输出样例:题目:布告,布告! 应老师要求,我们要做一道打印图形的题目,这是程序员最基本的能力。 那废话不多说,我们来说要求的图形:AAAAAABBBAABCBAABBBAAAAAA就是外到内,从A到Z。每一层都是一种字母,最里面的一层为一个,即最中心的一个。输入格式:在一输入一个整数,即图形的层数。输出格式:如上述...
2020-02-10 16:31:28
871
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人