Python
武倔
科技就是力量
展开
-
算法题 股票买卖IV(Python)
题目https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock-iv/给定一个长度为N的数组,数组中的第i个数字表示一个给定股票在第i天的价格。设计一个算法来计算你所能获取的最大利润,你最多可以完成k笔交易。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。一次买入卖出合为一笔交易。输入格式第一行包含整数N和k,表示数组的长度以及你可以完成的最大交易数量。第二行包含N...原创 2021-02-11 22:16:54 · 699 阅读 · 1 评论 -
算法题 股票买卖V-冷冻期(Python)
题目https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock-with-cooldown/给定一个长度为NN的数组,数组中的第i个数字表示一个给定股票在第i 天的价格。设计一个算法计算出最大利润。在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票):你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。 卖出股票后,你无法在第二天买入股票 (即冷冻期为11天)。输入格式第一...原创 2021-02-11 22:16:29 · 365 阅读 · 1 评论 -
算法题 贪心-合并果子(Python)
题目在一个果园里,达达已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆。达达决定把所有的果子合成一堆。每一次合并,达达可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和。可以看出,所有的果子经过n-1次合并之后,就只剩下一堆了。达达在合并果子时总共消耗的体力等于每次合并所耗体力之和。因为还要花大力气把这些果子搬回家,所以达达在合并果子时要尽可能地节省体力。假定每个果子重量都为1,并且已知果子的种类数和每种果子的数目,你的任务是设计出合并的次序方案,使达达耗费的原创 2021-01-23 11:41:53 · 1566 阅读 · 0 评论 -
算法题 贪心-区间覆盖(Python)
题目给定N个闭区间[ai,bi]以及一个线段区间[s,t],请你选择尽量少的区间,将指定线段区间完全覆盖。输出最少区间数,如果无法完全覆盖则输出-1。输入格式第一行包含两个整数s和t,表示给定线段区间的两个端点。第二行包含整数N,表示给定区间数。接下来N行,每行包含两个整数ai,biai,bi,表示一个区间的两个端点。输出格式输出一个整数,表示所需最少区间数。如果无解,则输出-1。数据范围1≤N≤10^5−10^9≤ai≤bi≤10^9−10^9≤s≤t≤10原创 2021-01-23 00:00:28 · 1311 阅读 · 0 评论 -
算法题 贪心算法-区间分组(Python)
题目给定N个闭区间[ai,bi],请你将这些区间分成若干组,使得每组内部的区间两两之间(包括端点)没有交集,并使得组数尽可能小。输出最小组数。输入格式第一行包含整数N,表示区间数。接下来N行,每行包含两个整数ai,bi,表示一个区间的两个端点。输出格式输出一个整数,表示最小组数。数据范围1≤N≤10^5−10^9≤ai≤bi≤10^9输入样例:3-1 12 43 5输出样例:2代码from heapq import *heap原创 2021-01-23 00:00:55 · 470 阅读 · 0 评论 -
算法题 树形dp-没有上司的舞会(Python)
题目公司有N名职员,编号为1~N。他们的关系就像一棵以校长为根的树,父节点就是子节点的直接上司。每个职员有一个快乐指数,用整数HiHi给出,其中1≤i≤N。现在要召开一场周年庆宴会,不过,没有职员愿意和直接上司一起参会。在满足这个条件的前提下,主办方希望邀请一部分职员参会,使得所有参会职员的快乐指数总和最大,求这个最大值。输入格式第一行一个整数N。接下来N行,第 i 行表示 i 号职员的快乐指数Hi。接下来N-1行,每行输入一对整数L, K,表示K是L的直接上司。...原创 2021-01-23 00:01:42 · 502 阅读 · 0 评论 -
算法题 记忆化搜索-滑雪(Python)
题目给定一个R行C列的矩阵,表示一个矩形网格滑雪场。矩阵中第 i 行第 j 列的点表示滑雪场的第 i 行第 j 列区域的高度。一个人从滑雪场中的某个区域内出发,每次可以向上下左右任意一个方向滑动一个单位距离。当然,一个人能够滑动到某相邻区域的前提是该区域的高度低于自己目前所在区域的高度。下面给出一个矩阵作为例子: 1 2 3 4 516 17 18 19 615 24 25 20 714 23 22 21 813 12 11 10 9在给定矩阵中,一条可原创 2021-01-24 17:30:30 · 558 阅读 · 0 评论 -
算法题 贪心-最大不相交区间数量(Python)
题目给定N个闭区间[ai,bi],请你在数轴上选择若干区间,使得选中的区间之间互不相交(包括端点)。输出可选取区间的最大数量。输入格式第一行包含整数N,表示区间数。接下来N行,每行包含两个整数ai,bi,表示一个区间的两个端点。输出格式输出一个整数,表示可选取区间的最大数量。数据范围1≤N≤10^5−10^9≤ai≤bi≤10^9输入样例:3-1 12 43 5输出样例:2代码n = int(input())segs = []f原创 2021-01-23 00:01:25 · 506 阅读 · 0 评论 -
算法题 SG函数-拆分Nim游戏(Python)
题目给定n堆石子,两位玩家轮流操作,每次操作可以取走其中的一堆石子,然后放入两堆规模更小的石子(新堆规模可以为0,且两个新堆的石子总数可以大于取走的那堆石子数),最后无法进行操作的人视为失败。问如果两人都采用最优策略,先手是否必胜。输入格式第一行包含整数n。第二行包含n个整数,其中第ii个整数表示第ii堆石子的数量ai。输出格式如果先手方必胜,则输出“Yes”。否则,输出“No”。数据范围1≤n,ai≤100输入样例:22 3输出样例:Yes原创 2021-01-19 00:00:57 · 192 阅读 · 0 评论 -
算法题 区间选点(python)
题目给定N个闭区间[ai,bi],请你在数轴上选择尽量少的点,使得每个区间内至少包含一个选出的点。输出选择的点的最小数量。位于区间端点上的点也算作区间内。输入格式第一行包含整数N,表示区间数。接下来N行,每行包含两个整数ai,bi,表示一个区间的两个端点。输出格式输出一个整数,表示所需的点的最小数量。数据范围1≤N≤10^5,−10^9≤ai≤bi≤10^9输入样例:3-1 12 43 5输出样例:2代码n = int(inpu原创 2021-01-24 17:32:13 · 856 阅读 · 0 评论 -
算法题 数位dp-计数问题(Python)
题目给定两个整数 a 和 b,求 a 和 b 之间的所有数字中0~9的出现次数。例如,a=1024,b=1032,则 a 和 b 之间共有9个数如下:1024 1025 1026 1027 1028 1029 1030 1031 1032其中‘0’出现10次,‘1’出现10次,‘2’出现7次,‘3’出现3次等等…输入格式输入包含多组测试数据。每组测试数据占一行,包含两个整数 a 和 b。当读入一行为0 0时,表示输入终止,且该行不作处理。输出格式每组数据输出一个结果,原创 2021-01-17 22:08:49 · 525 阅读 · 0 评论 -
算法题 SG函数-集合Nim游戏(Python)
题目给定n堆石子以及一个由k个不同正整数构成的数字集合S。现在有两位玩家轮流操作,每次操作可以从任意一堆石子中拿取石子,每次拿取的石子数量必须包含于集合S,最后无法进行操作的人视为失败。问如果两人都采用最优策略,先手是否必胜。输入格式第一行包含整数k,表示数字集合S中数字的个数。第二行包含k个整数,其中第ii个整数表示数字集合S中的第i个数si。第三行包含整数n。第四行包含n个整数,其中第ii个整数表示第ii堆石子的数量hi。输出格式如果先手方必胜,则输出“Yes”。原创 2021-01-17 18:23:41 · 352 阅读 · 0 评论 -
算法题 数位DP-度的数量(Python)
题目求给定区间[X,Y]中满足下列条件的整数个数:这个数恰好等于K个互不相等的BB的整数次幂之和。例如,设X=15,Y=20,K=2,B=2,则有且仅有下列三个数满足题意:17=2^4+2^018=2^4+2^120=2^4+2^2输入格式第一行包含两个整数X和Y,接下来两行包含整数K和B。输出格式只包含一个整数,表示满足条件的数的个数。数据范围1≤X≤Y≤2^31−11≤K≤202≤B≤10输入样例:15 2022输出...原创 2021-01-16 23:43:22 · 385 阅读 · 0 评论 -
算法题 状态压缩dp-蒙德里安的梦想(Python)
题目求把N*M的棋盘分割成若干个1*2的的长方形,有多少种方案。例如当N=2,M=4时,共有5种方案。当N=2,M=3时,共有3种方案。如下图所示:输入格式输入包含多组测试用例。每组测试用例占一行,包含两个整数N和M。当输入用例N=0,M=0时,表示输入终止,且该用例无需处理。输出格式每个测试用例输出一个结果,每个结果占一行。数据范围1≤N,M≤11输入样例:1 21 31 42 22 32 42 114 110 0输出样例:原创 2021-01-16 15:59:22 · 617 阅读 · 1 评论 -
算法题 区间合并-校门外的树(Python)
题目某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米。我们可以把马路看成一个数轴,马路的一端在数轴0的位置,另一端在L的位置;数轴上的每个整数点,即0,1,2,……,L,都种有一棵树。由于马路上有一些区域要用来建地铁。这些区域用它们在数轴上的起始点和终止点表示。已知任一区域的起始点和终止点的坐标都是整数,区域之间可能有重合的部分。现在要把这些区域中的树(包括区域端点处的两棵树)移走。你的任务是计算将这些树都移走后,马路上还有多少棵树。输入格式输入文件的原创 2021-01-24 17:45:32 · 584 阅读 · 0 评论 -
算法题 整数划分(Python)
一个正整数nn可以表示成若干个正整数之和,形如:n=n1+n2+…+nk,其中n1≥n2≥…≥nk,k≥1。我们将这样的一种表示称为正整数n的一种划分。现在给定一个正整数n,请你求出n共有多少种不同的划分方法。输入格式共一行,包含一个整数n。输出格式共一行,包含一个整数,表示总划分数量。由于答案可能很大,输出结果请对109+7取模。数据范围1≤n≤1000输入样例:5输出样例:7代码看作n个物品,的完全背包问题n = int(input原创 2021-01-15 22:51:31 · 1598 阅读 · 0 评论 -
算法题 石子合并(Python)
题目设有N堆石子排成一排,其编号为1,2,3,…,N。每堆石子有一定的质量,可以用一个整数来描述,现在要将这N堆石子合并成为一堆。每次只能合并相邻的两堆,合并的代价为这两堆石子的质量之和,合并后与这两堆石子相邻的石子将和新堆相邻,合并时由于选择的顺序不同,合并的总代价也不相同。例如有4堆石子分别为 1 3 5 2, 我们可以先合并1、2堆,代价为4,得到4 5 2, 又合并 1,2堆,代价为9,得到9 2 ,再合并得到11,总代价为4+9+11=24;如果第二步是先合并2,3堆,则代价为原创 2021-01-24 18:25:50 · 1471 阅读 · 1 评论 -
算法题 编辑距离(Python)
题目给定n个长度不超过10的字符串以及m次询问,每次询问给出一个字符串和一个操作次数上限。对于每次询问,请你求出给定的n个字符串中有多少个字符串可以在上限操作次数内经过操作变成询问给出的字符串。每个对字符串进行的单个字符的插入、删除或替换算作一次操作。输入格式第一行包含两个整数n和m。接下来n行,每行包含一个字符串,表示给定的字符串。再接下来m行,每行包含一个字符串和一个整数,表示一次询问。字符串中只包含小写字母,且长度均不超过10。输出格式输出共m行,每行输出一个整原创 2021-01-15 20:52:29 · 254 阅读 · 0 评论 -
算法题 分巧克力(Python)
题目儿童节那天有K位小朋友到小明家做客。小明拿出了珍藏的巧克力招待小朋友们。小明一共有N块巧克力,其中第i块是Hi×Wi 的方格组成的长方形。为了公平起见,小明需要从这N块巧克力中切出K块巧克力分给小朋友们。切出的巧克力需要满足:形状是正方形,边长是整数 大小相同例如一块6×5 的巧克力可以切出6块2×2 的巧克力或者2块3×3 的巧克力。当然小朋友们都希望得到的巧克力尽可能大,你能帮小明计算出最大的边长是多少么?输入格式第一行包...原创 2021-01-24 17:46:46 · 1035 阅读 · 0 评论 -
算法题 最短编辑距离(Python)
题目给定两个字符串A和B,现在要将A经过若干操作变为B,可进行的操作有:删除–将字符串A中的某个字符删除。 插入–在字符串A的某个位置插入某个字符。 替换–将字符串A中的某个字符替换为另一个字符。现在请你求出,将A变为B至少需要进行多少次操作。输入格式第一行包含整数n,表示字符串A的长度。第二行包含一个长度为n的字符串A。第三行包含整数m,表示字符串B的长度。第四行包含一个长度为m的字符串B。字符串中均只包含大写字母。输出格式输出一个整数,表示最少操作次数。原创 2021-01-14 23:42:24 · 611 阅读 · 0 评论 -
算法题 最长公共子序列(Python)
题目给定两个长度分别为N和M的字符串A和B,求既是A的子序列又是B的子序列的字符串长度最长是多少。输入格式第一行包含两个整数N和M。第二行包含一个长度为N的字符串,表示字符串A。第三行包含一个长度为M的字符串,表示字符串B。字符串均由小写字母构成。输出格式输出一个整数,表示最大长度。数据范围1≤N,M≤1000输入样例:4 5acbdabedc输出样例:3代码N, M = map(int, input().split())A =原创 2021-01-14 23:05:46 · 716 阅读 · 0 评论 -
算法题 扩展欧几里得算法之线性同余方程(Python)
题目给定n组数据ai,bi,mi,对于每组数求出一个xi,使其满足ai∗xi≡bi(modmi),如果无解则输出impossible。输入格式第一行包含整数n。接下来n行,每行包含一组数据ai,bi,mi。输出格式输出共n行,每组数据输出一个整数表示一个满足条件的xi,如果无解则输出impossible。每组数据结果占一行,结果可能不唯一,输出任意一个满足条件的结果均可。输出答案必须在int范围之内。数据范围1≤n≤10^51≤ai,bi,mi≤2∗10^9输.原创 2020-12-20 12:11:02 · 1565 阅读 · 2 评论 -
算法题 最长上升子序列-单调栈优化(Python)
题目给定一个长度为N的数列,求数值严格单调递增的子序列的长度最长是多少。输入格式第一行包含整数N。第二行包含N个整数,表示完整序列。输出格式输出一个整数,表示最大长度。数据范围1≤N≤100000−10^9≤数列中的数≤10^9输入样例:73 1 2 1 8 5 6输出样例:4代码时间复杂度o(NlogN)n = int(input())nums = list(map(int, input().split()))stack = []原创 2021-01-24 18:26:03 · 602 阅读 · 0 评论 -
算法题 最长上升子序列(Python)
题目给定一个长度为N的数列,求数值严格单调递增的子序列的长度最长是多少。输入格式第一行包含整数N。第二行包含N个整数,表示完整序列。输出格式输出一个整数,表示最大长度。数据范围1≤N≤1000,−10^9≤数列中的数≤10^9输入样例:73 1 2 1 8 5 6输出样例:4代码n = int(input())nums = list(map(int, input().split()))dp = [1]*(n)res = 1for原创 2021-01-24 18:58:25 · 1764 阅读 · 0 评论 -
算法题 剪绳子(Python)
题目有N根绳子,第i根绳子长度为Li,现在需要M根等长的绳子,你可以对N根绳子进行任意裁剪(不能拼接),请你帮忙计算出这M根绳子最长的长度是多少。输入格式第一行包含2个正整数N、M,表示原始绳子的数量和需求绳子的数量。第二行包含N个整数,其中第 i 个整数Li表示第 i 根绳子的长度。输出格式输出一个数字,表示裁剪后最长的长度,保留两位小数。数据范围1≤N,M≤1000000<Li<10^9输入样例:3 43 5 4输出样例:2.50原创 2021-01-24 18:26:15 · 900 阅读 · 0 评论 -
算法题 背包问题-分组背包 (Python)
题目有NN组物品和一个容量是VV的背包。每组物品有若干个,同一组内的物品最多只能选一个。每件物品的体积是vijvij,价值是wij,其中i是组号,j是组内编号。求解将哪些物品装入背包,可使物品总体积不超过背包容量,且总价值最大。输出最大价值。输入格式第一行有两个整数N,V,用空格隔开,分别表示物品组数和背包容量。接下来有N组数据:每组数据第一行有一个整数Si,表示第i 个物品组的物品数量; 每组数据接下来有Si行,每行有两个整数vij,w...原创 2021-01-24 21:44:29 · 1105 阅读 · 0 评论 -
算法题 背包问题-多重背包 单调队列优化版本(Python)
题目有N种物品和一个容量是V的背包。第i种物品最多有sisi件,每件体积是vi,价值是wi。求解将哪些物品装入背包,可使物品体积总和不超过背包容量,且价值总和最大。输出最大价值。输入格式第一行两个整数,N,V 用空格隔开,分别表示物品种数和背包容积。接下来有N行,每行三个整数vi,wi,si 用空格隔开,分别表示第i种物品的体积、价值和数量。输出格式输出一个整数,表示最大价值。数据范围0<N≤10000<V≤200000&...原创 2020-12-18 11:40:09 · 352 阅读 · 0 评论 -
算法题 背包问题-多重背包 二进制优化版本(Python)
题目有N种物品和一个容量是V的背包。第i种物品最多有si件,每件体积是vi,价值是wi。求解将哪些物品装入背包,可使物品体积总和不超过背包容量,且价值总和最大。输出最大价值。输入格式第一行两个整数,N,V,用空格隔开,分别表示物品种数和背包容积。接下来有N行,每行三个整数vi,wi,si,用空格隔开,分别表示第i种物品的体积、价值和数量。输出格式输出一个整数,表示最大价值。数据范围0<N≤10000<V≤20000<...原创 2021-01-24 17:32:25 · 413 阅读 · 0 评论 -
算法题 回文平方(Python)
题目:回文数是指数字从前往后读和从后往前读都相同的数字。例如数字12321 就是典型的回文数字。现在给定你一个整数B,请你判断1∼300 之间的所有整数中,有哪些整数的平方转化为B进制后,其B进制表示是回文数字。输入格式一个整数B。输出格式每行包含两个在B进制下表示的数字。第一个表示满足平方值转化为B进制后是回文数字那个数,第二个数表示第一个数的平方。所有满足条件的数字按从小到大顺序依次输出。数据范围2≤B≤20对于大于9的数字,用...原创 2021-01-30 21:56:01 · 662 阅读 · 0 评论 -
算法题 背包问题-完全背包(Python)
题目有N 种物品和一个容量是V的背包,每种物品都有无限件可用。第ii种物品的体积是vi,价值是wi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。输入格式第一行两个整数,N,V,用空格隔开,分别表示物品种数和背包容积。接下来有N行,每行两个整数vi,wi,用空格隔开,分别表示第i种物品的体积和价值。输出格式输出一个整数,表示最大价值。数据范围0<N,V≤10000<vi,wi≤1000...原创 2021-01-24 17:44:30 · 649 阅读 · 0 评论 -
算法题 背包问题-01背包(Python)
题目有N件物品和一个容量是V的背包。每件物品只能使用一次。第i 件物品的体积是vi,价值是wi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。输入格式第一行两个整数,N,V,用空格隔开,分别表示物品数量和背包容积。接下来有N行,每行两个整数vi,wi,用空格隔开,分别表示第i件物品的体积和价值。输出格式输出一个整数,表示最大价值。数据范围0<N,V≤10000<vi,wi≤1000输...原创 2021-01-30 21:56:12 · 650 阅读 · 0 评论 -
算法题 红与黑-宽度优先搜索(Python)
题目有一间长方形的房子,地上铺了红色、黑色两种颜色的正方形瓷砖。你站在其中一块黑色的瓷砖上,只能向相邻(上下左右四个方向)的黑色瓷砖移动。请写一个程序,计算你总共能够到达多少块黑色的瓷砖。输入格式输入包括多个数据集合。每个数据集合的第一行是两个整数W和H,分别表示x方向和y方向瓷砖的数量。在接下来的H行中,每行包括W个字符。每个字符表示一块瓷砖的颜色,规则如下1)‘.’:黑色的瓷砖;2)‘#’:白色的瓷砖;3)‘@’:黑色的瓷砖,并且你站在这块瓷砖上。...原创 2021-01-30 21:56:32 · 472 阅读 · 0 评论 -
Leetcode 第 43 场双周赛题解(Python)
Leetcode 第 43场双周赛题解周赛日期:2020/01/09题目1:1716. 计算力扣银行的钱 难度: 简单Hercy 想要为购买第一辆车存钱。他 每天 都往力扣银行里存钱。最开始,他在周一的时候存入 1块钱。从周二到周日,他每天都比前一天多存入 1块钱。在接下来每一个周一,他都会比 前一个周一 多存入 1块钱。给你n,请你返回在第 n天结束的时候他在力扣银行总共存了多少块钱。示例 1:输入:n = 4输出:10解释:第 4 天后,总额为 1...原创 2021-01-24 17:32:41 · 565 阅读 · 0 评论 -
算法题 蛇形矩阵(Python)
题目输入两个整数n和m,输出一个n行m列的矩阵,将数字 1 到 n*m 按照回字蛇形填充至矩阵中。具体矩阵形式可参考样例。输入格式输入共一行,包含两个整数n和m。输出格式输出满足要求的矩阵。矩阵占n行,每行包含m个空格隔开的整数。数据范围1≤n,m≤100输入样例:3 3输出样例:1 2 38 9 47 6 5代码n, m = map(int, input().split())grids = [[0] * m for _ in ran原创 2021-01-11 00:29:02 · 5543 阅读 · 0 评论 -
算法题 动态规划-数字三角形(Python)
题目给定一个如下图所示的数字三角形,从顶部出发,在每一结点可以选择移动至其左下方的结点或移动至其右下方的结点,一直走到底层,要求找出一条路径,使路径上的数字的和最大。 7 3 8 8 1 0 2 7 4 44 5 2 6 5输入格式第一行包含整数n,表示数字三角形的层数。接下来n行,每行包含若干整数,其中第 i 行表示数字三角形第 i 层包含的整数。输出格式输出一个整数,表示最大的路径数字和。原创 2021-01-24 17:33:32 · 1372 阅读 · 1 评论 -
算法题 货仓选址(Python)
题目在一条数轴上有N家商店,它们的坐标分别为A1~AN。现在需要在数轴上建立一家货仓,每天清晨,从货仓到每家商店都要运送一车商品。为了提高效率,求把货仓建在何处,可以使得货仓到每家商店的距离之和最小。输入格式第一行输入整数N。第二行N个整数A1~AN。输出格式输出一个整数,表示距离之和的最小值。数据范围1≤N≤100000≤Ai≤40000输入样例:46 2 9 1输出样例:12代码中位数为最佳选址地n = int(inp...原创 2021-01-30 21:56:54 · 1879 阅读 · 0 评论 -
算法题 容斥原理-能被整除的数(Python)
题目给定一个整数n和m个不同的质数p1,p2,…,pm。请你求出1~n中能被p1,p2,…,pm中的至少一个数整除的整数有多少个。输入格式第一行包含整数n和m。第二行包含m个质数。输出格式输出一个整数,表示满足条件的整数的个数。数据范围1≤m≤161≤n,pi≤10^9输入样例:10 22 3输出样例:7代码n, m = map(int, input().split())primes = list(map(int, input().s原创 2021-01-30 21:57:06 · 1295 阅读 · 1 评论 -
算法题 台阶Nim游戏(Python)
题目现在,有一个n级台阶的楼梯,每级台阶上都有若干个石子,其中第ii级台阶上有ai个石子(i≥1)。两位玩家轮流操作,每次操作可以从任意一级台阶上拿若干个石子放到下一级台阶中(不能不拿)。已经拿到地面上的石子不能再拿,最后无法进行操作的人视为失败。问如果两人都采用最优策略,先手是否必胜。输入格式第一行包含整数n。第二行包含n个整数,其中第i个整数表示第i级台阶上的石子数ai。输出格式如果先手方必胜,则输出“Yes”。否则,输出“No”。数据范围1≤n≤10^5原创 2021-01-30 21:57:20 · 603 阅读 · 0 评论 -
算法题 Nim游戏(Python)
题目给定n堆石子,两位玩家轮流操作,每次操作可以从任意一堆石子中拿走任意数量的石子(可以拿完,但不能不拿),最后无法进行操作的人视为失败。问如果两人都采用最优策略,先手是否必胜。输入格式第一行包含整数n。第二行包含n个数字,其中第i个数字表示第i堆石子的数量。输出格式如果先手方必胜,则输出“Yes”。否则,输出“No”。数据范围1≤n≤10^5,1≤每堆石子数≤10^9输入样例:22 3输出样例:Yes代码异或为0必输,不为0...原创 2021-01-30 21:57:33 · 1173 阅读 · 0 评论 -
算法题 满足条件的01序列(Python)
题目给定n个0和n个1,它们将按照某种顺序排成长度为2n的序列,求它们能排列成的所有序列中,能够满足任意前缀序列中0的个数都不少于1的个数的序列有多少个。输出的答案对10^9+7取模。输入格式共一行,包含整数n。输出格式共一行,包含一个整数,表示答案。数据范围1≤n≤10^5输入样例:3输出样例:5代码n = int(input())p = int(1e9+7)def qmi(a, b, p): res = 1 while原创 2021-01-30 21:57:44 · 475 阅读 · 0 评论