#include
using namespace std;
int base[4][4]={ //初始状态
{1,1,0,1},
{1,1,1,0},
{0,1,1,1},
{1,0,1,1}};
int a[2][4][4]; //滚动数组
void f(int n)
{
int i,j;
if(n==0)
{
for(i=0;i...
分类:
其他好文 时间:
2015-06-02 09:25:12
阅读次数:
205
分析:IDA*解决,借鉴大牛的启发式函数h(): 可以考虑把每一行上的数转化成相同的,或者把每一列上的数字转化成相同的,二者取最小值。
例如:
1 1 3 2
2 4 4 2
3 3 1 4
1 2 3 4
把这个矩阵转化成行合法矩阵需要的操作:第一行至少要2次,第二行也是2次, 第三行是2次,第四行是3次, 所以把矩阵转化成行相同至少要3次。
#include
usi...
分类:
编程语言 时间:
2015-06-01 22:39:16
阅读次数:
164
分析:先把每个挑战者的战斗力升序排序,接着找出离m最近的小于m的挑战者的战斗力,然后从该处开始,对后面的每个挑战者进行处理,尽量使百小度提升战斗力后等于后一个挑战者的战斗力。如果激发战斗力后还无法打赢则不行,否则使其相等。
#include
#include
using namespace std;
int main()
{
int T,t,n,m,k,i;
__int64 a...
分类:
其他好文 时间:
2015-06-01 16:46:28
阅读次数:
116
分析:使用STL的set容器实现,set的内部排序默认是从小到达的。先把结果预处理到一个数组中存储起来,之后直接输出即可。
#include
#include
using namespace std;
#define N 10005
int a[N];
int ans[N];
set s; //默认从小到达排序
set::iterator it;
int main() ...
分类:
其他好文 时间:
2015-06-01 16:43:58
阅读次数:
158
分析:二分代价,由于序列是单增的,我们使前面一个数相对取最小,这样后面的数变化的值也能相对较小(贪心)。
#include
using namespace std;
#define N 100010
#define max(a,b) ((a)>(b)?(a):(b))
int num[N],tmp[N],n;
bool valid(int cost)
{
int i;
for(i=1;...
分类:
其他好文 时间:
2015-05-31 23:17:24
阅读次数:
140
分析:一个图,求图中‘#’组成了多少个十字架,注意十字架的宽度是奇数。对每个‘#’判断,上下左右 ,步长为1 ,2,。。。25是不是都符合条件,符合的话判断个数为奇数即可。
#include
using namespace std;
#define N 50
char map[N][N];
int dir[4][2]={
{-1,0},
{0,-1},
{1,0},
{0,1}};
i...
分类:
其他好文 时间:
2015-05-31 18:31:41
阅读次数:
110
分析:离线线段树,把所有询问离线读入,然后按H从小到大排序。对于所有结点也按从小到大排序,然后根据查询的H,将比H小的点加入到线段树,最后就是一个区间求和。这题貌似也可以用划分树,树状数组等方法做。
#include
#include
using namespace std;
#define N 100005
struct Tree
{
int left,right,cnt;
} TREE...
分类:
其他好文 时间:
2015-05-31 16:54:33
阅读次数:
103
题意:求A,使得A^N最接近B。
分析:A=B^(1/n),对其上下取整,在各取N次幂,取最接近B的。
#include
#include
using namespace std;
int main()
{
int B,N,p,q;
double tmp;
while(cin>>B>>N && (B||N))
{
tmp=pow(1.0*B,1.0/N); ...
分类:
其他好文 时间:
2015-05-31 15:23:54
阅读次数:
107
题意:n个工作地,m种工人,工作地0是仓库,其他的都需要修缮,每个地点需要多个工种的工人若干,不同工种不能相互取代。每个工作地有一个开工时间,凑齐所有工人后准时开工,修缮也需要一定时间。一个工人可以在一个地方工作完后再到其他地方,两地直接的距离是欧几里得距离,可以算作时间。最少需要多少工人。
分析:只用费用流。每种工人不能相互替换,没有任何关系。因此对每个工种进行建图求解最小费用累加即可得到最终...
分类:
其他好文 时间:
2015-05-31 14:03:52
阅读次数:
105
分析:N和M很小,直接暴力搜索即可。
#include
using namespace std;
#define N 6
#define M 6
int vis[N][M]; //有炮设为2,无炮为0,其他为1
int n,m,q,ans;
#define max(a,b) ((a)>(b)?(a):(b))
bool Valid(int i,int j) //只...
分类:
其他好文 时间:
2015-05-31 12:32:02
阅读次数:
98