1. 程式人生 > >NOIP2008 普及組 複賽 seat 排座椅

NOIP2008 普及組 複賽 seat 排座椅

#include <stdio.h>
#include <string.h>
struct node{
    int pos;
    int count;
}row[1000+10],col[1000+10],t;
int ans_row[1000+10],ans_col[1000+10],ans_t;
int main(){
    int m,n,k,l,d;
    int i,j;
    int a1,b1,a2,b2;
    memset(row,0,sizeof(row));
    memset(col,0,sizeof(col));
    scanf("%d%d%d%d%d",&m,&n,&k,&l,&d);
    for(i=1;i<=d;i++){
        scanf("%d%d%d%d",&a1,&b1,&a2,&b2);
        if(b1==b2)//列相同
            if(a1>a2){
                row[a2].pos=a2;
                row[a2].count++;
            }else{
                row[a1].pos=a1;
                row[a1].count++;
            }
        if(a1==a2)//行相同
            if(b1>b2){
                col[b2].pos=b2;
                col[b2].count++;
            }else{
                col[b1].pos=b1;
                col[b1].count++;//筆誤,此處寫成col[b2].count++查了好半天
            }
    }
    //排序,自大到小
    for(i=1;i<=m;i++)
        for(j=i+1;j<=m;j++)
            if(row[i].count<row[j].count){
                t=row[i];
                row[i]=row[j];
                row[j]=t;
            }
    for(i=1;i<=n;i++)
        for(j=i+1;j<=n;j++)
            if(col[i].count<col[j].count){
                t=col[i];
                col[i]=col[j];
                col[j]=t;
            }
    for(i=1;i<=k;i++)
        ans_row[i]=row[i].pos;
    for(i=1;i<=k;i++)
        for(j=i+1;j<=k;j++)
            if(ans_row[i]>ans_row[j]){//自小到大排序
                ans_t=ans_row[i];
                ans_row[i]=ans_row[j];
                ans_row[j]=ans_t;
            }
    for(i=1;i<=l;i++)
        ans_col[i]=col[i].pos;
    for(i=1;i<=l;i++)
        for(j=i+1;j<=l;j++)
            if(ans_col[i]>ans_col[j]){//自小到大排序
                ans_t=ans_col[i];
                ans_col[i]=ans_col[j];
                ans_col[j]=ans_t;
            }
    if(k>0){
        printf("%d",ans_row[1]);
        for(i=2;i<=k;i++)
            printf(" %d",ans_row[i]);
        printf("\n");
    }
    if(l>0){
        printf("%d",ans_col[1]);
        for(i=2;i<=l;i++)
            printf(" %d",ans_col[i]);
        printf("\n");
    }
    return 0;
}

相關推薦

NOIP2008 普及 複賽 seat 座椅

#include <stdio.h> #include <string.h> struct node{     int pos;     int count; }row[1000+10],col[1000+10],t; int ans_row[1000+10],ans_col[1000

NOIP2008普及 座椅(貪心)

【問題描述】   上課的時候總有一些同學和前後左右的人交頭接耳,這是令小學班主任十分頭疼的一件事情。不過,班主任小雪發現了一些有趣的現象,當同學們的座次確定下來之後,只有有限的D對同學上課時會交頭接耳。同學們在教室中坐成了M行N列,坐在第i行第j列的同學的

傳球遊戲(NOIP2008 普及第三題)

同學 標示 方式 順序 開始 syn 有趣的 序列 toolbar 描述 上體育課的時候,小蠻的老師經常帶著同學們一起做遊戲。這次,老師帶著同學們一起做傳球遊戲。 遊戲規則是這樣的:n個同學站成一個圓圈,其中的一個同學手裏拿著一個球,當老師吹哨子時開始傳球,每個同學可以把球

ISBN號碼(NOIP2008 普及第一題)

Language numbers 例如 tool 字符 英語 toolbar 得到 錯誤 描述 每一本正式出版的圖書都有一個ISBN號碼與之對應,ISBN碼包括9位數字、1位識別碼和3位分隔符,其規定格式如“x-xxx-xxxxx-x”,其中符號“-”就是分隔符(鍵盤上的減

noip2008普及t3傳球遊戲

人在 ddd view algo aps OS opened main () 簡單dp dp[i][j]表示第i個人在j次傳球前的狀態 註意i=1 i=n時特殊處理 #include<iostream> #include<cstdio> #inc

NOIP 2017普及複賽C/C++詳細題解報告

一、題目 https://wenku.baidu.com/view/f3fe5a326ad97f192279168884868762cbaebb71.html?from=search 二、題解 第1題 這題很簡單,因為輸入的三個數都是十的整數倍,所以計算結果不會有小數。

NOIP 2016普及複賽C/C++詳細題解報告

第1題 這題很簡單,唯一需要注意的是需要判斷能不能整除。 #include <iostream> #include <climits> #include <cstdio> using namespace std; int main() {

2008年NOIP普及複賽解題報告

2008年NOIP普及組解題報告 王祺磊 (本份解題報告以C++為參考程式) 一、ISBN號碼 一道讓人很長知識的題目,但是題目所蘊含的解題方法,卻十分直接。你甚至可以不用一個迴圈就可以搞定這道題。因為每一位都是固定的。到底第幾位乘幾都是固定的。在這道題中只要控制好字串的位數,就可以

NOIP2017普及複賽解題報告

這次考試在衢州二中,這裡地形太複雜了,離開考前3分鐘才找到考場。無語·········所以一開考就沒有好心情。這次的題目相對來以往的前幾道題比較簡單,但最後一道題比較難,考場上只想出來了50分的程式碼。 時間限制:1s

【蒻爆了的NOIP系列--普及複賽】(6)NOIP2015普及複賽題解

這只是一個作業,如果有幫到您的,我只能說。。。這不科學。。。 ————————————華麗的分割線———————————— 第一題: 這題很水雙重for列舉直n次輸出當然你要數論我也沒辦法

NOIP 2009 普及 複賽 score 分數線劃定

#include <stdio.h> struct node{     int k;     int s; }p[10000],mid,t; int main(){     int n,m,q;     int i,j;     int count=0;     scanf("%d%d",&

NOIP 2018普及複賽第1題答案詳解

一、C程式 ###解法一:用gets()函式 #include <stdio.h> #include <string.h> int main() { // 將控制檯的

NOIP2012普及複賽解題報告

【問題描述】 1.質因數分解 (prime.cpp/c/pas) 已知正整數 n 是兩個不同的質數的乘積,試求出較大的那個質數。 【輸入】 輸入檔名為 prime.in。 輸入只有一行,包含一個正整數 n。 【輸出】 輸出檔名為 prime.out。 輸出只有一行

【蒻爆了的NOIP系列--普及複賽】(4)NOIP2013普及複賽題解

這只是一個作業,如果有幫到您的,我只能說。。。這不科學。。。 ————————————華麗的分割線———————————— 第一題: 神似noip2016t1… 貌似就資料範圍和輸入方式

NOIP2017普及複賽題解

T1 score 題面: (不想看的跳過吧) 無疑,這是一道可以媲美A+B Problem的大水題,剛開始看到,以為要用浮點數操作之類的,但是題目給出A,B,C全部小於等於100並且都為10的倍數,所以就使這道題變成了徹徹底底的水題。 題意大概如此:給

NOIP 2008 普及 複賽 ball 傳球遊戲

//p1057 傳球遊戲 //該題與 P1164 小A點菜 有點 象 //模擬樣例,一直覺得挺奇怪的,應該有很多種啊,一模擬,發現1->2->1是不行的。 //樣例弄懂的,很多時候弄懂樣例,紙筆比在腦子裡憑空想想,更有效。 //沒感覺,翻看https://wenku.baidu.com/view

NOIP 普及 複賽 歷年 試題

NOIP 普及組  複賽  歷年 試題NOIP 2016 普及組 複賽  試題https://wenku.baidu.com/view/c317cd8abdeb19e8b8f67c1cfad6195f312be89f.html?rec_flag=default&mar

[NHZXOI2017]2016NOIP普及複賽題解

  用了兩天的中午時間做了一套今年的普及組複賽試題結果測出來分數只有兩百!(第三題洛谷全過,lemon卻顯示編譯錯誤,奇了怪了) 第一題  買鉛筆 考查知識點:數學 解題思路:把每個產品買夠n支筆時的錢算出來,選取最小的。 程式碼: #include <iostre

【用膝蓋寫程式碼系列】(5):NOIP2013普及複賽詳解

有人問我為什麼2013在2014之後? 那是因為。。。。。。你醜(這句劃掉) 2013年難啊! …… 第一題:計數問題 題面簡述:試計算在區間 1 到 n 的所有整數中,數字 x(0 ≤

NOIP 2015 普及 複賽 mine 掃雷遊戲

#include <stdio.h> char s[100+5][100+5]; int b[100+5][100+5]; int step[8][2]={{0,-1},{0,1},{-1,0},{1,0},{-1,-1},{1,-1},{-1,1},{1,1}}; int n,m; int fu