解题思路:数据小,分两次bfs,暴力求解代码:#include<iostream>
#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<queue>
#include<math.h>
const int mx=3e2+10,co[4][2]={1,
这里是题目链接:题目链接因为高度只要求取两点中最小的那个所以我们先按高度从小到大排序,那么每次枚举的hi肯定就是最小的啦,然后用树状数组维护区间和和区间数就可以了。题解:#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#define lson l,m,
题目链接 :点击打开链接题目要求开根那么再大的一个数不超过十次开根就会变成1,那么此时就不需要再更新了,所以用线段树只需特判这个点就可以了。题解:#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#define lson l,m,rt<<1
题目链接:点击打开链接被这个0坑了好久,题目有矛盾,注意这个0就OK了。题解:#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long ll;
int n,m;
int num[25]
题目链接:http://codeforces.com/contest/1130/problem/C解题思路:一个数组维护(r1,c1)能
题目链接:http://codeforces.com/contest/1130/problem/E解题思路:设一个
题目链接:http://codeforces.com/contest/1138A. Sushi for Two解题思路:利用"缩点"变成1,2,1,
说坑点没不是很明显,玩过麻将的都知道吧。。。(可我被自己坑了好久) 只要每次枚举一个对子出来,然后剩下12张看3张3张取能不能取完这个可以dfs就OK了,还有注意就是万筒条的八和九。题解:#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<
题目链接:http://codeforces.com/contest/1130/problem/D2解题思路:假
RMQ求出矩阵区间最大,数组sum和pro分别存坐标i,j到右下角的矩阵所有元素和,和平方和,然后根据容斥求出某一矩阵的元素和,平方和。然后根据方差展开求最大坐标,就OK啦。。。。。代码:#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<
链接:点击打开链接题意:裸DP,枚举i这个位置左边最近一个水果店就行了。(然而被爆int卡了好久,MDZZ)代码:#include<cstdio>
#include<algorithm>
#include<cstring>
#include<iostream>
#define lson l,m,rt<<1
#define rson m+1
C:二分匹配使得至多的行列要求相同最多在同一个位置 #include<iostream>
#include<cstring>
#include<iostream>
#include<cstdio>
#include<vector>
#include<cmath>
#include<queue>
#inc
namespace fastIO{ #define BUF_SIZE 100000 #define OUT_SIZE 100000 #define ll long l
题目链接:点击这里解题思路:根据欧拉定理可得无向图需要几笔画完为各个连通块的∑max(1,连通块奇度点
题目链接:点击这里 解题思路:本题如果倒着做,那么问题就变得十分简单,当插入一个点时,去找它的右边最近
题目链接:点击这里 解题思路:从左到右枚举,并把每个数插入set当中,每次询问到i位置时,查看s
解题思路:二维线段树入门题点击入门 //poj 1195#include<cstdio>#include<iostream>#define lson l,mid,rt<<1#define rson mid+1,r,rt<<1|1using namespace std;typedef long long ll;cons...
链接:点击打开链接题解:将模式之间换成点和点的关系,就是求每两个点连成的线段都至少要有一个端点==最大匹配代码:#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<iostream>
using namespace std;
题目链接:点击这里 解题思路:对于i种物品有2^(c[i])-1个,将个数二进制压缩,原理就跟二进制数可以组
链接:点击打开链接直接贪心按r从小到大排,然后再用树状数组维护区间现有路灯数,接着直接暴力就可以了。代码:#include<bits/stdc++.h>
const int mx=1e3+10;
typedef long long ll;
using namespace std;
int x,n,m,k,sum[mx];
bool vis[mx];
struct sec{
int
题目链接:点击这里 解题思路:把身高看做一维,活泼度看做一维,做基本的二维线段树区间求最大,小数点先乘10把它化为整数才能做线段树。 #include<cstdio>#include<iostream>#include<cstring>#define lson l,mid,rt<<1#define rson mid+1,...
解题思路:这里简单粗暴的用了懒人标记的二维线段树,实际上可以利用01异或的性质可以不用去更新儿
链接:点击打开链接题解:先处理字符串t的第i个前缀是否和后缀相同,然后再处理s的i-i+m-1是否是t串,然后dp。代码:#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<set>
#include<iostrea
题目链接:点击这里 解题思路:此问题相当于在01矩阵中找全1的子矩阵个数.从下到上,从左到右枚
题目链接:点击打开链接题解:可以重复增加子串的AC自动机经典入门#include<iostream>
#include<algorithm>
#include<stdio.h>
#include<string.h>
#include<queue>
using namespace std;
typedef long long ll;
con
题目链接:点击这里 解题思路:根据k我们会得到一个循环周期,将在同一个循环节的点都归为同一类,因
题目链接:点击这里 解题思路:用y从小到到排序,y相等的按x从大到小排序,那么我用x做树状数组维