
ACM
文章平均质量分 90
算法学习与交流
Chook_lxk
你前程有在,但须澄心猛省,不可自甘堕落。
展开
-
HDU - 4821 String(字符串hash+ map判重)
点击打开题目链接题目大意:给出两个整数M和L及一个字符串s,找到s的子串使得满足: 1.子串长度为L*M; 2.子串可以分成M个小子串,每个长度L,且M个子串互不相同; 求满足条件的s的子串的数量。思路:基本思路是先用BKDRhash函数处理字符串。然后字符串从后往前遍历求解hash值,利用map判重的特点,存储子串中每个小子串的hash值,如果等于M则ans++。然后思考怎...原创 2018-07-26 17:51:34 · 338 阅读 · 0 评论 -
HDU - 4080 Stammering Aliens(字符串hash + 二分)
点击打开题目链接题目大意:给出一个m和一个字符串s,寻找s的最长子串满足:该子串在s中出现不小于m次。如果有多个子串满足,选择最右侧开始的子串。要求输出子串的出现次数和最右侧一个子串的出现位置。思路:容易想到用BKDR哈希函数和二分子串长度来做。 WA了两次,第一次solved函数里ans的初始值设置错了,不应该设置为0,改成-1;第二次二分结果后不应该直接输出t,因为t有-...原创 2018-07-26 19:49:25 · 848 阅读 · 0 评论 -
[转]二十多岁的你,迷茫又着急
献给我们这一代焦躁不安困惑迷茫的年轻人,共勉!!20多岁的你,迷茫又着急。 你想要房子想要汽车, 你想要旅行想要享受生活。 你那么年轻却窥觑整个世界, 你那么浮躁却想要看透生活。 你不断催促自己赶快成长,却沉不下心来安静的读一篇文章; 你一次次吹响前进的号角,却总是倒在离出发不远的地方。成长,真有你想象的那样迫切? 一、别急,千万别急 上周在南京出差,深夜拖着疲惫 去跟原创 2018-01-31 10:50:43 · 11170 阅读 · 5 评论 -
2018年团体程序设计天梯赛总结
努力是不会骗人的,如果说努力了还没被看到,只能说明你努力的还不够!2018.3.31 天梯赛。 从3月17日的天梯赛选拔开始,到3月31日正式的天梯赛,期间共进行了四场选拔赛,四场训练赛,一场模拟赛。在这九场比赛中,我的名次可能是波动最大的那个了。原因有两个:一是对中高档题目的训练少,二是心态问题。通过最后一周的专项训练,这些也都得到了改善。 正式的天梯赛在3月31日下午1点到4点...原创 2018-04-09 19:00:47 · 4771 阅读 · 0 评论 -
URAL - In the Army Now(归并排序求逆序数对)
点击打开题目链接1090. In the Army NowTime limit: 1.0 secondMemory limit: 64 MBThe sergeant ordered that all the recruits stand in rows. The recruits have formedKrows withNpeople in e原创 2017-11-30 21:37:23 · 250 阅读 · 0 评论 -
UVA - 1614 Hell on the Markets(贪心 + 结论)
点击打开题目链接 题目大意 给定n个数,满足1<=a[i]<=i; 使其中某些数变成倒数使得n个数总和为0;思路: 结论:n个数可以组成1~sum[n]的任意数 证明: 当n = 1时, a[1] = 1 = sum[1] 满足; 假设当n = k时满足; 当n = k + 1时: sum[k+1] = sum[k] + a[k+1]; 因此只需证明能凑出sum...原创 2018-03-08 15:59:56 · 358 阅读 · 0 评论 -
HDU - 2819 Swap(二分图匹配)
点击打开题目链接题目大意:给一个N*N的01矩阵,可以任意交换两行或者两列,使得对角线上的数字全是1。问交换方法。思路:如果交换可以获得最终解,那么只交换行或者列也可以得到最终解。首先构造二分图,如果g[i][j] = 1,那么就可以加一条i->j的边,即第j列可以与第i列交换使得g[i][i] = 1。如果最大匹配为n,就可以通过交换使得所有的i与j相等,从而获得结果。...原创 2018-07-24 11:20:05 · 316 阅读 · 0 评论 -
博弈(一) 巴什博弈(Bash Game)
巴什博弈(Bash Game)有一堆n个物品,两个人轮流拿,最少拿一个,最多拿k个,拿到最后的人胜利。 结论: 必败点为n % (k+1) = 0。 证明: 如果n = t(k+1):先手拿m个,后手可以拿(k+1-m),剩下物品数为(k+1)(t-1),还是必败点,所以后手总能拿到最后一个。 如果n = t(k+1) + m,先手先拿m个,后手将面临必败点,先手胜利。 例题: ...原创 2018-07-19 13:53:24 · 948 阅读 · 0 评论 -
博弈(二) 威佐夫博弈(Wythoff‘s game)
威佐夫博弈(Wythoff’s Game)有两堆物品分别为(an, bn)。两个人轮流取,至少取一个,有两种取法,取到最后一个者胜利。 1.从任意一堆中取任意个 > 1。 2.从两堆中取同样多个。 结论: 对于任意的局势(a, b)(a < b),必败点为(b-a) * (sqrt(5)+1)/2 = a. 证明: 第一个必败点为(0, 0),即谁面对当前局势必输。 ...原创 2018-07-19 15:39:18 · 540 阅读 · 0 评论 -
博弈(三) 尼姆博弈(Nimm Game)
尼姆博弈(Nimm Game)有3堆任意多的物品(x, y, z)。两个人轮流拿,每次只能从一堆中拿,至少拿一个,至多不限。拿到最后者胜利。 结论: 必败点为 x^y^z = 0。(^为异或) 证明: 如果当前局势为(0,0,0)。先手肯定输。其中0^0^0=0 如果当前局势为(0,n,n)。先手肯定输。因为无论先手怎么拿,后手都可以从另一堆里拿相同多个。最终转化成(0,0,0)的情...原创 2018-07-19 18:57:17 · 564 阅读 · 0 评论 -
UVA - 506 System Dependencies(STL + 模拟)
点击打开题目链接 组件之间具有依赖关系,模拟实现组建的安装和删除操作。 指令 说明 DEPEND item1 item2 [item3 …] 安装item1需要先安装item2(、item3……) INSTALL item1 安装item1和它的依赖(已安装过的不用安装) REMOVE item1 移除item1及其依赖的全部组件,如果组件被...原创 2018-02-12 12:38:15 · 270 阅读 · 0 评论 -
UVA - 12171 Sculpture(离散化+bfs)
点击打开题目链接 由n个方块组成雕塑,方块直接可以重叠和嵌套,已知每个方块最小顶点坐标值和长宽高,求形成雕塑的体积和表面积。 首先离散化坐标,将1001 * 1001 * 1001的密闭空间分成100 * 100 * 100个小方块。然后对空气块种子填充,求出空气块体积及内表面积。 代码:#include<bits/stdc++.h>using namespace s...原创 2018-02-09 11:31:20 · 373 阅读 · 0 评论 -
UVA - 1572 Self-Assembly(拓扑排序判断成环)
点击打开题目链接 有n种边上带标号的正方形,每种无穷多个,特定标号可以相连,判断是否能够组成无限大空间结构。 标号做点,正方形作边,构建有向图,拓扑排序判断是否成环即可。 代码:#include<bits/stdc++.h>using namespace std;const int maxn = 52;int n;string s;int vis[maxn];...原创 2018-02-10 18:01:37 · 318 阅读 · 0 评论 -
UVA - 1599 Ideal Path(双向bfs + 字典序 + 输出路径)
点击打开题目链接 给一个n个点m条边的无向图,每个边标记一种颜色(1~1e9),求一条从1到n的路径,使得经过边尽量少的前提下颜色序列字典序最小。 思路: 1.忽略自环的边,用邻接表建图 2.逆序bfs求出每个顶点到n的最短距离。 3.顺序bfs从顶点1开始按照每次到n最短距离-1来寻找剩余顶点,多个顶点满足时按照最小颜色走,颜色相同时进队列,最小颜色记在ans[]中。 *vis[]保...原创 2018-02-11 18:57:55 · 357 阅读 · 0 评论 -
UVA - 210 Concurrency Simulator(双端队列)
点击打开题目链接 用一个双端队列deque存等待队列,一个普通队列存阻止队列,然后进行各项操作的模拟 一开始用的结构体存每个程序,然后队列里面存的也是结构体,T了。然后改用vector存程序,队列存每个程序的标号。 代码:#includeusing namespace std;const int maxn = 1000 + 5;queueint> stop;dequeint原创 2018-02-04 18:53:13 · 309 阅读 · 0 评论 -
UVA - 221 Urban Elevations(离散化思想)
点击打开题目链接 给出n个建筑物的左下角坐标和长,宽,高等属性。输出正视图中所有能看到的建筑物的标号,要求按照建筑物左下角坐标从小到大输出,x坐标相同时优先输出y小的。 思路: 将所有建筑物按照先x再y排序,然后对x坐标进行离散化处理。 即对所有x坐标排序去重,则相邻两个坐标区间只有一种状态,要么区间完全可见,要么完全不可见,取区间中点然后遍历所有建筑物,就能得出建筑物是否可见。 代码:原创 2018-02-06 13:39:18 · 297 阅读 · 0 评论 -
UVA - 1596 Bug Hunt(STL)
点击打开题目链接 找第一个bug所在行 bug: 1.数组越界 2.使用未初始化的数组元素 两个map,分别存取数组的大小和某一元素的值。处理嵌套数组时可以递归,也可以从串最后往前迭代遍历。 代码:#includeusing namespace std;typedef long long ll;const ll maxn = 1e15;mapint, int> mp;//原创 2018-02-02 12:06:57 · 241 阅读 · 0 评论 -
UVA - 12657 Boxes in a Line(双向链表)
点击打开题目链接 数组实现双向链表模拟操作。 lrj代码技巧是采用了一个标记变量,避免了操作4对所有元素指针的修改,并能统一其他操作。 swap用来处理当op=3时l[x]=y的情况,和后面l[y]=x统一。 代码:#includeusing namespace std;typedef long long ll;const int maxn = 100000 + 5;in原创 2018-02-03 16:29:34 · 259 阅读 · 0 评论 -
UVA - 220 Othello(模拟)
点击打开题目链接 一秒钟想思路,一下午调BUG 注意的地方: 1.输出格式最后不要多加空行。 2.坐标之间一个空格间隔,行尾没空格 3.棋子数的输出%2d 4.No legal move.(我忘了点,udebug样例全过了,找了半天才找出来TAT) AC代码:#include#include#includeusing namespace std;int mp[10原创 2018-01-28 20:04:47 · 287 阅读 · 0 评论 -
UVA - 509 RAID!(模拟 + 异或)
点击打开题目链接 给出数据块,判断合法性,合法则恢复并输出完整的数据。非法则报告磁盘非法。 合法: 1.任意一列如果没有x则应该满足奇校检或偶校检条件(即1的个数为奇数或者偶数)。 2.某一列如果有x,只允许有一个。 代码:#includeusing namespace std;char mp[8][8000];int d, s, b;char c;int op;in原创 2018-01-30 12:01:36 · 616 阅读 · 0 评论 -
UVA - 1589 Xiangqi(模拟)
点击打开题目链接 题目大意: 考虑一个象棋残局,红方有n个棋子,黑方只有一个将。红方除了一个帅(G)外还有三种可能的棋子:车(R),马(H),炮(C),并且需要考虑“蹩马腿”与将帅不能照面的规则。 输入所有的棋子位置,保证局面合法并且红方已经将军。判断红方是否已经把黑方将死。 思路: 遍历黑将能走的所有点,判断是不是在红子攻击范围,边界情况(黑将走一步可能吃掉红子)覆盖处理。 代码:原创 2018-01-27 17:56:29 · 331 阅读 · 0 评论 -
UVA - 12412 A Typical Homework (a.k.a Shi Xiong Bang Bang Mang)(模拟)
点击打开题目链接 题目大意: 编写一个成绩管理系统(SPMS).最多100个学生,每个学生有学生编号,班级编号,姓名,四科成绩四个属性。要求实现: 1.添加学生 2.删除学生 3.打印学生信息 4.显示排名(其实就一句话) 5.显示各班级的成绩总结 6.退出1.用string表示的字符串,没用char数组,printf输出的时候要加c_str()函数。 2.题目要求100人,原创 2018-01-26 16:26:33 · 305 阅读 · 0 评论 -
POJ - 3669 Meteor Shower(bfs)
点击打开题目链接Meteor ShowerTime Limit:1000MSMemory Limit:65536KTotal Submissions:19992Accepted:5189DescriptionBessie hears that an extraordinary met原创 2017-06-25 13:07:24 · 406 阅读 · 0 评论 -
HDU - 5510 Bazinga(暴力剪枝 + KMP || strstr)
点击打开题目链接BazingaTime Limit: 2000/1000 MS (Java/Others)Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 6170Accepted Submission(s): 1902Problem DescriptionLadie...原创 2017-12-06 11:27:06 · 310 阅读 · 0 评论 -
UVALive - 7544 Banking II(dp)
点击打开题目链接A month ago at the South Pacific Divisional Contest, each of you (or one of your teammates) solved a problem about authenticating users. To refresh your memory: The Actuarial Commerce Merchant原创 2017-12-04 17:29:05 · 490 阅读 · 0 评论 -
CodeForces - 788B Weird journey(欧拉回路)
点击打开题目链接B. Weird journeytime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputLittle boy Igor wa原创 2017-12-02 18:43:01 · 507 阅读 · 0 评论 -
51Nod - 1021 石子归并(经典dp)
点击打开题目链接基准时间限制:1秒 空间限制:131072KB 分值:20难度:3级算法题收藏关注N堆石子摆成一条线。现要将石子有次序地合并成一堆。规定每次只能选相邻的2堆石子合并成新的一堆,并将新的一堆石子数记为该次合并的代价。计算将N堆石子合并成一堆的最小代价。例如: 1 2 3 4,有不少合并方法原创 2017-12-01 16:34:17 · 520 阅读 · 0 评论 -
HDU - 2159 FATE(二维完全背包)
点击打开题目链接FATETime Limit: 2000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 15349Accepted Submission(s): 7257Problem Description最近xhd正原创 2017-08-21 17:35:33 · 402 阅读 · 0 评论 -
HDU - 1203 I NEED A OFFER!(01背包)
点击打开题目链接I NEED A OFFER!Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 29813Accepted Submission(s): 12157Problem Descripti原创 2017-08-19 21:09:36 · 286 阅读 · 0 评论 -
HDU - 1171 Big Event in HDU(01背包)
点击打开题目链接Big Event in HDUTime Limit: 10000/5000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 43705Accepted Submission(s): 15030Problem Descrip原创 2017-08-19 09:53:16 · 334 阅读 · 0 评论 -
HDU - 1176 免费馅饼(DP数塔)
点击打开题目链接免费馅饼Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 52321Accepted Submission(s): 18334Problem Description都说天上不原创 2017-08-19 20:27:50 · 532 阅读 · 0 评论 -
UVA - 1025 A Spy in the Metro (DP)
点击打开题目链接DescriptionSecret agent Maria was sent to Algorithms City to carry out an especially dangerous mission. After several thrilling events we find her in the first station of Algorithm原创 2017-08-17 20:04:33 · 307 阅读 · 0 评论 -
HDU - Monkey and Banana (最大递增子段和)
点击打开题目链接Monkey and BananaTime Limit: 2000/1000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 16178Accepted Submission(s): 8606Problem Descript原创 2017-08-17 10:32:28 · 259 阅读 · 0 评论 -
HDU - 2571 命运(简单DP)
点击打开题目链接命运Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 20253Accepted Submission(s): 7055Problem Description穿过幽谷意味着离原创 2017-08-16 16:47:29 · 555 阅读 · 0 评论 -
HDU - 2602 Bone Collector(简单01背包)
点击打开题目链接Bone CollectorTime Limit: 2000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 65787Accepted Submission(s): 27418Problem Descriptio原创 2017-08-15 09:17:25 · 478 阅读 · 0 评论 -
HDU - 1087 Super Jumping! Jumping! Jumping!(最大递增子段和)
点击打开题目链接Super Jumping! Jumping! Jumping!Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 40697Accepted Submission(s): 18831原创 2017-08-15 10:46:53 · 501 阅读 · 0 评论 -
HDU - 1505 City Game(最大子矩阵)
点击打开题目链接City GameTime Limit: 2000/1000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 7541Accepted Submission(s): 3262Problem DescriptionBo原创 2017-08-14 19:43:45 · 567 阅读 · 0 评论 -
HDU - 1231 最大连续子序列
点击打开题目链接最大连续子序列Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 34209Accepted Submission(s): 15503Problem Description给定原创 2017-08-14 15:38:40 · 418 阅读 · 0 评论 -
HDU - 1506 Largest Rectangle in a Histogram(最大子矩阵)
点击打开题目链接Largest Rectangle in a HistogramTime Limit: 2000/1000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 19253Accepted Submission(s): 5803P原创 2017-08-14 16:26:12 · 572 阅读 · 0 评论 -
HDU - 2955 Robberies(01背包)
点击打开题目链接RobberiesTime Limit: 2000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 25290Accepted Submission(s): 9321Problem DescriptionT原创 2017-08-10 09:55:38 · 523 阅读 · 0 评论