欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

BZOJ2241 [SDOI2011]打地鼠 题解&代码

程序员文章站 2022-12-10 15:29:29
题意:给你一个m*n的方格(初始每个位置都大于0),你可以选择一个固定大小不可旋转的方块(例如大小为x*y),使每次这个方块在方格上某个所有位置都非0的区域覆盖一次时区域内每个位置...

题意:给你一个m*n的方格(初始每个位置都大于0),你可以选择一个固定大小不可旋转的方块(例如大小为x*y),使每次这个方块在方格上某个所有位置都非0的区域覆盖一次时区域内每个位置的值减一,问覆盖多少次后这个方格内部的值全部为0(因为有1*1的方块,所以一定有解)
题解:看起来乱七八糟的,但其实就是个暴力搜索,内部测试的时候因为一些问题看错了m和n,不然就1A了…

/**************************************************************
    Problem: 2241
    User: Rainbow6174
    Language: C++
    Result: Accepted
    Time:116 ms
    Memory:1680 kb
****************************************************************/

#include
#include
#include
using namespace std;
pair  q[10005];
int n,m,x,sum,ans,flag=1,tans,map[205][205];
int tot,tmap[205][205];
bool work(int tx,int ty)
{
    int val = 0,temp,flag;
    for(int i = 1; i  a,pair b)
{
    return (a.first)*(a.second)>(b.first)*(b.second);
}
void slove(void)
{
    for(int i = 1; i