2015 UESTC Winter Training #4

Regionals 2008 :: Asia - Tehran

比赛开始时电脑死活也连不上WIFI,导致花了近1个小时才解决_(:зゝ∠)_

未完成:B E F G H I

A - String LD

给n(<=100)个互不相同的字符串(最长为100),然后进行stringld操作,就是每次操作把各个字符串的首个字符删去,直到

  1. 有字符串完全删去
  2. 存在两个字符串完全一致

问在最后一次操作之前有几次操作(PS:问法是在太奇怪了,不就是答案减一嘛)

【简单字符串处理】

三层for循环,第一层枚举操作次数,第二层对每个字符串删去首字符,第三层比较,因为比较用了strcmp,相当于多了一层,结果o(n^4)的复杂度,怎么想都要超时啊。现在想想,第三层和第四层并不是全部枚举的,大概只枚举了一半,即最终复杂度是100*100*50*50=25,000,000。仍然很高,但是确实是3ms通过。

B - Painting

n*m(均小于等于100)的棋盘,小明(姑且认为是小明吧)用不同颜色凃这个棋盘,每次涂色将一整行或者一整列涂成一个颜色,给出棋盘的颜色(全都涂上颜色,用不超过10000的数字表示),问涂色的顺序(如果有多个答案,要求输出是字典序最小的)

【拓扑排序】【未完成】

假若某一行是653426,即某一个数出现了两次,那么一定有一次这一行刷的时是6,并且在这之后竖着刷了有5,3,4,2这四种颜色。那么构图从结点6向结点5,3,4,2分别一条有向边,这样构成图。最后做一次拓扑排序即可。

因为数字是10000以内,而结点数最多只有200个(横着刷或者竖着刷最多刷200次),因此做一个映射,把编号映射到1到200间。还因为要字典序最小,所以做映射之前记得要排一下序。

这道题最坑爹的一点据说是可能出现相同的涂色,即两次涂色用的是同一个颜色,因此我目前还没有改对。(因为题目中说了每次使用不同的颜色涂色,因此这个传言是错误的)

有时间再改一下吧。

C - Another Brick in the Wall

给出大小为m*n(均小于等于100)的一面墙,墙上有砖(废话),每块砖高度是一格,输入数据中用数字表示,数字为砖的长度,比如33322,就是一块长为3的砖和一块长为2的砖组合在一起。输入中的0表示这里没有砖。

现在要抽出一块砖。如果抽出砖之后,墙上某一块砖每一部分的下方均空着,那么这块砖就掉落到地上。问最多有多少长度的砖掉下去了(掉下去的包括抽出的砖的长度)。

【记忆化搜索】

这道坑爹的题目整整花了我两个小时的时间,一开始想用动态规划,就是从上到下进行动态规划,每扫描到一块砖,首先将这块砖的长度加进这块砖的dp值中,如果它下方的某块砖抽走后它能跌落,那么就累加入下方的砖的dp值中。

写了一半发现,例外情况

144441

333333

666666

就是说6抽去后,上一层同时跌落两块长度为3的砖,但是当仅有某一块长为3的砖跌落时,再上边长度是4的砖是不会跌落的,也就是说,仅仅是一个砖掉落的状态,传递给下方的砖是不可行的。也就是说需要记录多个砖同时掉落的状态。

那好吧,重新设定dp[f][l][r]是第f层,左边到l,右边到r的最大跌落长度。

但是写了1个小时就写不下去了,实在太麻烦了。

最后想到使用记忆化搜索,记忆化搜索的话可以少算一些不必要的状态。(我真是太机智了,哈哈),仍然使用dp[f][l][r]记录状态,dp[f][l][r]是第f层,左边到l,右边到r的最大跌落长度。每次记忆化搜索,仍然是检查是否存在状态,如果这块砖左边有x个空位,右边有y个空位,就把[l,r]延伸至[l-x,r+y],总之是等价的。

接着就是检查上方是否有砖跌落,如果上方没有砖(也就是在第一行),就把l~r的砖的长度输出(注意可能有空位,也就是说扫描一遍计算长度),如果有砖,判断上方能跌落砖的区间,加上dp[f-1][ll][rr](ll,rr为所判断出来的区间)即可,进行递归搜索。

判断跌落区间的话我是预处理了一下,使用p[i][j]存放

D - Blast the Enemy!

给出一个多边形,n(边数小于100)个点的坐标(绝对值小于100,是整数),求重心

题目很良心地给了矢量公式:其中COM(C)表示图形C的重心坐标

【计算几何】

题目很良心地给了计算公式

公式变形一下

也就是将多边形分成几个n-2三角形,对每个三角形分别求重心(三个坐标加起来除以3)和面积(叉积)

最后再除以三角形面积总和即可。

因为叉积分为正负,之间可以抵消,所以可以不必考虑三角形的选取问题。

I - Fruit Weights

还没有看这道题,据说

像这种大于小于的关系,使用差分约束系统比较合适

2015 UESTC Winter Training #4【Regionals 2008 :: Asia - Tehran】的更多相关文章

  1. 2015 UESTC Winter Training #6【Regionals 2010 >> North America - Rocky Mountain】

    2015 UESTC Winter Training #6 Regionals 2010 >> North America - Rocky Mountain A - Parenthesis ...

  2. 2015 UESTC Winter Training #10【Northeastern Europe 2009】

    2015 UESTC Winter Training #10 Northeastern Europe 2009 最近集训都不在状态啊,嘛,上午一直在练车,比赛时也是刚吃过午饭,状态不好也难免,下次比赛 ...

  3. 2015 UESTC Winter Training #8【The 2011 Rocky Mountain Regional Contest】

    2015 UESTC Winter Training #8 The 2011 Rocky Mountain Regional Contest Regionals 2011 >> North ...

  4. 2015 UESTC Winter Training #7【2010-2011 Petrozavodsk Winter Training Camp, Saratov State U Contest】

    2015 UESTC Winter Training #7 2010-2011 Petrozavodsk Winter Training Camp, Saratov State U Contest 据 ...

  5. 【关于服务器端SQL Server 2008的设置】 使其他客户端机可通过ODBC数据源可访问

    服务器系统:Server 2003 数据库:SQL Server 2005 服务器配置:开启服务:server.workstation(这两个服务对于提供局域网共享有很大作用) 关闭防火墙 开启gue ...

  6. 2015-2016 Petrozavodsk Winter Training Camp, Nizhny Novgorod SU Contest (5/9)

    2015-2016 Petrozavodsk Winter Training Camp, Nizhny Novgorod SU Contest B. Forcefield 题意 给你一维平面上n个镜子 ...

  7. 2015 ICL, Finals, Div. 2【ABFGJK】

    [题外话:我......不补了......] 2015 ICL, Finals, Div. 2:http://codeforces.com/gym/100637 G. #TheDress[水] (st ...

  8. Petrozavodsk Winter Training Camp 2018

    Petrozavodsk Winter Training Camp 2018 Problem A. Mines 题目描述:有\(n\)个炸弹放在\(x\)轴上,第\(i\)个位置为\(p_i\),爆炸 ...

  9. 2014-2015 Petrozavodsk Winter Training Camp, Contest.58 (Makoto rng_58 Soejima contest)

    2014-2015 Petrozavodsk Winter Training Camp, Contest.58 (Makoto rng_58 Soejima contest) Problem A. M ...

随机推荐

  1. 用core dump来调试程序段错误

    有的程序可以通过编译, 但在运行时会出现Segment fault(段错误). 这通常都是指针错误引起的.但这不像编译错误一样会提示到文件->行, 而是没有任何信息, 使得我们的调试变得困难起来 ...

  2. fragment中获取activity中的控件

  3. Gson解析json繁杂数据

    碰到json数据.里面格式众多.list+string[]+等等.具体json参数如下: eg:以下为接口参数: "responseData":{ "brandCode& ...

  4. php设计模式之单例模式

    单例模式顾名思义,就是只有一个实例.作为对象的创建模式, 单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例. 单例模式的要点有三个: 一是某个类只能有一个实例: 二是它必须自行 ...

  5. Win7主题被禁用

    今天早上干了一件傻缺的事,打开电脑的时候,某卫士提醒开机速度击败全国0.2%的电脑,之后点了优化...随后就发生了接下来的一幕: win7下面的主题都不能使用了,只能使用那种复古(很丑的样式,看着很不 ...

  6. [项目构建 十三]babasport Nginx负载均衡的详细配置及使用案例详解.

    在这里再次说明下, 这个项目是从网上 找到的一套学习资料, 自己在 空闲时间学习了这些东西. 这里面的code当然会有很多不完善的地方, 但是确实也能学到很多新东西.感谢看过这一些列博文和评论的小伙伴 ...

  7. SQL 时间戳转DateTime类型

    最近在工作中通过接口获取时间字段为时间戳的值,直接入库后再页面查询时间格式时候需要通过SQL语句将时间戳格式装换为时间格式进行比较,首先我们需要知道时间戳格式是怎么产生的,: Unix时间戳(Unix ...

  8. 未能找到类型或命名空间名称“XXXX”(是否缺少 using 指令或程序集引用?) 转

    未能找到类型或命名空间名称“XXXX”(是否缺少 using 指令或程序集引用?)   项目中 App_Code 文件夹中的类的命名空间,在添加的页面的  using XXXX  时,提示 未能找到类 ...

  9. SDL_PingGe 1.2

    加入了像素填充函数,必须要在一个指定颜色的边界范围内,边界必须没有缺口. 加入了鼠标类 /* typedef void (*FUNCTION)(void); HMODULE HDll; HDll = ...

  10. Matlab:回归分析(2)

    方法一:直接用多元二项式回归 %数据输入 x1 = [ ]; x2 = [ ]; %多元二项式回归函数 y = [ ]; X = [x1' x2']; Y = y'; rstool(X, Y, 'pu ...