1. 程式人生 > >BZOJ 3032 CH0502 七夕祭 中位數 + 字首和

BZOJ 3032 CH0502 七夕祭 中位數 + 字首和

個人覺得寫得非常好,所以直接借鑑(toulan)

參考

#include <cstdio>
#include <iostream>
#include <cstring>
#include <algorithm>
#include <map>
#include <set>
#include <queue>
#include <cmath>
using namespace std;
const int N=1e5+5;
typedef long long ll;
int x[N],y[N],s1[N],s2[N];

int main()
{
    int n,m,num;
    scanf("%d%d%d",&n,&m,&num);
    for(int i=1;i<=num;i++){
        int a,b;
        scanf("%d%d",&a,&b);
        x[a]++;
        y[b]++;
    }
    if(num%m!=0&&num%n!=0){
        printf("impossible\n");
        return 0;
    }
    for(int i=1;i<=n;i++)   //化簡 從0出發
        x[i]-=num/n;
    for(int i=1;i<=m;i++)
        y[i]-=num/m;
    ll ans=0;
    if(num%n==0){
        for(int i=1;i<=n;i++)
          s1[i]=s1[i-1]+x[i];     //字首和
        sort(s1+1,s1+1+n);
        ll k=s1[(n+1)/2];
        for(int i=1;i<=n;i++)
            ans+=abs(k-s1[i]);
    }
    if(num%m==0){
        for(int i=1;i<=m;i++)
          s2[i]=s2[i-1]+y[i];    //字首和
        sort(s2+1,s2+m+1);
        ll k=s2[(n+1)/2];
        for(int i=1;i<=n;i++)
            ans+=abs(k-s2[i]);
    }
     if(num%n==0&&num%m==0)
        printf("both ");
    else if(num%n==0&&num%m!=0)
      printf("row ");
    else
       printf("column ");
    printf("%lld\n",ans);
    return 0;
}

相關推薦

BZOJ 3032 CH0502 位數 + 字首

個人覺得寫得非常好,所以直接借鑑(toulan) 參考 #include <cstdio> #include <iostream> #include <cstring&

BZOJ 3032

HP target return www. sca ems fine spa imp 【題目鏈接】 https://www.lydsy.com/JudgeOnline/problem.php?id=3032 【算法】 交換左右兩

【BZOJ3032】【絕對值不等式】【位數】【數形結合】

這題是BZOJ1045的二維版本。因為行列獨立,所以分別跑一次就行啦。 /* Pigonometry */ #include <cstdio> #include <algorit

[bzoj3032][數論][位數]

Description   七夕節因牛郎織女的傳說而被扣上了「情人節」的帽子。於是TYVJ今年舉辦了一次線下七夕祭。Vani同學今年成功邀請到了cl同學陪他來共度七夕,於是他們決定去TYVJ七夕

給你一個不一樣的情人節

孕媽 七夕 情人節迢迢牽牛星,皎皎河漢女,纖纖擢素手,劄劄弄機杼....”傳古至今,數不盡的詩詞歌賦描寫了唯美浪漫的七夕節,一年一度的七夕就要到了,是時候給單身汪撒上一波狗糧啦~   都說孩子上輩子是父母的情人,準爸爸、孕媽媽們更是因為有了寶寶而心情激動,和“小情人”有說不盡的情話、道不盡的溫柔,迫不

BZOJ-1045-[HAOI2008] 糖果傳遞(位數原理)

event esc 原理 its 表示 style sed src 推出 Description 有n個小朋友坐成一圈,每人有ai個糖果。每人只能給左右兩人傳遞糖果。每人每次傳遞一個糖果代價為1。 Input 第一行一個正整數nn<=1‘000‘00

基本算法-

code 線下 min n+1 至少 std class 描述 clas 題目描述 七夕節因牛郎織女的傳說而被扣上了「情人節」的帽子。於是TYVJ今年舉辦了一次線下七夕祭。Vani同學今年成功邀請到了cl同學陪他來共度七夕,於是他們決定去TYVJ七夕祭遊玩。 TYVJ七

<BZOJ3032>

urn scanf amp cstring 七夕 font imp 分享 stream 水 #include<cstdio> #include<cstring> #include<iostream> #include<

【演算法競賽進階指南】BZOJ3032

兩次環形分牌 #include<cstdio> #include<algorithm> #include<iostream> using namespace std; const int maxn=100010; int x[maxn],y[maxn]; long lon

【算法競賽進階指南】BZOJ3032

row turn ace const urn amp == pre col 兩次環形分牌 #include<cstdio> #include<algorithm> #include<iostream> using namespace st

(貨倉選址+均分紙牌)

問題 : 七夕祭 時間限制: 1 Sec  記憶體限制: 128 MB 題目描述 七夕節因牛郎織女的傳說而被扣上了「情人節」的帽子。於是TYVJ今年舉辦了一次線下七夕祭。Vani同學今年成功邀請到了cl同學陪他來共度七夕,於是他們決定去TYVJ七夕祭遊玩。 TYVJ

【NOIP2013模擬】

題目描述 七夕節因牛郎織女的傳說而被扣上了「情人節」的帽子。於是TYVJ今年舉辦了一次線下七夕祭。Vani同學今年成功邀請到了cl同學陪他來共度七夕,於是他們決定去TYVJ七夕祭遊玩。 TYVJ七夕祭和11區的夏祭的形式很像。矩形的祭典會場由N排M列共計N×M個攤點組成。雖然攤點種

BZOJ3032

題解 容易看出來,impossible怎麼判。。 容易看出來,行和列是互不影響的 容易看出來,這是一個糖果傳遞 於是我就想了1h+都沒有想到糖果傳遞怎麼做。。 怎麼想都只會n2n2的,顯然不可

【Nescafe18】

背景 七夕節因牛郎織女的傳說而被扣上了「情 人節」的帽子。於是 TYVJ 今年舉辦了一次線 下七夕祭。Vani 同學今年成功邀請到了 cl 同 學陪他來共度七夕,於是他們決定去 TYVJ 七夕祭遊玩。 題目描述 TYVJ 七夕祭和 11 區的夏祭的形

(bzoj3032許可權題,同codevs2485)

ProblemN行M列,共N*M個攤位,其中有T個是有價值的(即喜愛的)。每次可以交換相鄰兩個攤位(每一行或每一列最後一個位置也算相鄰)。現在想要各行中有價值的攤位數相同,各列中有價值的攤位數也要相同。求最少的交換次數。Solution首先,同一列中的交換隻會影響行,同一行中

JZOJ 3382. 【NOIP2013模擬】

目錄: 題目: 分析: 程式碼: 題目: 分析: 首先,同一列中的交換隻會影響行,同一行中的交換隻會影響列。所以我們可以分開考慮行與列這兩個問題。我做題時有一個疑

(貪心+分金幣問題)

問題 M: 七夕祭 時間限制: 1 Sec  記憶體限制: 128 MB 提交: 75  解決: 20 [提交] [狀態] [討論版] [命題人:admin] 題目描述 七夕節因牛郎織女的傳說而被扣上了「情人節」的帽子。於是TYVJ今年舉辦了一次線下七夕祭。Vani同學

bzoj 5092 [Lydsy1711月賽]分割序列——高維字首

題目:https://www.lydsy.com/JudgeOnline/problem.php?id=5092 套路地弄一個字首異或和,就變成 f[ i ]=max_{j=0}^{i} { s[ j ] + (s[ i ]^s[ j ]) }。再套路地考慮按位貪心。 然後看了題解。按位貪心不是確定 f[

BZOJ 1303: [CQOI2009]位數

target 出現的次數 ios 一個 href 觀察 pan pri printf 二次聯通門 : BZOJ 1303: [CQOI2009]中位數圖 /* BZOJ 1303: [CQOI2009]中位數圖 對於一個數

BZOJ--1045-- 糖果傳遞(位數,排序)

題目連結 :BZOJ--1045-- 糖果傳遞 我們知道如果不頭尾相連的話 直接求一個字首和 答案為ans+=s[i] 不相連的話就是1 和n之間斷開 頭尾相連的話就是 在第k個人之間斷開 設A[i]為 a[i]-平均數的值 S[i] 表示字首和 第k個人斷開 A[k+1]