分析:搜索题,注意剪枝。
#include
using namespace std;
int dfs(int si,int sj,int ei,int ej,int mt);
char map[8][8];
int m,n,fa;
int main()
{
int t,i,j,wall,sti,stj,eni,enj;
while(cin>>n>>m>>t &&(n||m||t))
{...
分类:
其他好文 时间:
2015-05-05 21:53:39
阅读次数:
224
分析:最长公共递增子序列,把数据反向存储一遍,求正反两组数据的LCIS。另外注意边界的条件判断。还有如果取出的新队列有奇数个人或偶数个人要单独判断。
#include
using namespace std;
#define max(a,b) ((a)>(b)?(a):(b))
int dp[202];
int a[202];
int b[202];
int LCIS(int n)
{
i...
分类:
其他好文 时间:
2015-05-05 14:28:29
阅读次数:
150
题目地址:BZOJ 1036
树链剖分裸题,需要用线段树同时维护最大值与和值两个信息,只是代码量大一点而已。。
代码如下:#include
#include
#include
#include
#include
#include
#include
#includ...
分类:
其他好文 时间:
2015-05-05 01:23:33
阅读次数:
213
树链剖分裸题。。。不多说。。
代码如下:#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace...
分类:
其他好文 时间:
2015-05-05 00:07:50
阅读次数:
186
题目地址:POJ 3237
这题用了一下午。。本来一直认为max和min两个数组是不用改的,只需要改lazy数组,然后在查询的时候利用lazy标记来返回max或-min,后来发现错的很严重。。
这题要在pushdown中修改max和min数组,从而实现最大值取反。
代码如下:#include
#include ...
分类:
其他好文 时间:
2015-05-04 22:13:18
阅读次数:
119
分析:
1、贪心,对数组进行扫描,如果a[i]>a[i+1]则把a[i]删除,直到删除m个为止;如果扫描一遍后删除的数不够m个,则在把数组末尾的数删除,直到总的删够m个,数组中剩下的数从头到尾即为结果。
2、RMQ算法解决,假设数组的长度为len,要删除的数的个数为m,那么最终数组中将剩下len-m个,因此可以找出数组中第一个到第m+1个的最小数作为最终结果的第一位,并假设最小数下标为i,再找...
分类:
编程语言 时间:
2015-05-04 13:51:02
阅读次数:
182
分析:线段树的应用,区间修改,使用延迟标记进行延迟修改。
#include
using namespace std;
#define N 100010
class SegmentTree
{
private:
struct Node
{
int left,right; //左右子节点
int sum; //区间和
int lazy; ...
分类:
其他好文 时间:
2015-05-03 16:06:09
阅读次数:
126
题意:一开始有N只猴子,,每只都有一个力量值.,并且互不认识,后来 它们之间发生了M次斗争。 每次两次两只猴子a,b斗争是, a和 b都会从他们自己的朋友圈里拉出一个最强的朋友, 之后最强的这两只猴子打, 打完后两只猴子的力量值分别减半.。并且 两只猴子的朋友圈的所有人都互相认识(也就是以后不会再打了)。问题是对于每次斗争, 若a,b是朋友, 那么输出-1, 否则输出斗争后它们的朋友圈里最强猴子的...
分类:
其他好文 时间:
2015-05-02 18:16:04
阅读次数:
144
分析:分为三部分处理,第一部分找到除0外最靠右的最小数字A作为第一位;第二部分是这个最小数字A前面的数字均按规则排列,也就是每取出一张大的放在第二部分的后面,小的放在第二部分的前面;第三部分就是这个最小数A后面的数字按原顺序放在最后即可;最终即可组出新的串。
例子:9876105432。
第一部分:1
第二部分:9876,处理后为6789
第三部分:05432
最后按照第一部分,第二部分...
分类:
其他好文 时间:
2015-05-02 15:16:10
阅读次数:
176
分析:借助STL的min_element实现。每次更新最先被占用的桌子,具体见注释。
#include
#include
using namespace std;
int main()
{
int A,B,C;
char s[10];
int a[102],b[102],c[102];
int curtime,count,ans;
int *p; //桌子最...
分类:
其他好文 时间:
2015-05-02 01:10:24
阅读次数:
161