自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 cf923D Picking Strings

题目给出的条件:A->BCB->ACC->AB我们可以通过推理获得三个式子:A->BBB<->AB(这意味着B之前可以增加或者减少任意个A)B<->C(可以把所有的C看成B,因为它们能互相转化)证明如下:1.首先有B->AC->AAB   所以B->AAB->AAAAB->AB->AAAB->B故B&

2018-03-20 18:30:35 259

原创 uva10900 概率dp

思路参考了紫书中的分析,在这里大概地说一下d[i]表示当前已经回答对了i个问题,所能获得的最多奖金的期望。由于除了n个问题已经全部答完的情况,对于每个d[i],我们有以下两种决策,就是根据当前题目的难度,判断出是回答导致的奖金期望比较大还是不回答导致的奖金期望比较大。所以我们不难获得一个等式:设p是当前题目的难度(已知),那么当d[i+1]*p>2^i时,回答这个问题比较好,反之,不回答这个问

2018-01-27 11:12:12 298

原创 uva1580 Pirate Chest

这道题很迷。。一开始以为要用单调栈什么的瞎搞一通,但是因为是三维的,没想出来,然后抱着试试看的运气写了个大暴力,理论复杂度m*n*a*b(照理说应该500*500*500*500早就超时了),没想到能0ms过题,也不知道是不是数据水了思路比较简单,一共四层for循环,第一层i枚举矩形的起点横坐标,第二层j枚举矩形的起点纵坐标,第三层r枚举矩形的末尾横坐标,第四层c枚举矩形的末尾纵坐标。期间

2018-01-12 15:26:41 507 1

原创 uva12559 Finding Black Circles

这道题一直没人写题解,那我就来造福一波后人吧思路比较简单,枚举圆心(x,y),然后枚举半径r,判断一下这三个参数生成的圆经过的方格涂黑的百分比。如果百分比符合条件,那么认为这个圆是存在的。如果直接枚举每个方格,再计算它与圆心的距离,所需要的代价非常大,注意到w和h的取值是小于100的,所以最大的圆半径为50。首先使用init()函数预处理出当圆心为(0,0)时,圆所经过的方格相对坐标,

2018-01-12 11:47:28 492 1

原创 LA 3708 墓地雕塑 证明

代码和题目都在训练指南里面有了。在这里简单地证明一下书上提到的漏洞。①首先,我们不知道是不是一定有一个雕塑没有移动证明:书中把圆进行了缩放,缩放后圆的周长为(n+m),相邻的两个最终位置之间间隔为1.书上提示说证明思路在例题3中已经展示过了,这里描述如何把本问题的证明转化到例题3的证明。首先我们先画出间距为1且在同一直线上的三个点。然后,我们在原n个位置中任选一个不移动的点作为这三

2018-01-10 17:26:47 386

原创 codeforce 903F Clear the Matrix

这道题是一道DP题。状态定义如下:d[i][j]表示从开始到第i-1列为止,全部已经变为dot,并且第i~i+3列状态为j时候的最小花费(由于第i~i+3一共16个位置,所以可以状态压缩,用一个int类型数j存储)。想象我们对第i~i+3列进行操作的过程。假设这4列之前的状态为j,那么显然操作之后的新状态S<=j。所以每次操作都具有单调性。状态转移就比较明确了:①当第i列全部是dot时,d[i][j

2017-12-21 17:18:08 310

原创 UVa11988 Broken Keyboard

第一次做链表的题,理解了好一会儿才明白next数组的工作原理。在本题中,首先将输入数据保存在字符数组s中。next[i]表示的是在屏幕上显示时,s[i]字符的下一个字符在s串中的下标。用cur模拟当前鼠标指针的位置,表示指针在字符s[cur]之后。为了方便顺序输出字符,需要一个索引next[0]来标记字符串的起始位置。因为原光标之后的字符的前一个字符变成了s[i],那么s[i]的下一个字符应为s[c

2017-09-13 00:48:55 163

原创 UVa213 Message Decoding

这道题的难点有两处。1.新手可能会觉得分行的01串处理起来比较困难。其实只要写一个函数readint(int len),在忽略输入流中的换行符的情况下,读取长度为len的二进制数,并将其转化为十进制数返回,就可以把输入流模拟成一个连续的01串了。readint函数中可以使用一个函数readchar(),返回输入流中下一个不为换行符的字符。 2.不知道如何高效地将二进制码转化成字符串中的对应字符。如

2017-09-11 14:18:53 227

原创 Terminal

Terminalacm题解

2017-08-04 23:58:05 274

空空如也

空空如也

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

TA关注的人

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