- 博客(32)
- 收藏
- 关注
原创 HNOI-2004 L语言 字典树 记忆化搜索
给出n个字符串作为字典,询问m个字符串,求每个字符串最远能匹配(字典中的字符串)到的位置先将输入的字典建成字典树维护,再dfs枚举情况,每次匹配到新字符串后,要么继续当前的匹配,要么完成当前匹配再进行下一个字符串的匹配。然后进行记忆化搜索(对于当前搜到并且之前已经搜过的位置进行标记)#include<iostream>#include<cstring>#include<algorithm>using namespace std;const int .
2020-07-09 23:08:11
285
原创 POJ - 1724 Roads
N个城市,编号1到N。城市间有R条单向道路。每条道路连接两个城市,有长度和过路费两个属性。Bob只有K块钱,他想从城市1走到城市N。问最短共需要走多长的路。如果到不了 N 则输出 -1InputKNRs1 e1 L1 T1s1 e2 L2 T2...sR eR LR TR (s e是路起点和终点)2<=N<=1000<=K<=100001<=R<=10000每条路的长度 L, 1 <= L <= 100每条路的过路费.
2020-07-09 20:50:26
238
原创 POJ-3411 Paid Roads 搜索优化
一个道路网连接了N个城市(从1个城市到N个城市),可能有一条以上的道路连接一个城市和另一个城市。有些道路是有偿的。从城市Ai到城市Bi,有两种方式支付旅行费用: 在城市Ci提前支付pi(Ci可能不等于Ai); 出差后在城市Bi支付。它花费了Ri。编写一个程序,从城市1到城市N找到一个最低成本的路线。Input输入的第一行包含N和m的值,下面的m行通过指定ai、bi、ci、Pi、Ri的值来描述一条路。同一行的相邻值由一个或多个空格分隔。所有值是整数,1≤m,N≤10 0≤R P≤≤100。Ou
2020-07-09 18:22:20
250
原创 POJ-2362 搜索+剪枝
给出一些不同长度的小棒,问小棒全部用完是否能构成一个正方形。通过特判来起到剪枝的作用#include<iostream>#include<algorithm>#include<cstring>using namespace std;const int maxn=25;int a[maxn];bool vis[maxn];int n,l; //记录正方形边长bool dfs(int pos,int pre,int cnt) //从该索引遍历、当
2020-07-09 16:40:52
266
原创 POJ - 2513 Colored Sticks trie树+欧拉路径+并查集
candidate19有好多根棍子,这些棍子的两端分都别涂了一种颜色。candidate19突然有了一个疑问,就是他手里的这些棍子能否互相拼接,从而形成一条直线呢?两根棍子只有在颜色相同的时候才能拼接。比如有两根棍子,第一根棍子的两端的颜色分别为blue green,第二根两端的颜色为blue red,那么他们就可以拼接成green blue blue red或者red blue blue green。Input每一行有两个单词,分别代表每一根棍子两端的颜色。每个单词不超过10个字符,最大输
2020-07-09 09:52:46
188
原创 Codeforces1335 E2. Three Blocks Palindrome (hard version) 详细代码
A. Candies and Two Sisters#include<bits/stdc++.h>#define ll long long#define INF 0x3f3f3f3fusing namespace std;const int maxn=1e5+5;int main(){ int t; scanf("%d",&t); w...
2020-04-14 00:34:52
301
1
原创 Codeforces 1271C Shawarma Tent
给定原点和若干点,定义点到原点距离为∣sx−xi∣+∣sy−yi∣,现在要选择一个位置建造帐篷,使得经过这个帐篷的最短路径的点数最大,并输出最短路经过帐篷的点数和帐篷位置。帐篷建设点可以预设在原点周围的8个点,遍历若干点若能经过八个点中的点i,则记录经过点数的cnt[i]加1,取cnt最大的点则是建设帐篷点。#include<cstdio>#include<algor...
2020-02-05 15:20:39
382
原创 Codeforces 1294C Product of Three Numbers
给定一个数n,找到三个不同的数字 a , b , c 使得a * b* c = n,2≤a,b,c。先找到n的第一个因子a,n除以a后再找大于a的因子b,n再除以b后得到c。#include<cstdio>using namespace std; int main(){ int t,ans[3]; scanf("%d",&t); whi...
2020-02-05 15:02:29
224
原创 Codeforces 1296C Yet Another Walking Robot
给出一个机器人的路线,你要删除其中一段,但机器人路线的终点不能改变,求删除的最短区间。直接模拟机器人的路线,用pair保存路线上的点,用map保存该点是第几步到达的,若在后面遍历的时候,发现经过点的map不为0,则说明该点之前走过,则可以省略原经过点到现在经过点的步骤数。用ans保存最短可省略的步骤数,ansx、ansy保存最短区间边界。#include<bits/stdc++.h...
2020-02-05 14:40:30
545
原创 Codeforces 1296D Fight with Monsters
有n 只怪兽,第i只怪兽的血量为 h[i] ,你的攻击力为 a ,你的对手攻击力为 b。注意,打每一只怪兽都是由你先开始攻击一次,再由你的对手攻击一次,轮流攻击。若怪兽最后由你打死得1分,对手打死你不得分。你还有 k 次机会能让你的对手暂停攻击一次,输出你能获得的最高分。首先,先判断每个怪兽在不使用跳过的情况下最后由谁打死,若由你打死加1分跳过,若不由你打死,则跳到打死该怪兽的最后一轮,判断你...
2020-02-05 14:25:44
695
原创 HDU - 2222 Keywords Search (AC自动机模板)
给定 n 个长度不超过 50 的由小写英文字母组成的单词准备查询,以及一篇长为 m 的文章,问:文中出现了多少种待查询的单词。Input第一行一个整数 T,表示数据组数;对于每组数据,第一行一个整数 n,接下去 n 行表示 n 个单词,最后一行输入一个字符串,表示文章。其中,1≤n≤10^4,1≤m≤10^6。Output对于每组数据,输出一个数,表示文中出现了多少个待查询...
2020-02-05 13:38:26
252
原创 CodeForces - 1291A Even But Not Even
让我们定义一个数ebne,且仅当它的数字和可以被2整除,但是数字本身不能被2整除。例如,1313, 12271227, 185217185217 是ebne,然而 1212, 22, 177013177013, 265918265918 不是。你能够删除一个数中间的字符,但不能改变数字顺序,使得这个数成为ebne。例如,222373204424185217171912→223734421852...
2020-02-05 12:45:54
409
原创 POJ - 3630 Phone List (字典树)
t 组数据,n 个电话号码,如果拨打号码的时候,先拨通了某个号码,那么这一串号码就无法全部拨通,eg:911 和 9112016652 相比 后者就无法被拨通,因为 911 会先被拨通。如果n 个电话号码都可拨通,输出 YES ,不然输出 NO。Input样例数t(1 ≤ t ≤ 40), 每组样例有 n个电话号码,(1 ≤ n ≤ 10000).接下来有n个号码字符...
2020-02-05 12:09:17
182
原创 Codeforces Round #609 (Div. 2) B. Modulo Equality
有两个整数序列a = [a1, a2, ..., an],b = [b1, b2, ..., bn],长度都为n,找到一个最小的数x,使得a中的每个数加上x后对m取模,然后重新排序序列a,使得a = b。Input第一行为n,m (1≤n≤2000,1≤m≤10^9),分别是数组的大小和m。第二行为数组a的所有元素(0≤ai<m ).第二行为数组b的所有元素 (0≤bi<...
2020-01-05 21:32:16
214
原创 Good Bye 2019 C. Make Good
一个数组[a1,a2,…,am]为 good 的条件是 a1+a2+⋯+am=2⋅(a1⊕a2⊕⋯⊕am),其中 ⊕ 表示异或。最多加上3个数(可以相同)使得数组为 good,任选一种方案输出。Input先输入样例数t(1≤t≤10000)。然后,第一行为数组大小n(1≤n≤10^5)。第二行输入数组里的n个数a1,a2,…,an (0≤ai≤10^9) 。Output...
2020-01-05 21:12:10
230
原创 HDU - 4821 String (字符串哈希 + map记录)
给定一个字符串s,两个整数m和l。求字符串s有多少个长度为m*l的子串,满足该子串由m个长度为l且各不相同的子串组成。Input多组样例。第一行为两个整数m和l。第二行为字符串s,由小写字母组成。s的长度不超过10^5,1 ≤ m * l ≤ s的长度。Output对于每个样例,输出一行。Sample Input3 3abcabcbcaabcSample Outpu...
2019-12-29 10:46:29
221
原创 HDU - 4080 Stammering Aliens (字符串哈希 + 二分)
在字符串s中找到出现次数大于等于m的最长串,并输出该最长串的长度和最右侧最长子串的出现位置。Input多组输入。第一行为一个字母 m (m >= 1)。第二行为一个长度为 m 到 40000 的字符串,所有字符都为小写字母。当输入m为0时结束。Output输出最长子串出现的次数和最右侧一个子串的出现位置。如果有多个子串满足,选择最右侧开始的子串。Sample Inp...
2019-12-29 10:25:31
420
原创 CodeForces - 1114B Yet Another Array Partitioning Task(贪心)
你现在是一队士兵的教官,已知每个士兵的战斗力,现在需要将士兵分成若干组(不改变士兵最初的序列),且每组只能抽取一定数量的士兵(组内优先选取战斗力大的),问如何分组才能使抽取士兵的战斗力总和最大?Input第一行有三个数n,m,k,n是士兵个数,k是要分成的组数,m是每组中选取的士兵个数第二行n个数代表相应士兵的战斗力Output第一行输出最大战斗力总和第二行输出k-1个整数p1...
2019-12-28 21:35:24
223
原创 CodeForces - 1265B Beautiful Numbers (标记元素的位置)
You are given a permutation p=[p1,p2,…,pn] of integers from 1 to n . Let's call the number m (1≤m≤n) beautiful, if there exists two indices l,r (1 ≤ l ≤ r ≤n ), such that the numbers [pl,pl+1,…,pr] is...
2019-12-28 20:45:58
260
原创 CodeForces - 1272D Remove One Element (动态规划)
求一个序列最多删去一个元素后的最长连续的递增子序列长度。序列 a[l…r] 内元素严格递增,即al < al+1 <⋯ < ar。Input第一行输入序列元素个数 n (2≤n≤2⋅10^5 )第二行输入n个序列元素 a1,a2,…,an (1≤ai≤10^9)Output输出最多删除一个元素后的最长连续的递增子序列长度Examples...
2019-12-28 20:21:14
312
原创 URAL - 1297 Palindrome ( manacher模板 )
“回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串,你的任务就是在一个字符串里面,找到一个子串,这个子串是回文串,而且是当中最长的一个Input输入就一行,一个长度不超过1000的字符串,只包含英文大小写Output输出最长的回文字符串,如果有多个最长的,就输出最先出现的Sample InputabacaSample ...
2019-12-08 10:40:01
192
原创 POJ - 3974 Palindrome(manacher模板 最长回文子串)
Input您的程序将在最多30个测试用例上进行测试,每个测试用例都作为一行中最多包含1000000个小写字符的字符串。输入以字符串“END”开头的行结束。Output对于输入中的每个测试用例,打印测试用例号和最大回文的长度。Sample InputabcbabcbabcbaabacacbaaaabENDSample OutputCase 1: 13Case 2...
2019-09-01 14:09:07
175
原创 POJ - 3281 Dining (无源汇拆点最大流 Edmonds_Karp)
牛是如此挑剔的食客。每头牛对某些食物和饮料都有偏好,她不会吃其他的。 农夫约翰为他的牛做了美味的饭菜,但他忘了对照他们的喜好检查菜单。虽然他可能不能让每个人都吃饱,但他想给尽可能多的奶牛提供一顿完整的食物和饮料。 农夫约翰烹制了F(1≤F≤100)类食物和D(1≤D≤100)类饮料。他的每头n(1≤n≤100)奶牛都决定了她是否愿意吃某种特定的食物或喝某种特定的饮料。农场主约翰必须为每头奶牛指定一种食物和一种饮料类型,以最大限度地增加奶牛的数量。 每道菜或饮料只能由一头奶牛食用(即,一旦将食品类型2分配给一
2019-09-01 13:47:26
239
原创 HDU - 3549 Flow Problem(最大流 Edmonds_Karp模板)
给定多张图,求从1到n的最大流 Input 第一行数据组数 后面每一组数据第一行n,m表示顶点数、边数(n<=15,m<=1000) 后面m行给出每条有向边的信息 Output 对每一组数据,输出从1到n的最大流 Sample Input 2 3 2 1 2 1 2 3 1 3 3 1 2 1 2 3 1 1 3 1 Sample Output Case 1: 1 Case 2: 2 #include<iostream> #include<cstdio> #include
2019-09-01 10:48:58
236
原创 HRBUST - 1955 数独 (DFS递归)
数独应该是一个大家都玩过的游戏,说的就是在一个9*9的方格中填入一些数字,符合以下规则: 1.每一列或每一行中1-9只能出现一次。 2.这个数独划分成的9个小的3*3的方格矩阵内,从1-9的每个数只能出现一次。 Input 输入数据的第一行包括一个整数T,表示有T组测试数据。 每组数据由9行组成,每行由9个整数或者*组成,其中*表示空白的格子。 Output 每组数据输出9行,每行9个整数,表示整个数独。 每两组输出之间有一个空行。 Sample Input 1 *864*2*3* **3**819* **
2019-09-01 10:39:27
233
原创 POJ - 1321 棋盘问题 (DFS递归)
在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别。要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子的所有可行的摆放方案C。 Input 输入含有多组测试数据。 每组数据的第一行是两个正整数,n, k,用一个空格隔开,表示了将在一个n*n的矩阵内描述棋盘,以及摆放棋子的数目。 n <= 8 , k <= n 当为 -1 -1 时表示输入结束。 随后的n行描述了棋盘的形状:每行有n个字符,其中 # 表示棋盘区域, . 表示
2019-09-01 10:33:39
168
原创 OpenJ_Bailian - 4115 鸣人和佐助(BFS特殊判重)
佐助被大蛇丸诱骗走了,鸣人在多少时间内能追上他呢?已知一张地图(以二维矩阵的形式表示)以及佐助和鸣人的位置。地图上的每个位置都可以走到,只不过有些位置上有大蛇丸的手下,需要先打败大蛇丸的手下才能到这些位置。鸣人有一定数量的查克拉,每一个单位的查克拉可以打败一个大蛇丸的手下。假设鸣人可以往上下左右四个方向移动,每移动一个距离需要花费1个单位时间,打败大蛇丸的手下不需要时间。如果鸣人查克拉消耗完了,则只可以走到没有大蛇丸手下的位置,不可以再移动到有大蛇丸手下的位置。佐助在此期间不移动,大蛇丸的手下也不移动。请问
2019-09-01 10:22:04
534
2
原创 HDU - 3047 Zjnu Stadium (带权并查集)
一个体育场列标号为1-300,行无限(一列可以有多人重复坐)体育场是一个环。 给出n个人和m个关系,关系为A B x表示A位置若为i,则B位置在A顺时针加x的位置。如果一个关系在前面给出的关系中矛盾,则称其不成立。求不正确的关系个数 Input 输入多组数据,第一行n,m(1<=N<=50,000,0<=M<=100,000)表示人数和关系数 接下来m行表示关系 A(1<=A<=N), B(1<=B<=N), X(0<=X<300) (A!=B)
2019-09-01 10:07:09
193
原创 HDU - 1166 敌兵布阵 (线段树的单点修改、区间查询)
Input第一行一个整数T,表示有T组数据。每组数据第一行一个正整数N(N<=50000),表示敌人有N个工兵营地,接下来有N个正整数,第i个正整数ai代表第i个工兵营地里开始时有ai个人(1<=ai<=50)。接下来每行有一条命令,命令有4种形式: (1) Add i j,i和j为正整数,表示第i个营地增加j个人(j不超过30) (2)Sub i j ,...
2019-08-25 10:29:35
251
原创 CodeForces - 189A Cut Ribbon (完全背包)
Polycarpus有一条丝带,其长度为N。他希望以满足以下两个条件的方式切割丝带: 切割后,每个带状件的长度应为A、B或C。 切割后,带状件的数量应最大。 帮助Polycarpus找到所需切割后的带状件数量。 输入 第一行包含四个空格分隔的整数n、a、b和...
2019-08-25 10:27:47
582
原创 POJ - 3494 Largest Submatrix of All 1’s (单调栈)
给定一个m*n的(0,1)矩阵,其所有1的子矩阵中,哪个是最大的?最大的意思是子矩阵的元素最多。 输入 输入包含多个测试用例。每个测试用例都以m和n(1≤m,n≤2000)在线开始。然后得到(0,1)-矩阵的元素,以m行的主序排列,每行有n个数字。满足EOF后,输入结束。 输出 对于...
2019-08-25 10:23:54
127
原创 HDU - 1026 Ignatius and the Princess I(BFS+优先队列+记录路径)
公主被魔王冯5166绑架,我们的英雄伊格那丢必须拯救我们美丽的公主。现在他进了冯5166的城堡。城堡是一个巨大的迷宫。简单地说,我们假设迷宫是一个n*m的二维数组,左上角为(0,0),右下角为(n-1,m-1)。伊格纳提乌斯(Ignatius)在(0,0)进入,到Feng5166房间的门在(N-1,M-1),这是我们的目标。城堡里有一些怪物,如果伊格那丢遇到他们,他必须杀死他们。以下是一些规则:...
2019-08-25 10:18:27
198
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅