思维题
刷题
星空皓月
工欲善其事,必先利其器。
展开
-
LeetCode:1260. 二维网格迁移【一维展开+拼接】
将二维展开成一维,其实就是将一维数组向后移动k,然后再拼接成二维。原创 2022-07-20 20:39:42 · 485 阅读 · 1 评论 -
Leetcode:2. 两数相加【大数加法+模拟进位】
力扣每日一题打卡原创 2022-07-15 18:39:24 · 321 阅读 · 0 评论 -
乐山师范程序设计大赛2020- H: 最小公倍数【求因子个数】
题目描述给定一个整数 b,另外 a 表示 1 到 1018 中的所有整数,计算式子 [a, b] / a 有多少个不同的结果,这里 [a, b] 表示整数 a 与整数 b 的最小公倍数。输入输入只包含一组数据;第一行包含一个整数 b (1 ≤ b ≤ 1010)。输出输出式子不同结果的数量。样例输入2样例输出2提示任意正整数 a 与 2 的最小公倍数必定等于 2 * a 或者 a,故式子 [a, b] / a 的结果只能是 1 或者 2。思路多枚举几个b,我们会发现b的因子个数有原创 2020-12-19 18:15:15 · 190 阅读 · 1 评论 -
乐山师范程序设计大赛2020-G: 最大公约数【思维】
题目描述给定一个数 n,另外任意整数 a 和 b 的最大公约数记为 gcd(a, b),求解从 1 到 n 中的任意两个不相同的整数的最大公约数的最大值。关于最大公约数的复习:18的约数有 1,2,3,6,9,18;24的约数有 1,2,3,4,6,8,12,24;18与24的最大公约数即为 6。输入输入包括多组数据;第一行只有一个整数 t (1 ≤ t ≤ 100)表示输入数据的组数;接下来输入 t 行,每行只包含一个正整数 n(2 ≤ n ≤ 106)。输出对于每组输入,需输出 g原创 2020-12-19 18:04:56 · 241 阅读 · 1 评论 -
西南交大峨眉校区INT杯2020-H.爬楼梯【思维】
思路不能连续爬三阶,那么我们就连续爬四阶可以扒(3阶+1阶), 剩下的如果是1,2阶,那么就只能一阶一阶爬,如果是三阶就可以爬一次。AC代码#include<bits/stdc++.h>using namespace std;typedef long long ll;void solve() { ll n; scanf("%lld", &n); ll ans = (n / 4) * 2; if (n % 4 == 3) { a.原创 2020-12-15 10:03:43 · 185 阅读 · 0 评论 -
CF -- 2020 ICPC COMPFEST 12 :H. Huge Boxes of Animal Toys【思维】
题意给定四个盒子装玩具,四个盒子里面玩具的有趣值如下:第一个:(-∞, -1]第二个:(-1, 0)第三个:(0, 1)第四个:[1, +∞)四个盒子里面分别装有A,B,C,D个玩具,两个玩具进行融合,融合后的有趣值为融合前的两个玩具有趣值相乘。最后将会融合成一个超级玩具,问超级玩具最后有可能在那些盒子里。思路题目说的是可能出现在那些盒子里。直接进行模拟,如果A,B两个盒子玩具个数相加为奇数,则有可能会在A,B盒子里面,在A盒子里面我们只需要判断A,D里面是否有玩具,在B盒子里面我们只原创 2020-09-28 11:31:59 · 261 阅读 · 0 评论 -
CF -- 2020 ICPC COMPFEST 12 :F. Flamingoes of Mystery【交互题】
题意有n个箱子,Chanek猜测每个箱子有多少个火烈鸟,必须猜对。思路我们要先唯一确定前面三个箱子里有多少个火烈鸟,然后已知前面箱子里的火烈鸟个数再用 [i - 1, i],i这个区间去求出i箱子有多少个火烈鸟。AC代码#include<cstdio>#include<iostream>#include<algorithm>#include<cstring>#include<set>#include<cmath&g原创 2020-09-28 11:19:00 · 280 阅读 · 0 评论 -
HDU - 6736 - Forest Program【组合数学 + DFS求环长】
求无向图环长我所知道的有两种解法,第一种就是染色,第二种是双连通分量(不会)。题意:给出一个图,可以删除任意条边(可不删),删除一些边后,让这个图变成森林(连通块全部都是树)。求有多少种删法。思路:1.如果是一个环且环长为len,那么必须删除一条边,所以删法就有2n - 1组合数学。2.如果不形成环,那么就可以不删除,删法就有2n种。所以现在我们只需要求出每个环的长度(第一种情况),m - 所有环的总长度(第二种情况)。最后用快速幂算出即可。怎样求环的长度。我们可以用个vis数组进行.原创 2020-09-19 16:03:11 · 137 阅读 · 0 评论 -
CF - E95(div2) -- A. Buying Torches【简单思维】
题意起始你有一根木棍,让你制造出K个火炬,每个火炬由一根棍子和一块煤制作而成;你有下面两种交易方式:1.1根棍子换x根棍子;2.y根棍子换1块煤。每次只能进行一种交易方式,问制作出k个火炬需要进行最少的交易。Exampleinput52 1 542 13 2412 11 121000000000 1000000000 10000000002 1000000000 1000000000output14332520000000031000000001999999999原创 2020-09-15 16:35:12 · 146 阅读 · 0 评论 -
蓝桥杯第九届 - G:螺旋折线【思维】
题意如图所示的螺旋折线经过平面上所有整点恰好一次。对于整数点(X, Y),我们定义它到原点的距离 dis(X, Y) 是从原点到 (X, Y) 的螺旋折线段的长度。例如:dis(0, 1) = 3,dis(-2, -1) = 9给出整数点坐标(X, Y),你能计算出 dis(X, Y) 吗?InputX和Y对于40%的数据,-1000 <= X, Y <= 1000对于70%的数据,-100000 <= X, Y <= 100000对于100%的数据, -1000原创 2020-09-13 18:12:05 · 172 阅读 · 0 评论 -
Atcoder - abc176 -- E - Bomber【思维】
题意在h * w的方格中放入m个炸弹,点爆一个方格,这个方格的行和列所有炸弹都会被引爆,使得被引爆的炸弹尽可能的多。思路统计炸弹最多的行数和列数,以及这些最多行数和列数的行标和列标。首先我们知道最多的行数和列数就是答案,但是可能会多算一个答案,点爆的方格本身就有炸弹,这样行和列都算了一遍。AC代码#include<cstdio>#include<iostream>#include<vector>#include<map>#inclu原创 2020-08-24 12:08:50 · 488 阅读 · 1 评论 -
Atcoder - abc176 -- D - Wizard in Maze【BFS + 双端队列】
题意给定一个地图,有起点和终点。现在有两种移动方法:1.上下左右移动;2.使用魔法,可以向(以当前为中心的位置5 x 5的正方形内的广场)移动。问从起点到终点至少需要使用多少次魔法,如果不能到达则输出-1.思路如果一条路可以通过第一种方式到达,那就尽量不采用第二种方法,如果不没有达到终点,那么就用第二种方法从第一种方法走的所有路中探索没有走过的路,如果能达到终点,那么输出最小使用的魔法次数,如果不能那么输出-1。根据上面的思路,我们可以采用双端队列 + bfs来操作,将第一种移动方法走的原创 2020-08-23 18:41:52 · 839 阅读 · 0 评论 -
HDU - 1045 -- Fire Net【二分图最大匹配数 + 思维】
题意给定一个边长为n的方形地图,我们的目标是在一个城市中放置尽可能多的碉堡,这样两个碉堡就不会互相摧毁。堡垒的配置是合法的,前提是在地图上没有两个堡垒在同一水平行或垂直列上,除非至少有一堵墙将它们分开。在这个问题上,我们将考虑小广场城市(最多4x4),其中包含的墙壁,子弹无法通过 X代表墙壁,.代表可放置。思路本题最主要是怎样转化为求最大匹配数问题,对行与X的分区进行编号,对列与Y的分区进去编号,然后行的第一个分区,我们可以任意填一个碉堡,这就相当于是进行匹配(行集合与列集合的编号进行匹配),然原创 2020-08-13 23:13:39 · 231 阅读 · 0 评论 -
HDU - 2612-- Find a way【BFS + 记录路径】
题意Yifenfei的家在乡下,而Merceki的家在城市中心。 因此,易芬菲与Merceki安排了在肯德基会面。 宁波有很多肯德基,他们想选择一种让总时间最短的肯德基。现在给您一张宁波地图,yifenfei和Merceki都可以通过成本11分钟左右上下移动到相邻的道路。思路分别记录yifenfei和Merceki的路径,然后找到肯德基最短的那条路径即可。先通过bfsY记录yifenfei到达每个肯德基的路径,然后在bfsM走Merceki的路径时,如果是肯德基则取最小值。和UVA - 1原创 2020-08-11 22:13:06 · 332 阅读 · 0 评论 -
CF - 620(div2) -- E. 1-Trees and Queries【LCA + 思维】
题意给出一棵树,询问在增加一条边的情况下,是否存在a->b走过的边权和正好为k(可重复经过某边)。思路ps:漏了两个判断条件,真惨。首先可以重复经过某些顶点和边,假设a到b的距离是dis,那么dis + 2, dis + 4,dis + 6......这些都是满足的a到达b,现在只需要判断奇偶性。如果dis是奇数,那么k必须是大于dis的奇数才行;偶数同理。a到b有三条路径d,a -> b,a -> x - > y - > b, a- > y - &原创 2020-08-11 18:02:01 · 124 阅读 · 0 评论 -
CF - 629(div3) -- E - Tree Queries【LCA + 思维】
题意给出一棵树,问是否存在1到某个结点的一条路径,使得k个结点到这条路径的距离<=1.思路在k个结点中,找深度最大的这个结点mx,然后与每个结点求ui = LCA(mx, ki),判断dis(ui, ki) <= 1即可。时间复杂度m * k * lognAC代码#include<cstdio>#include<iostream>#include<vector>#include<cstring>#include<alg原创 2020-08-11 17:37:00 · 146 阅读 · 0 评论 -
UVA - 11624 -- Fire!【BFS + 记录路径】
题意给定一个地图,joe想要在地图中逃生,只需要走出边界即可。但是有火的威胁,如果某处位置着火,那么joe就不能走。joe能往四周走,火也能往四周蔓延,请问joe能否逃生,如果能输出最短时间。1. J是joe的位置2. F是火的位置3. #是墙4. .代表火能蔓延,并且joe也能走。思路可以当作为捕食关系,火能否捕食joe,bfs走一遍火每个位置蔓延的时间,bfs再走一遍joe到达的时间,如果fire[i][j]>joe[i][j],则说明joe不能到达此位置。注:可能存在多原创 2020-08-09 20:56:03 · 167 阅读 · 0 评论 -
POJ - 3279 -- Fliptile【搜索 + 思维】
题意给定一个地图,地图里有黑白格子(背面是其相反颜色格子),需要将黑色的格子全部翻转为白色的。如果能翻转为白色的,输出最小次数的翻转情况,如果有多个最小次数,则输出字典序最小的,如果不能翻转输出"IMPOSSIBLE".思路1.是否有解:在翻转此位置时,判断此位置上方是否需要翻转,如果需要,则翻转,直到前n - 1行都翻转成白色,此时判断最后一行是否有黑色格子,如果有,则不满足题意要求。2.当前位置是否翻转:首先假设此位置是白色的,被翻转了奇数次后是黑色,偶数次后是白色。用一个数组记录翻转原创 2020-08-09 18:52:52 · 186 阅读 · 0 评论 -
CF - 780 --C. Andryusha and Colored Balloons【BFS + 思维】
题意给定一个1 到 n 的正方形,有n - 1个关系,每个关系是两个正方形相邻,问从1号正方形开始染色,每个正方形周围的颜色和本身不相同,问最多需要多少种颜色思路PS:先开始想着bfs搜索,然后暴力枚举前面没用过的颜色,先用小的,结果T了,很现实。转换思路, 分析枚举当前的结点时,这个结点的颜色收到父亲结点,和祖父结点的影响。例如此图当枚举3号结点时它就受到它父亲结点(1号结点)的影响,由于3号结点没有祖父结点,所以不管。再枚举到2号结点时,他就不能和(1, 3结点)的颜色相同。再到5号结点时.原创 2020-08-03 22:13:56 · 361 阅读 · 0 评论 -
HDU - 5936 -- Difference【折半枚举 + 公式推导】
22 23 2题意已知 公式f(y, k) = Σ(zk) z代表y十进制每一位。eg: f(233, 2) = 22 + 32 +32 = 22现在已知x和k,求满足 x = f(y, k) - y等式的y,并求y的个数。题目给定x[0, 1e9],那么假设y最大是1e10 - 1,那么f(y, k) 最大也就是7e9 - 8e9 之间的数,再减去个y就小于0了,所以y不会超过1e10.如果暴力枚举每一位,然后再求 f(y, k) - y肯定会T,这里就需要巧妙地将y折半枚举...原创 2020-08-02 22:50:30 · 234 阅读 · 0 评论 -
CF - 1000 -- B.Light It Up【思维题】
B.Light It Up题意:给定一些时间结点,问从0时刻开始亮灯,到a1关灯,a2亮灯…这样依次下去,直到到达m时刻,可以选择插入一个时刻,问这个亮灯时间的最大值。思路:首先我们知道的是奇数时间段的总和是亮灯时间.暴力枚举每个时间段,计算插入到每个时间段的时刻与不插入时刻做比较进行更新。1.如果某个时间段为1,则不能插入时刻.2.如果当前是奇数个时间段,那么将这个时间段分割为(xi - 1, 1),且前半段亮灯。即答案的解为:sum[奇数段前缀和] + xi - 1 + sum[偶数段原创 2020-07-30 21:38:43 · 318 阅读 · 0 评论 -
CF - 1385C -- Make It Good【求后缀数组凸型长度最长】
Make It Good题意:给定一个数组,让我们删除一个最小前缀数组,然后得到一个C数组,C数组满足,每次拿首尾(先拿尾,或者先拿首)数字放到一个新数组中,最后使其变成有序的。思路:我们观察C数组会发现,C数组是一个凸型(小->大->小),题目又告诉删除最小前缀数组,那么我们可以从后往前遍历,求一个后缀数组凸型即可。AC代码/**题意: 给定一个数组,让我们删除一个最小前缀数组,然后得到一个C数组,C数组满足,每次拿首尾(先拿尾,或者先拿首)数字放到一个新数组中,最后使其变成原创 2020-07-18 12:29:35 · 192 阅读 · 0 评论 -
CF - 1385A -- Three Pairwise Maximums【推导式子】
Three Pairwise Maximums题意已知 x=max(a,b),y=max(a,c),z=max(b,c),x,y,z, 求a,b,c;思路谈论每种情况1. a=b=c 直接输出三个相同的即可2. a>b>c,a>c>b,a>b=c; a=b>c 推出,x==y>z;3. b>a>c,b>c>a,b>a=c; b=c>a 推出,x==z>y;4. c>a>b,c>b>a原创 2020-07-18 12:20:44 · 264 阅读 · 0 评论 -
hihoCoder 1442 --- Smallest Rectangle
Smallest RectangleDescriptionYou are given N 2D points P1, P2, … PN. If there is a rectangle satisfying that its 4 vertices are in the given point set and its 4 sides are parallel to the axis we say the rectange exists.Find the smallest exsisting rectan原创 2020-06-27 22:23:55 · 176 阅读 · 0 评论 -
cf--contest1326:C. Permutation Partitions+推理
传送门C. Permutation Partitions题意给出一个长度为n的数组,里面包含[1,n]所有的数,在给定一个整数k,将数组k分成k个集合,要让每个集合中最大值的和最大化。求出这个最大值的和,还有求出有几种分法,由于方法的总数可能很大,对其进行取模998244353 处理?思路1.对原来的数组排序,然后取出前k大的值,前k值的和就是第一个答案2.标记前k大值在原有数组中的位...原创 2020-03-20 09:18:31 · 182 阅读 · 0 评论 -
cf--contest1326:B. Maximums+推理
传送门B. Maximums题意有一个数组a,和一个数组xi=max(0,a1,a2…ai-1); 注意i=1时,x1=0;这样会得到一个bi=ai-xi;例如:a={0,1,2,0,3}, x={0,0,1,2,2}.b={0−0,1−0,2−1,0−2,3−2}={0,1,1,−2,1}.思路x数组是由a数组得来的,而b数组是由a-x数组得来的,分析可知,b1=a1-x1;由...原创 2020-03-20 08:51:23 · 123 阅读 · 0 评论 -
cf--contest1326:A. Bad Ugly Numbers+推理
传送门:A. Bad Ugly Numbers题意给定一个正整数n,需要找一个s整数,s整数满足:1.有n位数字;2.s不能被s的每个位数整除3.s的每位不能含有0;思路想着想着就有一个思路,发现23,233,2333。。。总是那么巧每位都不能整除,当然还要一些特殊的数字,53,37等等。AC代码#include<cstdio>#include<cstri...原创 2020-03-20 08:35:01 · 113 阅读 · 0 评论 -
cf--contest1324:B. Yet Another Palindrome Problem+推理
传送门B. Yet Another Palindrome Problem题意题意判断子序列是否为回文串,以往我们知道的是ai=aj-i-1,i到j这个区间都要满足这个条件怎i到j形成回文串,但是这个题不一样,如果一个集合的子序列构成长度大于3回文串则输出YES,否则输出NO。思路这个题其实就是一个贪心思想。i到j这个区间判断ai=aj && j-i大于1则成立。代码#...原创 2020-03-13 00:38:53 · 138 阅读 · 0 评论 -
cf--contest1311--C. Perform the Combo+推理(前缀和)
传送门http://codeforces.com/contest/1311/problem/C题意有一个字符串按键,你只能从第一个字符按到最后才能完成,现在有m次操作,每次操作使得x位置损坏,损坏键第二次就好了,每次损坏后都要从头开始按,问进行m次操作后,每个按键按了几次。思路这个题是卡时间的题,暴力肯定是要出问题的,因为n²(n<2e5)将会tle;所以,需要优化算法。可以把每...原创 2020-02-25 21:07:40 · 220 阅读 · 0 评论 -
cf--contest1311--A. Add Odd or Subtract Even+简单推理
传送门http://codeforces.com/contest/1311/problem/A题意:有两个数a和b,对a进行操作,使得a==b,你可以进行以下操作。1.a加一个奇数(大于零的奇数);2.a减一个偶数(大于零的偶数);思路:1.如果a>b,则判断a-b是奇数还是偶数,如果是奇数,则需要加一,然后再减去一个偶数(a==b),次数为2;如果是偶数直接就减去一个偶数,次...原创 2020-02-25 20:20:04 · 218 阅读 · 0 评论 -
cf--B. Cow and Friend+推理
DescriptionInputThe input consists of multiple test cases. The first line contains an integer t (1≤t≤1000) — the number of test cases. Next 2t lines contain test cases — two lines per test case.Th...原创 2020-02-20 22:24:27 · 195 阅读 · 0 评论 -
cf--A. Cow and Haybales+简单推理
DescriptionThe USA Construction Operation (USACO) recently ordered Farmer John to arrange a row of n haybale piles on the farm. The i-th pile contains ai haybales.However, Farmer John has just left ...原创 2020-02-20 21:57:37 · 316 阅读 · 0 评论 -
数组配对+推理
题目描述给你一个长度为n的数组A和一个正整数k,问从数组中任选两个数使其和是k的倍数,问有多少种选法?对于数组a1=1,a2=2,a3=2而言:1.(a1,a2)和(a2,a1)是同一种选法;2.(a1,a2)和(a1,a3)不是同一种选法;input第一行输入两个整数n,k;n<1000000,k<1000 第二行有n个正整数,每个正整数的大小不超过1e9;5 61 2...原创 2020-02-20 11:57:08 · 2024 阅读 · 0 评论 -
换硬币问题(百钱百鸡)+推理
题目描述我国古代数学家张邱建在《算法》中出了一道题“鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。百钱百鸡,问鸡翁,鸡母,鸡雏各几何?”现在假定各鸡种的价格不变,拥有的钱数为m,需要购买的鸡数为n,试求出所有可能的购买方案数。input每行对应一个测试样例,每一行包含2个数字,分别为n和m。最后一行包含2个-1,表示输入结束。output每组测试样例的结果输入占一行,输出可能购买方案...原创 2020-02-19 21:20:05 · 743 阅读 · 0 评论 -
CF - 1385 -- Restore the Permutation by Merger【简单思维题】
Restore the Permutation by Merger题意:一个[1,n]长度为n的数组,复制一个相同的数组,将原数组插入到新数组中,使得前后顺序不变,给定插入后的数组,找到原数组。思路:遍历一遍,如果前面没被遍历过的数字肯定是原数组里面的,如果遍历过肯定是插入的数字,因为题目告诉我们一定有解的。AC代码/** 题意:一个[1,n]长度为n的数组,复制一个相同的数组,将原数组插入到新数组中,使得前后顺序不变 给定插入后的数组,找到原数组。 思路:遍历一遍,如果前面没被遍历过的原创 2020-07-18 12:24:11 · 233 阅读 · 0 评论