自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 收藏
  • 关注

原创 贪吃蛇学习笔记【C++】

事情是这样的,我上的大学里有个和微软合作的俱乐部,面向大一招新的时候我去参加了一面,面试完ACM组又去了一下game组,结果就让我写一个贪吃蛇作为二面前的任务。这我也没写过啊,就只好搜了一下别人的源代码学习学习。我从这里找的源代码,但是真正的作者是这位。一百多行的代码看下来,确实是学到了不少。首先是整体的算法思路。这里的方法简单直接,就是时间每过去一个特定值就前进一步,然后判断有没有撞到边界或自己或者吃到食物,如果吃到了食物就变长同时随机一个新的食物,当然食物不能长在蛇身上。直接判断时间差是我没预料

2020-10-03 15:49:28 152

原创 玩家的输入

即使是单线的galgame也是需要和玩家互动的,你不点击屏幕对话就不会进行。那么我们该怎么判断玩家的输入呢?下面的代码就是用来做这个的。#include<conio.h>if (kbhit())ch=getch();首先是kbhit()函数。这个函数用来检测是否有键盘输入,如果有就返回true否则返回false,简单好懂。然后是getch()函数。这个函数可以获取键盘输入,但是不需要将输入反馈到屏幕上,也就是说输入时看不见的。这个函数的返回值则有意思的很,如果输入的是字母、数字、Ta

2020-10-03 15:45:09 144

原创 隐藏光标

我们在玩游戏的时候有看见光标一闪一闪的吗?没有吧。反正我是没有。要把光标隐藏起来我们就需要这样的东西:#include<windows.h>CONSOLE_CURSOR_INFO 变量1={x,0};SetConsoleCursorInfo(句柄, &变量1);首先,上面那个超长的带下划线的东西是变量类型,这种类型用于确定光标的样子。可以看到这个类型也是一个结构体,里面有两个成员。其中第一个成员决定了光标的大小,取值范围是[1,100],第二个成员表示光标能否看见,是bool类

2020-10-03 15:16:34 964

原创 光标定位

在特定的位置输出至少有这两种方法:第一是打空格过去,第二就是直接定位光标了。先贴代码。#include<windows.h>COORD 变量名;前面的COORD是一种结构体变量类型,里面有两个元素XXX和YYY,分别表示了光标的横纵坐标。要想在特定位置输出,就先在程序里改一改这里的XXX和YYY,然后输出就行。当然,在这样输出之前首先要获得屏幕输出区的句柄。...

2020-10-03 14:58:28 1734

原创 获取句柄

先附上代码再解释#include<windows.h>HANDLE 变量名=GetStdHandle(STD_OUTPUT_HANDLE);最前面的HANDLE应该是类似变量类型的东西,后面的GetStdHandle()GetStdHandle()GetStdHandle()函数则比较有意思,它的作用是“获得一个句柄”。我也不太明白是干什么的,但是要做一些花里胡哨的事应该都需要这个。另外这个函数里面可以填三个参数,分别有自己的意思:STD_INPUT_HANDLE:标准输入的句柄S

2020-10-03 14:50:20 729

原创 洛谷P5094 【USACO2004OPEN】MooFest 狂欢节

题目传送门最简单的暴力:从前往后对每头牛枚举与它后面每一头牛交谈所需的音量我们考虑优化这个暴力。不难看出每头牛只在与听力小于它的牛交谈时才会对答案有贡献。因此我们将牛按照听力从小到大排序,对于每头牛暴力计算与听力小于它的牛(也就是排在前面的牛)交谈对答案的贡献。其实暴力就可以A掉这道题了,因为这是USACO,如果是国内的比赛,上面的暴力十有八九要被卡掉。那么怎么继续优化呢?我们发现这个算法...

2019-02-06 22:08:29 199

原创 洛谷P3243【HNOI2015】菜肴制作

题目传送门这道题看上去就知道是拓扑排序,再一看题,应该是求字典序最小的合法方案,所以贪心的找当前入度为0的编号最小的点就行了。恭喜,你掉到坑里了。其实我一开始就是这么做的,后来在测样例第三组数据的时候炸掉了,这组数据就可以卡掉这个贪心 (这样例还真良心啊) 。我们不妨反着考虑,最后一位放合法的最大值(设为xxx)显然是最优的,因为这样可以让小于xxx的数更加往前,而大于xxx的数因为xxx...

2018-11-05 08:42:24 286

原创 洛谷P1296 奶牛的耳语

题目传送门随机跳到的一道题,虽然确实挺水但是也不至于是红题吧qwq,可能是因为数据过水导致一大片n2n^2n2暴力过了所以拉低了评分,虽然以这道题的数据范围n2n^2n2应该被卡掉的。简述题意:给定一个序列和一个数ddd,求无序数对&amp;lt;i,j&amp;gt;&amp;lt;i,j&amp;gt;&lt;i,j&gt;的个数,满足∣ai−aj∣&amp;lt;=d|a_i-a_j|&...

2018-11-02 09:19:34 681

原创 洛谷P2057 【SHOI2007】善意的投票

题目传送门如果网络流做的稍多一点,就不难看出来这是一道最小割:将一种意见与超级源点相连,另一种意见与超级汇点相连,再把每个人和与他意见不同的朋友连边,将每条边的流量上限都设为1,最后最大流量即为答案。再看一下我们建的图会发现这是一个二分图,所以匈牙利也是可以的另外观察一下样例可以发现我的朋友的朋友不一定是我的朋友(废话)上代码dinic,我是把意见为0的人和源点相连了:#include...

2018-10-31 10:07:48 152

原创 洛谷P4281【AHOI2008】紧急集合/聚会

题目传送门这道题目有两个版本的题面(lollollol),不过题目的意思是一样的。这道题给出了一棵nnn个点的树和mmm个询问,对于每个询问给出三个点,求这棵树上到这三个点距离之和最小的点以及最小距离和。我们先来考虑一个简化版本:每次不是询问三个点,而是两个。那么答案显而易见:合法的点为这两个点的lcalcalca到这两个点路径上的任意一点,最短距离和也就是这两个点的距离。好了,那么我们回...

2018-10-16 20:58:26 231

原创 洛谷P1197 【JSOI2008】星球大战

题目传送门这道题大部分的人一开始的思路都是一个一个的删除点再求联通块数,但问题是断开一条边并不意味着会有一个联通块断成两个,所以我们只能遍历整个图,而这个做法的时间复杂度是我们接受不了的。既然删点行不通,我们不妨逆向思考,从最后的状态开始加点,这样只需要用并查集维护联通,然后每次遍历加入的点的连边就行了。如果新加入的点有将两个原来不相连的联通块连接起来的边,那么联通块的数量就会减少。上代码...

2018-09-26 19:41:26 170

原创 洛谷P2216 【HAOI2007】 理想的正方形

题目传送门感觉这还是一道挺不错的题的。这道题的思路是先处理行的最大值和最小值,再用行的最值处理一遍列的最值,如果要这一遍求的同时也是以这个位置为右下角的正方形的最值,那我们需要两次处理都使用滑动窗口,而且要两个同时跑。不会滑动窗口的请自行百度qwq具体细节及变量解释见代码#include&lt;iostream&gt;#include&lt;cstdio&gt;#include...

2018-09-03 19:39:44 170

原创 洛谷P1373 小a和uim之大逃离

题目传送门感觉这道题思路还是比较简单的,令f[i][j][k][0/1]f[i][j][k][0/1]f[i][j][k][0/1]表示走到(i,j)(i,j)(i,j),两人魔液差为k,最后一步是小a还是uim拿取魔夜的方案数,然后用左边和上边的格子来更新。这道题有两个问题,第一个是这道题的空间限制很紧,一不小心就MLE了,所以数组要尽量小一些。第二个在fff数组的k那里。一开始我是...

2018-09-02 20:16:20 148

原创 洛谷P2014 选课

题目传送门这道题可以比较容易地看出来是树形DP,将课程xxx的前置课程作为xxx的父亲节点,令f[i][j]f[i][j]f[i][j]表示在以节点iii为根的子树中选择jjj门课程的最大学分。但是有个问题:可以有好几门课没有前置课程,也就是说会有好几个根节点。对于这个问题,我们的解决办法是新建一个无前置课程、点权为0的0号点作为所有原来的根节点的父亲,这样就把几棵树连成了一棵,DP做完后...

2018-09-02 19:00:29 371

原创 洛谷P1131 【ZJOI2007】时态同步

题目传送门这道题还是能比较容易的看出来它的树形结构的,时间即为边的长度,而且很显然的是,如果以xxx为根的子树已经时态同步,那么以xxx的儿子为根的子树肯定也已经时态同步,也就是说我们可以从xxx的儿子的状态推到xxx的状态,所以我们考虑树形DP。设f[i]f[i]f[i]表示在以iii为根的子树中达成时态同步需要最少用几次道具。那么对于一个f[son[x]]f[son[x]]f[son[...

2018-06-29 15:48:27 180 1

原创 洛谷P2389 电脑班的裁员

题目传送门解法: 我们设f[i][j][0/1]f[i][j][0/1]f[ i ][ j ][ 0/1 ]表示将前 i 个人分成 j 组,不保留/保留 i 的最大得分和。若不保留 i ,则当前状态等于 i-1 保留/不保留,分成 j 组的最大得分和(没有保留 i,可以看做分组没有断开);若保留 i ,则当前状态等于保留 i-1,分成 j 组和不保留 i-1,分成 j-1 组(i 保留而 i...

2018-06-28 13:00:35 405

原创 洛谷P1776 【NOI导刊2010】 宝物筛选(二进制优化多重背包)

题目传送门这道题可以一眼看出来是一道多重背包,所以我们还是按照多重背包来想,令F[ i ][ j ]表示只看前 i 种物品,背包容量为 j 时的最大价值,转移方程为f[i][j]=max(f[i−1][j−k∗weight[i]]+k∗value[i])f[i][j]=max(f[i−1][j−k∗weight[i]]+k∗value[i])f[ i ][ j ]=\max(f[ i-1 ][...

2018-06-28 12:58:10 176

原创 洛谷P2233 【HNOI2002】公交车路线

题目传送门(洛谷)这道题看起来像是一道数学题(或许也有数学解法),但是再仔细想想也可以想到它的DP解法。先从最简单的DP开始,我们设f[i][j]f[i][j]f[i][j]表示走 i 步到第 j 个点的方案数,不难看出f[i][j]=F[i−1][j−1]+F[i−1][j+1]f[i][j]=F[i−1][j−1]+F[i−1][j+1]f[ i ] [ j ]=F[ i-1 ] [ j-...

2018-06-28 12:54:51 230

原创 洛谷p1352 没有上司的舞会

题目已经说了这是一棵树,而这道题显然不是重心或者lca之类的东西,所以我们考虑树形DP。(一句废话)首先考虑如果节点i不去舞会时以i为根的子树的快乐指数最大值,显然就是每个以i的儿子为根的子树的最大值之和。如果节点i参加舞会,那么相应的最大值就是i的每个儿子都不去时,以i的儿子为根的最大值之和,再加上i的快乐指数。所以状态和转移方程就很显然了,设f[i][0/1]f[i][0/1]f[...

2018-06-28 12:48:02 126

原创 洛谷P3197 【HNOI2018】越狱

题目描述监狱有连续编号为 1…N的 N个房间,每个房间关押一个犯人,有 M 种宗教,每个犯人可能信仰其中一种。如果相邻房间的犯人的宗教相同,就可能发生越狱,求有多少种状态可能发生越狱。输入输出格式输入格式: 输入两个整数 m,n输出格式: 可能越狱的状态数,模 100003 取余m≤10^8,n≤10^12解法 这道题我是先考虑的dp,状态设f[i][j]f[i][j...

2018-06-28 12:40:01 269

原创 洛谷P2285 【HNOI2004】 打鼹鼠

题目描述鼹鼠是一种很喜欢挖洞的动物,但每过一定的时间,它还是喜欢把头探出到地面上来透透气的。根据这个特点阿牛编写了一个打鼹鼠的游戏:在一个n*n的网格中,在某些时刻鼹鼠会在某一个网格探出头来透透气。你可以控制一个机器人来打鼹鼠,如果i时刻鼹鼠在某个网格中出现,而机器人也处于同一网格的话,那么这个鼹鼠就会被机器人打死。而机器人每一时刻只能够移动一格或停留在原地不动。机器人的移动是指从当前所处的网...

2018-06-28 12:30:56 294

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除