1.题目描述:点击打开链接
2.解题思路:本题分情况讨论。比赛时候真是想的太简单了,以为就是(n!)^(cnt-1)。最终无限WA。本题有几个特殊情况需要额外判断。首先,如果输入的时候,有某一行不是-1且有两个数映射到同一个数,那么必然无解,ans=0。其次,如果不存在-1,需要从第m个函数一步步映射到第1个函数,检查一下最后是否真的变成了自身映射。最容易想到的情况就是有至少一个-1,那么最后答...
分类:
其他好文 时间:
2015-08-18 21:26:14
阅读次数:
139
1.题目描述:点击打开链接
2.解题思路:本题利用莫队算法解决。由于是第一次学习这个算法,因此研究了比较长的一段时间才弄懂。首先,莫队算法解决的问题是无修改的离线区间查询问题。该算法实际上是由曼哈顿距离最小生成树演变来的,由于要处理m个区间,可以将这m个区间看做二维平面上的点,那么处理这m个区间就等价于让这m点连通,且总的转移代价最小。这其实就是一个曼哈顿距离最小生成树问题。
经典的曼...
分类:
其他好文 时间:
2015-08-15 15:01:01
阅读次数:
121
1.题目描述:点击打开链接
2.解题思路:本题利用逆向思维+贪心法解决。因为题目中已经告诉我们一定存在解,因此可以考虑贪心法的使用。这道题的妙处在于答案和初始矩阵是无关的,只和目标矩阵有关。因为不管初始矩阵长什么样,只要操作一样,加上解的存在性,得到的目标矩阵一定是相同的。接下来就是如何寻找操作序列。
假设最后一步操作执行后,我们得到了目标矩阵,由于所有操作都是对一整行或者一整列进行的...
分类:
其他好文 时间:
2015-08-15 12:06:43
阅读次数:
101
1.题目描述:点击打开链接
2.解题思路:本题利用字典树解决。本题要求查找所有的B[j]在A[i]中出现的总次数。那么我们可以建立一颗字典树,将所有的B[j]插入字典树,由于一个串的所有字串相当于它所有后缀的前缀。因此在查找时候,只需要查找A[i]的每一个后缀即可,然后累加这个后缀的前缀个数,即可得到该后缀中子串的个数,所有后缀的值相加,就是最终的答案。
3.代码:
#pragma comm...
分类:
其他好文 时间:
2015-08-14 22:47:44
阅读次数:
349
思路:
先写好了几个函数。旋转,四种操作,判断是否可以进行合并消除
题中有好几处要考虑的细节问题,如
自然下落到底部时不进行合并的判断,而是当自然下落非法时才判断
如果消除一行,这一行上面的所以方块只会下落一行,不存在直接下落到底部的情况
比赛时题意没有理解好,错了这两个地方。。
还有一些写法上的错误,这种左右移动的题目坐标还是要从1开始,方便许多
左右移动,如果非法要复原的...
分类:
其他好文 时间:
2015-08-12 13:23:58
阅读次数:
124
1.题目描述:点击打开链接
2.解题思路:本题要求模拟俄罗斯方块游戏,然而比赛时候写了好久还是没过。后来补题发现原来是第四步的逻辑实现写错了。。。题目中要求如果一整行可以消除,那么仍然执行该步,否则才回到第一步。但是我的代码却是不论是否可以消除,都回到第一步。。。补题时候还发现一个地方我的理解出错了。。(可能是我脑洞真的有点大),题目中说如果一整行可以消除,那么它上面的方格要下落。我的理解是下落...
分类:
其他好文 时间:
2015-08-11 23:30:21
阅读次数:
171
1.题目描述:点击打开链接
2.解题思路:本题利用优先队列解决,然而在这次多校的比赛时候并没有往这个角度考虑,最终要么WA要么TLE==。其实本题的贪心策略很好想:如果把题目中的人数看做数轴上的点的话,那么应该按照从0依次递增的顺序来选择区间,把符合条件的区间预先存起来,然后按照他们的终点由小到大排序,第一个就是我们要的区间,如果遇到第一个区间的终点也小于当前值,那么也将他放入ans数组,只不过...
分类:
其他好文 时间:
2015-08-06 22:28:13
阅读次数:
124
hdu 4950 Monster
题意好简单,队友说要用线段树做,要不然会TLE,连树状数组也会T。我说让我试试树状数组,结果搞了一个
小时左右用树状数组给搞出来了,嘿嘿。用了树状数组区间更新。
#include
#include
#include
#include
#define maxn 100010
using namespace std;
...
分类:
其他好文 时间:
2014-08-22 21:12:10
阅读次数:
277