- 博客(17)
- 收藏
- 关注
原创 E - Shiritori (字符串Hash - 拓扑排序 - 博弈)
字符串首尾连边做成一个有向图,因为下一步的选择与上一步的字符串结尾字符有关,所以我们这里建立反图,让让尾指向首做有向图。2、走向必胜态或者无法继续时为必败态。1、走向必败态的为必胜态。
2021-08-13 21:08:17
215
原创 D - National Railway (DP)
首先按红线所示方向走即 dp[i-1][j] 和dp[i][j-1] ,然后按黄线所示方向 dp[i-1][j] 和dp[i][j+1],这样即可遍历所有情况。
2021-08-13 20:50:51
271
1
原创 D - Number of Shortest paths (最短路径的条数 BFS)
题目链接每条边的边权都是1,对于每个从 v 有一条边的 u ,如果我们还没有访问过 u ,将 dis [ u ] 更新为 dis [ v ] + 1 并将 cnt [ u ] 加上 cnt [ v ] ;如果我们已经访问过 u 并且 dis [ u ] = dis [ v ] + 1 ,则只将 cnt [ u ] 加上 cnt [ v ]即可 ;否则,跳过。最后cnt [ n ] 即是最短路条数#include <bits/stdc++.h>using namespace st
2021-08-11 21:28:16
428
2
原创 C - chokudai (DP)
让 dp [ i ] [ j ]是“从 S 的前 i 个字符中选择的 j 个字符的组合数,以便结果字符串等于 chokudai 的前 j 个字符。
2021-08-11 21:18:32
215
1
原创 E - Stronger Takahashi (0-1BFS)
假设他在需要时才出拳,我们可以假设 2 × 2 的破坏方块区域与高桥所在的方格相邻。当高桥在标记的地方上时 (下图中的 T),在单次出拳后,他可以移动到任何标有 * 的方格,而不管这些方格的先前状态如何。因此,我们可以假设步行到相邻地方的成本为 0 ,并且移动到任何 * 方格后一拳成本为1,执行01-BFS来解决问题。计算复杂度O(HW)。优先队列BFS代码 类似于Dijkstra。
2021-08-11 11:28:22
312
3
原创 2015 ACM ICPC Singapore Regional
Association for Control Over Minds –并查集+set集合#include <bits/stdc++.h>using namespace std;#define mem(a, b) memset(a, b, sizeof(a))#define endl '\n'#define ll long long inttypedef pair<int, int> PII;const int inf = 0x3f3f3f3f;const int N
2021-08-07 22:44:06
189
原创 P1613 跑路 (Floyd)
题目描述小A的工作不仅繁琐,更有苛刻的规定,要求小A每天早上在6:00之前到达公司,否则这个月工资清零。可是小A偏偏又有赖床的坏毛病。于是为了保住自己的工资,小A买了一个十分牛B的空间跑路器,每秒钟可以跑2k2^{k}2k千米(k是任意自然数)。当然,这个机器是用longint存的,所以总跑路长度不能超过maxlongint千米。小A的家到公司的路可以看做一个有向图,小A家为点1,公司为点n,每条边长度均为一千米。小A想每天能醒地尽量晚,所以让你帮他算算,他最少需要几秒才能到公司。数据保证1到n至少有一.
2021-08-06 22:18:42
94
原创 最长公共子序列 (nlogn)
将第一个序列离散化成一个上升的序列,第二个序列按对应方式离散化,然后让第二个串匹配第一个串,则最长公共子序列就变成了第二个序列的最长上升子序列。给出 1 - n 的两个排列P1,P2求它们的最长公共子序列。
2021-08-06 22:14:34
898
1
原创 Halfway Gym - 101652Q (二分)
题目链接#include <bits/stdc++.h>using namespace std;#define mem(a, b) memset(a, b, sizeof(a))#define int long long inttypedef pair<int, int> PII;const int inf = 0x3f3f3f3f;const int N = 1e4 + 7;signed main() { int n; cin >>
2021-08-05 23:02:08
105
原创 Black and White Gym - 100801B(构造)
题目链接题目大意用’ @ ‘和’ . ‘构造一个矩形,其中有b个’ @ ‘连通块(上下左右四个方向与自己不同即可),w个’ . '连通块,矩形的列数和行数自己定 (应该不会有人构造100000*100000的矩形吧题目分析可以用最多两行构造出这个矩形用’Q’表示’@’,‘A’表示’ . ',b为Q的连通块的数量,w为A的连通块的数量b=3,w=1QAQAQQAAAA --Q有3个连通区域,A只有一个b=5,w=2QAQAQAQAQQAQAAAAAA --Q有5个
2021-08-05 22:39:35
130
原创 Meeting Bahosain Gym - 102263D
题目链接Essa wanted to meet the most powerful number theorist of all time: Bahosain, but Bahosain does not waste his precious time, so he gave Essa this puzzle in order to test his abilities.Given two arrays, the second array only has distinct elements, Ess
2021-08-02 22:17:07
180
原创 Thanos Power Gym - 102263J (DP)
题目链接After gathering all the infinity stones and dusting half the population of the universe, Thanos went to gardens street. He decided to plant some flowers using the reality stone.So Thanos now wants to plant N flowers in least number of steps needed.
2021-08-02 22:10:42
136
原创 Marbles Lucky Distribution Gym - 101845M --概率、思维、贪心
题目链接题目描述胡安有N个红色弹珠,M个蓝色弹珠,和K个瓶子。他将在K个瓶子中的每个瓶子上放一定数量的弹珠,使得没有瓶子是空的,每个弹珠都在瓶子里。安德烈是一个圣菲球迷,所以他将以均匀分布的方式随机挑选一个瓶子,然后他将以均匀分布的方式随机挑选瓶子里的弹珠,希望是一个红色弹珠。由于胡安是Millonarios的球迷,他想把瓶子里的弹珠分配到安德烈选到蓝色弹珠的概率最大。胡安的生活很忙碌,因此他需要你的帮助来确定弹珠的最佳排列方式和安德烈得到蓝色弹珠的概率。Input输入由三个用空格隔开的整数N
2021-08-01 13:52:24
177
原创 Monkey and Banana HDU - 1069 --最大子序列和
题目链接题目描述一组研究人员正在设计一项实验,以测试猴子的智商。他们将挂香蕉在建筑物的屋顶,同时,提供一些砖块给这些猴子。如果猴子足够聪明,它应当能够通过合理的放置一些砖块建立一个塔,并爬上去吃他们最喜欢的香蕉。研究人员有n种类型的砖块,每种类型的砖块都有无限个。第i块砖块的长宽高分别用xi,yi,zi来表示。同时,由于砖块是可以旋转的,每个砖块的3条边可以组成6种不同的长宽高。在构建塔时,当且仅当A砖块的长和宽都分别小于B砖块的长和宽时,A砖块才能放到B砖块的上面,因为必须留有一些空间让猴子来
2021-08-01 13:39:44
96
原创 Clock Pictures Kattis - clockpictures --KMP应用
题目链接题目描述你有两张不寻常的钟的照片。这座钟有N根指针,每根都有相同的长度,没有任何标记。此外,时钟上的数字已经褪色,你甚至无法分辨图片中的方向。因此,你在图片上看到的唯一东西,是N个指针的色调,而没有其他东西。你想知道这两张图片是否可能是在一天中的同一时间拍摄的,可能是在不同的角度旋转了相机。Task根据这两张图片的描述,判断这两张图片是否有可能是显示同一时间的同一时钟。第一行包含一个整数n(2≤n≤200000),即时钟上的指针数。Input接下来的两行各包含n个整数ai(0≤aia
2021-08-01 13:30:42
222
原创 Doin‘ Time Gym - 103107D --区间DP+乘法逆元
题目链接题目描述总所周知,X_X是一个无聊的人。 X_X总是会想到一些无聊的游戏,还非要你玩 这天他又来了……你有一个长度为N的序列{AiA_{i}Ai},每轮你可以选择一个位置x,使得AxA_{x}Ax和Ax+1A_{x+1}Ax+1合并为一个数(AxA_{x}Ax *Ax+1A_{x+1}Ax+1)%1000003,并得到(Ax−Ax+1)2(A_{x}-A_{x+1})^{2}(Ax−Ax+1)2分。 你需要操作N-1轮使得所有数合并在一起,现在问你你能得到的最高分是多少?
2021-08-01 13:16:16
768
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人