首页 > 其他分享 >P1653 [USACO04DEC] Cow Ski Area G

P1653 [USACO04DEC] Cow Ski Area G

时间:2024-02-26 22:55:30浏览次数:36  
标签:x1 P1653 ll USACO04DEC read 有向图 && 505 Ski

原题链接

题解

非常抽象的缩点
大概思路:搜索缩点成有向图,求该点的入度和出度,最后答案一定是 \(max(in,out)\)
总之很抽象

code

#define ll long long
#include<bits/stdc++.h>
using namespace std;

inline void read(ll &x) {
    x = 0;
    ll flag = 1;
    char c = getchar();
    while(c < '0' || c > '9'){
        if(c == '-') flag = -1;
        c = getchar();
    }
    while(c >= '0' && c <= '9') {
        x = (x << 3) + (x << 1) + (c ^ 48);
        c = getchar();
    }
    x *= flag;
}

inline void write(ll x)
{
    if(x < 0){
        putchar('-');
        x = -x;
    }
    if(x > 9)
        write(x / 10);
    putchar(x % 10 + '0');
}

ll n, m;
ll a[505][505] = {0};
ll xx[4] = {1, 0, -1, 0}, yy[4] = {0, 1, 0, -1};
ll vis[505][505] = {0};
ll in[250005] = {0};//任何有向图一定可以表示为一颗倒着的树,如图
ll out[250005] = {0};
ll cnt = 0;

void ss(ll val, ll x, ll y)
{
    vis[x][y] = 1;
    for(ll i = 0; i < 4; i++)
    {
        ll x1 = x + xx[i], y1 = y + yy[i];
        if(x1 > 0 && x1 <= n && y1 > 0 && y1 <= m)
        {
            if(a[x1][y1] == val)
            {
                if(!vis[x1][y1]) ss(val, x1, y1);
            }
            else if(a[x1][y1] < val) out[cnt]++;
            else if(a[x1][y1] > val) in[cnt]++;
        }
    }
}

int main()
{
    read(m); read(n);

    for(ll i = 1; i <= n; i++)
        for(ll j = 1; j <= m; j++)
            read(a[i][j]);

    for(ll i = 1; i <= n; i++)
        for(ll j = 1; j <= m; j++)
            if(!vis[i][j])
            {
                cnt++;
                ss(a[i][j], i, j);
            }

    ll ins = 0, outs = 0;
    for(ll i = 1; i <= cnt; i++)
    {
        ins += (!in[i]);
        outs += (!out[i]);
    }

    if(cnt == 1) puts("0");//细节
    else write(max(ins, outs)), putchar('\n');
    return 0;
}

标签:x1,P1653,ll,USACO04DEC,read,有向图,&&,505,Ski
From: https://www.cnblogs.com/pure4knowledge/p/18035789

相关文章

  • mysql access denied for root ... mysqld –skip-grant-tables 命令失效 ... Failed
    <!--密码突然登录不上MySQL了,久了也不晓得是不是密码不正确...只能改密码...一年难得碰一次,感觉每次总有莫名其妙的问题--><!--修改方案只找到一个,就是无密码验证开启mysql服务,然后登录,设置新密码--><!--mysql版本不同有些命令无效,大概分高低两版本--><!--低版命令我......
  • 平面图最小链覆盖 POI2002 Skiers
    这道题感觉挺厉害的,记录一下。题目大意给一个图,它是个DAG(有向无环图),它是个平面图,它有一个起点和一个终点。求最小的从起点到终点的路径数量,使得存在一组这么多路径可以覆盖这个图的每一条边。做法1:首先,最小链覆盖让我们想到:最小点覆盖。于是我们多设置\(m\)个点表示\(m\)......
  • [ Skill ] equal, eq, eqv, member, memq, memv
    https://www.cnblogs.com/yeungchie/equal等效运算法==equal(11);=>tequal(11.0);=>teq直接比较内存地址,因此效率比equal高不建议用于比较字符串、数字、链表eq(11);=>teq(11.0);=>nileq("ab""ab");=>teq("a&quo......
  • pip 安装包时提示 "WARNING: Skipping xxx due to invalid metadata entry 'name'"
    我最近在使用pip安装包的时候经常遇到如下警告:WARNING:Skipping/opt/homebrew/lib/python3.11/site-packages/numpy-1.26.3.dist-infoduetoinvalidmetadataentry'name'WARNING:Skipping/opt/homebrew/lib/python3.11/site-packages/protobuf-4.25.2-py3.11.egg-info......
  • Sparse Table Advanced Skills
    Storeatupleof(valueofmaximum,indexofmaximum,valueofthesecondmaximum).Tomergetwosegments,wecompareiftheindicesofthemaximumsarethesame.Theycanpossiblybethesamebecauseweoftenqueryintersectingsegmentsinthesparsetab......
  • 在ubuntu上用命令烧写SD卡&&在Windows上用Win32DiskImager工具一键烧写SD卡
    准备一张16GB以上的SD卡。linux系统上的操作:将SD卡插入PC主机。输入命令lsblk查看SD卡名称: 输入 sudoumount/dev/sdb*  输入命令进行烧写:pv-tprebde10-nano-sdcard.img|sudoddof=/dev/sdbbs=1M 从ubuntu上卸载SD卡,拔掉SD卡插到DE10-Nano开发板。Windows......
  • Teamcenter AWC开发:调用SOA时,报错No SOA service for Bom-2008-06-StructureManagemen
    1、报错:2、分析:我一直在纠结,究竟是SOA接口报错。还是没有这个SOA接口服务。因为在AWC生成的SOA文档,是有这个接口和服务的。后来明白了。如果是SOA接口报错。在网络中看到这个接口是有响应的。也就是有返回的。 但是NoSOAservice报错,网络中,看到接口时没有返回的。 3......
  • 使用skimage的morphologhy提取骨架注意事项
    使用skeleton=morphology.skeletonize(img)提取图像img的骨架时,img的数值范围应调整至0~1。可以使用opencv的threshold完成从255到1的转变,既_,img=cv2.threshold(img,127,1,cv2.THRESH_BINARY)同时要注意函数返回的skeleton虽然是numpy的ndarray格式,但并非数值型而是bool型,......
  • getskiplimit 跳过指定条数的数据 ,常用于分页
    //云端代码'usestrict';constdb=uniCloud.database()exports.main=async(event,context)=>{constcollection=db.collection(event.name)constres=awaitcollection.where(event.data).limit(event.limit).get()returnres};//......
  • SkiaSharp
    [HttpGet][NonUnify]publicIActionResultAvatarTest(){//info为你的画布大小例如with=750hight=1024varinfo=newSKImageInfo(750,1024);//createthesurfaceusingtheinformationvarsurface=SKSurface.Create(info);//载入底图......