AcWing 105. 易胜博

标题成绩叙述

七夕节因有情人节的传奇人物而高的情人节。。

合乎逻辑的推论是TYVJ往年护送了一次线下易胜博。

瓦尼成地引诱了中国学生和他一同渡过七夕节。,合乎逻辑的推论是他们确定去TYVJ易胜博游乐。

TYVJ易胜博和11区的夏祭的构成很像。

椭圆体的的讲究仪式的场子由N排和M排的N*M公用电话亭结合。。

纵然有很多种公用电话亭,话虽这样说cl只对少许公用电话亭感兴味,诸如,烤章鱼、苹果糖、赞成糖、靶场……以及其他等等。

Vani提前修饰了易胜博的负责人zhq,贫穷我们的能修理好场子,使cl对各行各业感兴味的公用电话亭大批t,而cl感兴味的每个列的祭廊数是s。

话虽这样说ZHQ通知瓦尼,小隔间是恣意陈设的。,万一你想目录C的提出要求,结果却的健康状态方式是换两个贴连的档位。

两个祭廊贴连,万一且仅当它们定居同不育系或贴连于同一列时。

鉴于zhq带领的TYVJ发达小结合地变歪了填空处,每行或每列的第一任一某一和基本原理一任一某一态度也被认为贴连态度。。

如今瓦尼奇妙的他的两个提出要求中有多少不等能手脚能够到的漫游。

在此假定下,反正要换一些档位。

输入体式
第不育系使详细化三个积分n、m和t,T表现有多少不等档位我感兴味。

下不育系T,每行两个积分x, y,训示cl对行的y列做成某事逗留的兴味。

输入体式
率先输入字母行。

万一目录VANI的两个提出要求,同时输入;

万一经过健康状态仅仅使cl对各行各业感兴味的公用电话亭大批t,输入行;

万一每一列独一无二的cl感兴味的太多公用电话亭,输入列;

万一他们不平,不可能的事输入。

万一输入字母行过错不可能的事的, 接下来,输入交替发生的最小数量,从字母行中分手空格。

创纪录的漫游
$1≤N,M≤100000,
0≤T≤min(N∗M,100000),
1≤x≤N,
1≤y≤M$

样例

输入样例:
2 3 4
1 3
2 1
2 2
2 3
输入样例:
row 1

分步解决+贪得无厌的+前缀和+中位数+排序

如此话题有一任一某一非常重要的品种。,它只代替物两个贴连数字的态度,因而我们的交替发生了两个号码。,它只更改不育系最赞美的档位或不育系最赞美的档位,而过错在同时更改最赞美的祭廊的行和列,既然这样的话,我们的可以把如此标题成绩分为两有些。,在位的一有些是最少的次数,有些内容是查找最小列数。
在这种情况下的话,如此成绩相当了卡的散布平衡成绩。,秤锤分牌是一任一某一类型的贪恋成绩,百度可以本身包含好逸恶劳的开端 话虽这样说圆平衡与普通平衡有分别,因而我们的需求将散布阻碍为一任一某一序列,因而我们的可以用中值的把一任一某一环替换成一任一某一区间,详细思绪可见《算法竞争初学者的好运气向导》。
谢谢你@sandychn 巨人在短信号中指明了一任一某一小成绩

以后校正短信号

#include 
using namespace std;
#define ll long long
#define firkin 弗京(I,a,b) 用于(ll i=a;i<=b;i++)
const int N=1e5+10;
ll n,m,t,A[N],b[N],f[N],x,y,rr,cc;
ll calc(ll a[],ll n)
{
    firkin 弗京(I,1,n)
    {
        a[i]-=(a[0]/n);
        f[i]=f[i-1]+a[i];
    }
    sort(f+1,f+1+n);
    ll mid=(n+1)>>1,ans=0;//过错n 1,由于n若为临时的会出成绩.不外这道标题成绩也不克不及胜任的涌现成绩.由于中位数只提出要辛勤挣得的最衣服的胸襟,话虽这样说万一我们的提出要求N 1,因而你不克不及运用n 1。 谢谢你@sandychn 巨人指明了成绩座位
    firkin 弗京(I,1,n)
        ans =abs(f[中]-f[一]
    return ans;
}
int main()
{
    ios::与\u stdio使时间互相一致(假)
    cin>>n>>m>>t;
    助动词=have(int i=1;i<=t;i++)
    {
        cin>>x>>y;
        A[X]
        b[y]++;
    }
    firkin 弗京(I,1,n)
        A[0] =A[I]
    firkin 弗京(I,1,m)
        b[0]+=b[i];
    ll as=a[0]%n,bs=b[0]%m;
    if (!as && !英国基准)
        cout<<"both "<

李男教员的理想化C 信号

#include
#include
#include
#include
#include
using namespace std;
const int u=100010; 
long long b[u],c[u],f[u];
long long n,m,t,i,j,x,y;

long long 计算(长 long A[单位],int n)
{
    long long ans=0; int i;
    助动词=have(i=1;i<=n;i++)
    {
        a[i]-=a[0]/n;
        f[i]=f[i-1]+a[i];
    }
    sort(f+1,f+n+1);
    助动词=have(i=1;i<=n;i++) ans+=abs(f[i]-f[n+1>>1]);
    return ans;
}

int main()
{
    freopen("","r",stdin);
    freopen("","w",基准输入) 
    cin>>n>>m>>t;
    助动词=have(i=1;i<=t;i++)
    {
        scanf("%d%d",&x,&y);
        b[x]++,c[y]++; 
    }
    助动词=have(i=1;i<=n;i++) b[0]+=b[i];
    助动词=have(i=1;i<=m;i++) c[0]+=c[i];
    if(b[0]%n==0&&c[0]%m==0)
        printf("both %lld\n",calc(b,n)+calc(c,m));
    else if(b[0]%n==0)
        printf("row %lld\n",calc(b,n));
    else if(c[0]%m==0)
        printf("column %lld\n",calc(c,m));
    else puts("impossible");
    return 0;
}

我的复杂信号

#include 
using namespace std;
const int N=100100;
#define ll long long
ll n,m,t,i,j,k,s[N],A[N],x,y,ans1,ans2,r[N],c[N],rr,cc;
void init()
{
    ios::与\u stdio使时间互相一致(假)
    cin>>n>>m>>t;
    for (i=1;i<=t;i++)
    {
        int x,y;
        cin>>x>>y;
        r[x]++;
        c[y]++;
        rr++;
        cc++;
    } 
}
bool work1()//横排
{
    if (t%n!=0)
        return 0;
    memset(s,0,sizeof(s));
    rr/=n;
    for (i=1;i<=n;i++)
    {
        r[i]-=rr;
        s[i]=s[i-1]+r[i];
    }
    sort(s+1,s+1+n);
    int k=(1+n)>>1;
    for (i=1;i<=n;i++)
        ans1+=abs(s[i]-s[k]);
    return 1;
}
bool work2()//竖排
{
    if (t%m!=0)
        return 0;
    memset(s,0,sizeof(s));
    cc/=m;
    for (i=1;i<=m;i++)
    {
        c[i]-=cc;
        s[i]=s[i-1]+c[i];
    }
    sort(s+1,s+1+m);
    int k=(1+m)>>1;
    for (i=1;i<=m;i++)
        ans2+=abs(s[i]-s[k]);
    return 1;
}
int main()
{
    init();
    bool ok1=work1(),ok2=work2();
    if (ok1 && ok2)
        cout<<"both";
    else
    if (ok1)
        cout<<"row";
    else if (ok2)
        cout<<"column";
    else 
        cout<<"impossible";
    if (ok1 || ok2)
        cout<<" "<

发表评论

电子邮件地址不会被公开。 必填项已用*标注