自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 音乐播放器问题记录

记录几个碰到的感觉网上没有找到很好解决办法的问题。一、通过ContentProvider数据集获取歌曲数据获取数据时,我们需要在manifestmanifestmanifest文件中添加权限,如果按照第十章ppt上的方法使用ActivityResultLauncherActivityResultLauncherActivityResultLauncher来获取歌曲,初始化你的ListListList时,顺序会和写的顺序不一样。举个例子@Overrideprotected void onCreate

2022-04-30 01:07:24 483

原创 P2704 [NOI2001] 炮兵阵地 状压DP

P2704 [NOI2001] 炮兵阵地HINTHINTHINT对于 100% 的数据,N≤100N≤100N≤100,M≤10M≤10M≤10,保证字符仅包含 ppp 与 hhh。M的数据范围很小,考虑状压DP。首先,影响第iii行的有i−1i-1i−1行和i−2i-2i−2行,所以我们的dpdpdp数组要体现出来这两个数据的,同时体现出来自己现在在哪行。所以我们可以开个三维的dpdpdp数组:dp[pre][now][i]dp[pre][now][i]dp[pre][now][i],其中的i

2021-07-28 16:24:09 131

原创 P2051 [AHOI2009]中国象棋

题目链接题目大意:给定n*m大小表格,让你摆放棋子,摆放的要求是同一行、同一列中的棋子数不超过两个,问一共可能有多少摆法。(不看别人的题解真不会开dp数组,太弱小了)dp数组开三位,表示已经处理好了前i行时,有j列有一个棋子,有k列有两个棋子。dp数组开完之后思路就很明了。我们每次最多可以新摆放两个棋子(如果多了同一行的就会超出限制)先考虑摆放零个的情况:直接就和上一层的一样了。摆一个的情况:我们只能摆在有零个或者一个棋子的那一列。摆两个的情况:还是可以摆在有零个或者一个棋子的那一列

2021-07-27 16:29:41 222 1

原创 PAT乙级1014福尔摩斯的约会

讲解都在代码注释里#include<string>#include<cstring>#include<iostream>using namespace std;const int maxn = 65;char a[maxn], b[maxn];int main(){ string week[8] = { "","MON","TUE","WED","THU","FRI","SAT","SUN" }; //小技巧,提前把所有的要输出的星期存入一

2021-07-26 00:24:43 79

原创 扩展欧几里得回溯过程中y值的变化

gcd(A,0)=Agcd(A,0)=Agcd(A,0)=A则有A∗x+0∗y=AA*x+0*y=AA∗x+0∗y=A所以在递归终点 x为1,y可取任意数$ gcd(a,b)=gcd(b,a;mod;b)$a∗x1+b∗y1=b∗x0+(a−[ab]∗b)∗y0a*x_1+b*y_1=b*x_0+(a-[\frac{a}{b}]*b)*y_0a∗x1​+b∗y1​=b∗x0​+(a−[ba​]∗b)∗y0​整理得a∗(x1−y0)+b∗(y1+[ab]∗y0−x0)=0a*(x_1-y_0)

2021-07-20 22:14:57 114

原创 Crane POJ - 2991

Crane题目大意:有n根木棍,第i跟长度为aia_iai​,最开始他们由下而上拼接在一起,有m次操作,每次操作中给出整数SiS_iSi​和AiA_iAi​,要求更改第SiS_iSi​与第Si+1S_i+1Si​+1根之间至AiA_iAi​°,每次操作后输出最后一个木棍端点的坐标(设第一根木棍的端点为原点)。这题中夹角的定义为从i逆时针到i+1根木棍走的度数。记录每个区间的向量。最开始想的是如果第i个和第i+1根之间旋转了了,那么第i根后面的也都旋转了,我就修改了每个最小的区间,然后往回更新,如果

2021-07-14 21:06:03 158

原创 Array Stabilization (GCD version) ST表/线段树+二分

Array Stabilization (GCD version)题目大意:每次用gcd(ai,ai+1)gcd(a_i,a_{i+1})gcd(ai​,ai+1​)替换aia_iai​(其中n+1视为1),问几次能让数组全部相等。由规则来看k=0时,ai=aia_i=a_iai​=ai​k=1时,ai=gcd(ai,ai+1)a_i=gcd(a_i,a_{i+1})ai​=gcd(ai​,ai+1​)k=2时,ai=gcd(gcd(ai,ai+1),gcd(ai+1,ai+2))=gcd(ai

2021-07-14 11:17:05 107

原创 Brackets sequence UVA - 1626

Brackets sequence定义如下正规括号序列:①空序列是正规括号序列②如果S是正规括号序列,那么(S)和[S]也是正规括号序列③如果A和B都是正规括号序列,那么AB也是正规括号序列。输入一个长度不超过100的,由"("、")"、"["、"]"构成的序列,添加尽量少的括号,得到一个规则序列。如有多解,任意输出一个序列即可。dp[i][j]表示从i到j需要加多少括号,边界为i==j时,要加一个。由题目定义②③可知,有两种转移情况:1、两边是()或[],那么可由dp[i+1][j-1]转

2021-07-12 21:04:55 239

原创 Partitioning by Palindromes UVA - 11584

Partitioning by Palindromes求一串字符的的最小回文串划分的个数简单题,先预处理有哪些回文串,技巧是枚举中心,然后想左右延申,要注意的是回文串的长度有奇数和偶数之分#include<iostream>#include<algorithm>#include<cstring>#define ll long long#define ull unsigned long long#define mem(a,b) memset(a,b,size

2021-07-10 11:06:44 73

原创 Lighting System Design UVA - 11400

Lighting System Design 你的任务是设计一个照明系统。一共有n种灯泡可供选择,不同种类的灯泡必须用不同的电源,但一种灯泡可以共用一个电源。每种灯泡用4给数值表示:电压V,电源费用K,灯泡单价C和所需灯泡的数目L。假设通过所有的灯泡的电流都相同,因此电压高的灯泡功率也大。为了省钱,可以把一些灯泡换成电压更高的另一种灯泡以节省电源的钱(但不能换成电压更低的灯泡)。求最优方案的费用。题目很难懂。举个例子的话假如有三种灯泡(已经按电压升序排列)编号电压电源费用单价数量

2021-07-10 10:59:11 133

原创 Jin Ge Jin Qu hao UVA - 12563

Jin Ge Jin Qu hao UVA - 12563给定n首歌和他们的持续时长(每首不超过180s),求在t时间内(不包含t)能唱的最多歌数,并求此数量下能唱的最长时间,求出来后歌数加1,时长加678。题目给定t的范围为≤1E9,n≤50,但由于每首不超过180s,所以t最大为180*50。经典的01背包,要注意的点:1、优先选取曲目最多,在此条件下求时间最长。2、当最大歌数为0的时候,最大时间为0,不能和正常情况一样更新,否则会使最大时间变成t-1。测试数据12 23 4#inc

2021-07-09 19:43:18 128

原创 Unidirectional TSP UVA - 116

Unidirectional TSP UVA - 116给一个m行n列的证书矩阵,从第一列任何一个位置每次往右,又上或右下走一格,最终到达最后一列。要求经过的整数之和最小。整个矩阵是环形的,即第一行的上一行是最后一行,最后一行的下一行是第一行。输出路径上每列的行号。多解时,输出字典序最小的。若不需要输出路径或任意输出一个路径,这就是水题一个。但是要求输出字典序最小的解。开始做是顺着遍历,每次记录pre是多少,dp数组表示第走到(i,j)时已经走的路程,但是这个过程中是有后效性的,所以无法确定最开始记

2021-07-09 18:40:56 93

原创 Tour UVA - 1347

Tour UVA - 1347紫书P269给定平面上n个点的坐(按x递增的顺序给出,x各不相同,且均为正整数),设计一条路线,从最左边的点出发,走到最右边的点后再返回,路径中经过的点横坐标严格递增或递减(紫书第一个图不对),要求除了最左点和最右点外每个点恰好经过一次,且路径总长度(欧几里得距离)最短。一个人向右走在向左走,抽象为两个人都从最左点出发,前往最右点,计算两个人路径和妙啊 。dp[i][j]为一个人在第i个点,另一个在第j个点,且前max(i,j)个点都走过时,还要走的路径...

2021-07-09 14:56:32 117

原创 The Tower of Babylon 巴比伦塔 UVA - 437

The Tower of Babylon紫书P269有n种立方体,每种都有无穷多个。要求选一些立方体落成一根尽量高的柱子(可以自行选择哪一条边作为高),是的每个立方体的底面长款分别严格小于它下方立方体的底面长宽。立方体可以旋转,所以一种立方体可以看成三个固定摆法的立方体,即为3*n种立方体中求最长路。#include<iostream>#include<algorithm>#include<cstring>#define mem(a,b) memset(a,

2021-07-09 10:29:29 89

原创 A Spy in the Metro UVA - 1025

A Spy in the MetroUVA - 1025 紫书p267某城市的地铁是线性的,有n个车站,从左到右编号为1~n。有M1辆列车从第一站开始往右开,还有M2辆列车从第n站开始往左开。在时刻0,Mario从第一站出发,目的是在时刻T会哦见车站n的一个间谍。在车站等车时容易被抓住,所以他决定尽量躲在开动的火车上,让在车站等待的总时间尽量短。列车靠站时间忽略不计,且Mairo身手敏捷,即使两辆方向不同的列车在同一时间靠站,Mairo也能完成换乘。求最少等待时间,无解输出Impossible。在读

2021-07-08 21:03:19 115

原创 P1036 [NOIP2002 普及组] 选数(二进制枚举裸题)

题目大意:给定n个数,从中选择k个数,若这k个数和为素数,则ans++求ans为多少题目链接重要部分(二进制枚举):for (int i = 0; i <= (1 << n); i++){ for (int j = 0; j < n; j++) { if ((i >> j) & 1) { //则二进制这一位为1,代表选择了对应一位的数 } }}假设n为4,则从0000遍历到1111即for(i=0;i<10000(

2021-07-07 20:16:44 274 1

原创 Making the Grade (POJ - 3666) 离散化+DP

Making the Grade题目大意:给你一个数组,求将其修改为单增或单减(非严格)所需要的最少代价,修改一次的代价为|初值-末值|。以单增为例:所有更改后的数字必定在原数组中出现过。dp[i][j]表示前i个数都满足要求,且第i个数字取j时所要的代价之和,但由于a[i]取值范围到了1E9,故要进行离散化——第i个数字取第j小的数字(sort)dp[i][j]=abs(a[i]−b[j])+min(dp[i−1][p])且p取1到jdp[i][j]=abs(a[i]-b[j])+min(dp[

2021-07-07 10:06:19 217

空空如也

空空如也

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

TA关注的人

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