自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 go web项目开发第一天

golang web项目脚手架搭建1、CLD分层:a、controller层:控制层,服务的入口,负责处理路由,参数校验,请求转发。b、logic层:业务逻辑层。通过了controller层到达这里的所有请求参数一定是合法的。业务逻辑和业务流程都在这一层。c、dao层:主要负责与数据、存储。将下层存储以函数形式、接口形式暴露给logic层。2、其他层a、logger层:存放日志b、model层:程序功能实现文件、以及数据库sql创建表语句等。c、setting层:配置文件d、routes层

2021-10-07 23:36:06 397

原创 1283C Friends and Gifts

思路:找出了**列表中0的下标(没有给礼物的人)以及没有在列表中出现的数字(没有被给礼物的人)**之后,在找出一个不会有重复的排序。n = int(input())a = [*map(int, input().split())]nogive = sorted([i + 1 for i in range(n) if a[i]==0])nogiven = sorted(list(set(range(n+1))-set(a)))while any(nogive[i]==nogiven[i] for .

2020-11-26 13:35:49 113

原创 1358B Maria Breaks the Self-isolation

思路:如果当前数组的长度小于最后一个元素的大小,就将最后一个元素压出去,得到最后的长度for _ in range(int(input())): n = int(input()) a = sorted([*map(int, input().split())]) s = len(a) while a and a[-1] > len(a): a.pop() print(1 + len(a))...

2020-11-24 20:31:33 81

原创 1365C Rotation Matching

思路:创建两个字典,将两个数组的键与值调转过来,然后计算并记录两个列表中相同的值的距离。n = int(input())ag = {value : key for key,value in enumerate(map(int, input().split()))}bg = {value : key for key,value in enumerate(map(int, input().split()))}g = [0]*nfor i in range(1,n+1): g[(ag[i]-b.

2020-11-22 12:28:32 103

原创 1368B Codeforces Subsequences

思路:排列组合,先建立一个有10个1的列表,然后每次将所有元素乘起来,如果乘积小于输入的n,将当前位置加1,然下标加1,当下标=10的时候取余10,重新一轮遍历from functools import reducen = int(input())ans = [1] * 10c = ['c','o','d','e','f','o','r','c','e','s']r = reduce(lambda x,y:x*y, ans)j = 0while r < n: ans[j] +=.

2020-11-20 00:24:05 109

原创 1368C Even Picture

题目:要求构造一幅图,给定一个数字n,要求构造的图片1、需要含有n个周围都是灰色方块的灰色方块2、所有灰色方块相邻都必须有偶数个灰色方块3、图像是连接的,不能断开思路:构造题,思路很宽泛,并没有限制方块必须是尽可能小。所以首先要构造出n条3个灰色方块垂直连接的图形,然后所有这些图形以每次向下一个方块水平连接,然后最后首尾分别补上两个灰色方块即可满足所有条件n = int(input())print(3*n+4)for i in range(n + 1): print(i,i) p.

2020-11-18 22:32:36 135

原创 1369C RationalLee

思路:贪心法for _ in range(int(input())): n, k = map(int, input().split()) a = sorted([*map(int, input().split())],reverse=True) m = sorted([*map(int, input().split())]) s = m.count(1) ans = sum(a[:k])+sum(a[:s]) for i in m[s:]: .

2020-11-17 23:22:54 94

原创 1370C Number Game

https://codeforces.com/problemset/problem/1370/C题目:两个进行游戏,给定一个数字n,可以进行两种操作:1、n 除以一个奇数,n可以除尽该奇数,而且该奇数需要大于12、n减去1,n需要大于1如果谁不能再进行任何操作了,则对方获胜。思路:如果n可以除尽2的次数大于1次且最后的n大于2,那么代表该n含有一个以上奇数因子,A只要除以这些奇数因子的乘积就可以得到一个2的num次方数,这种数只能进行减1操作,而减1之后,A再进行一次除以自身的操作,就可以获胜,

2020-11-16 20:23:44 105

原创 1372C Omkar and Baseball

题目:给定长度为n的排列,每个数只存在一次,可以进行一种操作:让一个连续子序列里面的所有元素都重新排序,要求任何元素都不能出现在这次操作前的位置上。求将排列排好序的最小操作数思路:只要存在一个以上的不连续子序列,就直接对整个数组进行两次排序,如果所有没排好序的元素都在一个连续的子序列里,那么就只需要进行一次操作for _ in range(int(input())): n = int(input()) a = [*map(int, input().split())] t = 1.

2020-11-15 23:01:22 54

原创 1374D Zero Remainder Array

题目:给定一个数组,可以进行两种操作刚开始x=0,可以进行两种操作1、x+1。2、a[i]+x,x+1要求找出最小操作数,使得数组内所有数都可以整除k思路:将数组内每个数取余k,统计出k内每种数字的个数,因为每k个数内只能有一个对应的a[i],找出数组内每种数需要的最大步数就好。from collections import defaultdictfor _ in range(int(input())): n , k = map(int, input().split()) a = .

2020-11-15 19:41:25 115

原创 1443B Saving the City

题目:给字符串s,0代表没有地雷,1代表有地雷,引爆地雷需要花费a硬币,而且地雷会引爆两边的地雷,埋下一个地雷需要b硬币,求把所有地雷清除掉的最小花费思路:贪心,只要当前遇到的没有地雷的路段长度埋下地雷的花费b没有超过引爆的花费a,就把这些0段给连起来,那么引爆他们只需要一个a。反之则直接引爆,花费afor _ in range(int(input())): a, b = map(int, input().split()) s = input() ans, t = 0,flo.

2020-11-04 22:24:24 129

原创 1437B Reverse Binary strings

思路:每次都挑选最佳情况也就是拆开两个1和拆开两个0,拆开4个1 (两组)或者4个0(两组)for _ in range(int(input())): n = int(input()) s = input() ans = 0 l,r = 1, n-2 while r > l: if s[l] != s[r]: if s[l] == s[l-1] or s[r] == s[r+1]: a.

2020-11-02 18:47:01 144

原创 1419D2 Sage‘s Birthday

题目:给定含有n个数字的数组(元素可重复),要求重新排序该数组,得到比两边元素都要小的元素的最大个数。思路:先排序,然后对前n/2个元素进行偶数位奇数位的插入,对后n/2个元素进行偶数位插入,然后判断新序列中符合条件的元素的个数n = int(input())a = sorted([*map(int, input().split())])ans = [0] * nans[1::2] = a[:n//2]ans[::2] = a[n//2:]l = 0for i in range(1,n-1.

2020-10-28 10:38:41 98

原创 1428C ABBB

题目:AB 和 BB 可以去掉,问字符串最后的最短长度思路:贪心和栈,出现B,栈中有A就减去一个A,栈中没A就往B栈中加一个B,出现A,就往栈中加入一个A,最后就是栈A中的A的个数+栈B中的个数取余2(查看栈B中个数是否为奇数)for _ in range(int(input())): s = input() ans = 0 a,b = 0,0 for i in s: if i == 'A': a += 1 els.

2020-10-24 11:21:19 327 4

原创 1405C Balanced Bitstring

题目:要你判断所有的a中的 长度为k的子串是否拥有相同数量的1和0思路:a[i]到a[i+k]中的数量与 a[i+1]到a[i + k + 1]中的数量相同,那么需要a[i] == a[i + k],对于所有的位置都需要成立。最后1的总组数 、0的总组数需要不超过 ?的总组数import sysr = sys.stdin.readlinefor _ in range(int(r())): n, k = map(int, r().split()) s = r() x,y = .

2020-10-17 14:49:38 76

原创 1408C Discrete Acceleration(思维+二分)

题目:两辆汽车相隔l 米 相对而行,这段距离内有着n面旗帜,汽车每路过一面旗帜,速度+ 1,a[n]代表第n面旗帜的位置,求它们相遇的时间思路:双指针法,当**(x指针下一个旗帜位置-x指针当前位置)/x指针当前速度 + 总时间** 大于 y指针的同法时,说明y指针可以更快到达下一个加速点,所以先计算y指针的总时间与速度。到达最后一个点的时候,可能会出现,其中一个指针已经走了一段时间的路程的情况,所以要特别处理一下for _ in range(int(input())): n, le = m.

2020-10-17 12:08:14 138

原创 1272B SnowWalking Robot

题目:给定一段字符串,R往右走,L往左走,U往上走,D往下走(都是1个单位)。允许删去其中一些字符,使得机器人可以不走重复的路而回到原点。要求删去的字符必须是最少的思路:贪心,不让机器人走重复路,就让它绕一圈,让R与L,U与D字符数量对应,绕一圈即可。for _ in range(int(input())): s = input() d = {'R':s.count('R'),'L':s.count('L'),'U':s.count('U'),'D':s.count('D')} .

2020-09-28 15:11:34 176

原创 1277B Make Them Odd

题目:要使给定数组里的数全部变成奇数,你可以选择相同的元素进行一次除以二的操作。求把所有数都变成奇数的最小操作思路:有一些大的数字除以2之后会得到在数组中与之相同的元素,将出现过的元素全部记录在集合(set)中,最后,set的长度就是最小操作次数for _ in range(int(input())): n = int(input()) a = [*map(int, input().split())] ans = set() for i in a: wh.

2020-09-28 14:53:07 105

原创 1279B Verse For Santa

题目:给定一组数组,从头开始求和,最多可以跳过一个数,使得可以取得最多个元素并且和小于给定的数s,求可以跳过的最佳数的位置。思路:如果全部数加起来都比s小,那么无需跳过,直接输出0。否则遍历数组a[n],每次让s 减去a[i],用ans记录出现的最大的数的位置,如果a[i]>a[ans],则更新ans,也就是最大数的位置,最后如果s<0且i没有到达最后一个数,则输出当前ansfor _ in range(int(input())): n, k =map(int, input().s.

2020-09-28 14:07:48 105

原创 1305B Kuroni and Simple Strings

题目:给定一串只有“(”和“)”的字符串,要求只能删除配对的“()”,使得字符串无法再删除配对的括号思路:双指针,左指针以左括号为结束条件,右指针以右括号为结束条件。s = input()ans = []i, j = 0, len(s) - 1while i < j: while i < j and s[i] == ')':i += 1 while i < j and s[j] == '(':j -= 1 if i < j and s[i]=='(.

2020-09-28 13:46:14 134

原创 1291B Array Sharpening

题目:要求把给定的数组变成在该数组最大数值的位置向右向左都严格递减的序列。可以对任意一个元素进行任意次减一的操作,是否可以把该数组变成满足题意的数组思路:本来的思路是以数组中最大的元素向左右两边遍历,判断是否元素值是否小于当前元素位置和左边界的距离(如果是最大元素的右边则判断与右边界距离,左边则是左边界距离),但是发现思路不行,因为如果同时有多个最大值,那么还要分情况来遍历,太麻烦。索性直接从左到右遍历一次,从右到左遍历一次。for _ in range(int(input())): n = .

2020-09-27 22:55:44 104

原创 1326C Permutation Partitions

题目:将给定数组分为k份,要求每个部分的最大值加起来需要是最大值,以及分的方法数思路:要求给定最大值,必须是前 n - k个值例如 k = 3,n = 7 那么最大值就是7,6,5相加起来。本题难点在于分的方法,相当于前n-k大的值之间的距离的积(遇到的第一个前n-k值除外)n, k = map(int,input().split())a = [*map(int,input().split())]l = r = ans = 0for i in a: if i > n - k: .

2020-09-27 12:17:06 960

原创 1328B K-th Beautiful String

题目:要求一个长度为 n (含有2个’b’字符和n-2个’a’字符)的字符串在其所有的字典排序中第 k 个的字符串思路:枚举法,可以用 n!来理解 我们要求字典排序在第k位的字符串,所以第一个’b’的位置在倒数第 m + 1位 (1 + 2 + 3 + …+m < k, 1 + 2 + 3+…+m + m + 1 > k)而第二个’b’则位于k - t - 1位。for _ in range(int(input())): n, k = map(int, input().split.

2020-09-27 11:21:05 124

原创 1328C Ternary XOR

题目:给定目标字符串s(只包含0,1,2,且第一位不为 0),定义一个操作:si = (ai + bi)%3,找到两个字符串a,b按操作可以得到目标字符串s,要求a和b字符串中较大的那个字符串需要是可能的答案里最小的思路:第一位处理一下,后面只要遇到’1’字符就代表较大的那个字符串可以维持最大而不变。for _ in range(int(input())): n = int(input()) s = input() a,b = "","" if s[0]=='1': a.

2020-09-26 16:47:05 114

原创 1339 B Sorted adjacent Differences

题目:将给定含有n个元素的数组重新排序成一个两两相减的绝对值呈递增的序列思路:先将数组排好序,然后从中间开始往两边遍历数组,越往两边靠,数值相差就越大for _ in range(int(input())): n = int(input()) a = sorted([*map(int, input().split())]) ans = [a[(n-1)//2]] if n%2 else [] i,j = n//2 - 1 if n%2==0 else (n-1)//2-.

2020-09-26 15:33:10 62

原创 1341B Nastya and Door

题目:给定含有n个元素的数组, 找出长度为 K 的含有山峰最多的子数组(山峰如果在边界则不被计算在内,山峰为比两边元素都大的元素)思路:因为 “山峰”位于边界不算入值内,所以提前一位遍历t=int(input())for i in range(t): n,k=map(int,input().split()) a=list(map(int,input().split())) p=[0]*n ans, tmp, ind = 0,0,0 for i in rang.

2020-09-25 22:15:08 76

原创 1343C Alternating Subsequence

题目:给定一个包含n个负数和正数的数组,要构建一个新数组,顺序为负数和偶数相间,例如:[1,-2,1,-3,1]或[-1,2,-3],要求有最大和的子数组思路:就是要在每次符号变换的时候找到变换前的所有数里面找到最大的值两种做法:暴力法:for _ in range(int(input())): n = int(input()) a =[*map(int, input().split())] ans=0 i = 0 while i < n: .

2020-09-24 16:18:58 132

原创 1352B SameParity Summands

题目:给定n和k,要求找到k个相同奇偶性的数字的和为n思路:只要(k-1)%2==n%2就表明有解,如果两个都为偶数则输出k-1个2和n-(k-1)*2,如果为奇数就输出k-1个1和n-k+1for _ in range(int(input())): n, k = map(int, input().split()) for i in range(1,3): if k*i <= n and k*i%2==n%2: print('YES').

2020-09-24 14:26:50 66

原创 1352D Alice, Bob and Candies

题目链接:https://codeforces.com/problemset/problem/1352/D题目:两个人轮流吃一组糖果,分成 n堆,每堆对应 有a[i]个 (0<=i<n),两人每次吃的糖果都要严格大于上一个人吃的数量,例如 上一次A吃了x个,那么B这次就要至少吃 x + 1个,而且每个人每次至少吃一堆(就是必须至少吃掉当前a[i]个),输出需要轮流的次数,A和B各自总共吃了多少个糖果思路:简单的双指针问题,简单的暴力法for _ in range(int(input()))

2020-09-24 01:14:13 141

原创 1362B Johnny and His Hobbies

题目:给定一个数组,找到最小的数,使得数组里的每个元素异或之后可以得到原来集合(集合就是set,元素顺序不影响结果)思路:暴力法即可t=int(input())for i in range(t): n=int(input()) l=list(map(int,input().split())) s=set(l) ans=-1 for k in range(1,1024): s1=set() for j in range(n): s1.add(l[j]^k) if s==s1.

2020-09-22 23:17:14 99

原创 1363A Odd selection

题目:从给定数组中挑出x个数使总和为奇数思路:要使得总和为奇数,那么要满足三个条件1、需要有 i 个偶数,且 i 小于偶数个数2、需要有 x - i个奇数,且x-i 小于奇数个数3、x-i 必须也是奇数for _ in range(int(input())): n, x = map(int, input().split()) a = [*map(int, input().split())] evens= sum(1 for i in a if i%2==0) od.

2020-09-22 21:50:46 217

原创 1364B. Most socially-distanced subsequence

题目:在给定的数组中找到长度最短而且两两之间差的绝对值最大的子序列思路:将数组想象成一座山,,越大的元素代表越高的地理位置,然后要寻找出所有的“山峰” 和 “山谷”,数组头元素和尾元素肯定是为“山谷”或者“山峰”,因为相对于左边或者右边的元素,它要么更大要么更小,而另外一边没有元素。所以我们只要寻找到每个转折点for _ in range(int(input())): n = int(input()) a = [*map(int, input().split())] ans =.

2020-09-22 01:36:46 378

空空如也

空空如也

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

TA关注的人

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