1. 程式人生 > >uva 11134 傳說中的車 從簡單情形入手

uva 11134 傳說中的車 從簡單情形入手

從簡單情形入手:

考慮只有一列,有n行,現在每個棋子的區域就是一個[le,ri],

那麼問題就是在n個線段區域內的每個區域選一個點,使得1,2,3,...,n每個格子都被選中恰好一次。

不拿發現解法就是貪心,

再作進一步考慮:現在有n個區間,n行,n列,所有列都被選中了,現在考慮怎樣使每一行都被選中且僅選中一次,

無論n個區間是怎樣選擇使得每一列都被選中,每一區間都必須選一個行,

也就是說滿足每一列都被選中一次,與滿足每一行都被選中一次是無關的。

原問題的  等價於  : n個區間,每個範圍有兩條線段[le,ri],[up,down],

在每個[le,ri]內選一個格子,使得列[1,n]每一列都被選中一次。區間i所選的列記為ans[i][0]。

在每個[up,down]內選一個格子,使得行[1,n]每一列都被選中一次。區間i所選的列記為ans[i][1]。

那麼棋子i的位置就是[ans[i][0],ans[i][1]]。

/**==========================================
 *   This is a solution for ACM/ICPC problem
 *
 *   @source£ºuva 11134
 *   @type: 問題分解
 *   @author: wust_ysk
 *   @blog:  http://blog.csdn.net/yskyskyer123
 *   @email: 
[email protected]
*===========================================*/ #include<cstdio> #include<string> #include<cstring> #include<iostream> #include<cmath> #include<algorithm> #include<queue> using namespace std; typedef long long ll; const int INF =0x3f3f3f3f; const int maxn= 5000 ; struct Node { int le,ri,ind; bool operator<(const Node y)const { return ri>y.ri; } } a[maxn+4],b[maxn+4]; int n; int ans[maxn+4][2]; bool cmp(Node x,Node y) { return x.le<y.le; } bool work(Node x[],int kind) { priority_queue<Node>q; int pos=1; for(int i=1;i<=n;i++) { while(!q.empty()&&q.top().ri<i) { q.pop(); } while(pos<=n&&x[pos].le<=i) { q.push(x[pos++]); } if(q.empty()) return false; Node tmp=q.top();q.pop(); int &ind=tmp.ind; ans[ind][kind]=i; } return true; } int main() { while(~scanf("%d",&n)&&n) { for(int i=1;i<=n;i++) { scanf("%d%d%d%d",&a[i].le,&b[i].le,&a[i].ri,&b[i].ri); a[i].ind=b[i].ind=i; } sort(a+1,a+1+n,cmp); sort(b+1,b+1+n,cmp); if(!work(a,0)||! work(b,1) ) { puts("IMPOSSIBLE"); continue; } for(int i=1;i<=n;i++) { printf("%d %d\n",ans[i][0],ans[i][1]); } } return 0; }


相關推薦

uva 11134 傳說中的車 簡單情形入手

從簡單情形入手: 考慮只有一列,有n行,現在每個棋子的區域就是一個[le,ri], 那麼問題就是在n個線段區域內的每個區域選一個點,使得1,2,3,...,n每個格子都被選中恰好一次。 不拿發現解法就是貪心, 再作進一步考慮:現在有n個區間,n行,n列,所有列都被選中

企業網站優化如何簡單中挖掘優化效果

問題 打開 程序 加工 優化 網站 相關 更多 作用   實際上說到企業網站的搜索引擎優化,在優化圈子裏面是相對簡單的事情,因為百度自身往往對企業網站相對看中,收錄速度快,而且也更願意提升企業網站的排名,這一點在百度推出官網計劃之後,就更加明顯,因為這是百度提升自身用戶體驗

UVa 12716 GCD XOR (簡單證明)

i++ map esp typedef -a type print const max 題意: 問 gcd(i,j) = i ^ j 的對數(j <=i <= N ) N的範圍為30000000,有10000組例子 思路:GCD(a,b) = a^b =

Libevent使用例子,簡單到復雜

enable targe 描述 har ron 請求 got memset repl 轉載請註明出處:http://blog.csdn.net/luotuo44/article/details/39670221 本文從簡單到復雜,展示如何使用l

jquery $.post() 向php值 實現簡單的二級聯動

chang var box jquer lec 簡單 cnblogs encode can 1 其中selectid是一個下拉菜單的id 2 3 $().ready(function () { 4 $("#selectid").change(functi

gcc/g++編譯(生動形象,最容易入手的hello world解釋了庫的概念)

默認 是我 包含 gcc編譯 not found 拷貝 使用 用戶 做了 1. gcc/g++在執行編譯工作的時候,總共需要4步 (1).預處理,生成.i的文件[預處理器cpp] (2).將預處理後的文件不轉換成匯編語言,生成文件.s[編譯器egcs] (3).有匯編變為

maven建一個簡單的web項目

maven插件 ron www. version str 創建 mage info -- 1、確認maven插件和配置在eclipse中已經完成   如果沒完成,可參考這篇博客:http://www.cnblogs.com/mmzs/p/8191979.html 2、在

UVa 11134 Fabled Rooks 算法分析

端點 處理 我們 example lob problem 經典 一個點 本質 難度:β 用時:0 題目:?? 代碼:?? 這是一道區間貪心題。 題目都不用花心思建模了。要求相當明確。就是要把 n 個點放在 一個 n x n 的網格裏,要求點與點不能共行或共列,每個點

UVA 11134 Fabled Rooks(貪心的妙用+memset誤用警示)

\n UC 錯誤 百度 函數傳參 用法 min 開始 != 題目鏈接: https://cn.vjudge.net/problem/UVA-11134 1 /* 2 問題 輸入棋盤的規模和車的數量n(1=<n<=5000),接著輸入n輛車的所能在的矩陣

awk簡單到復雜

awk shell1、語法和參數說明語法awk [options] 'script' var=value file(s)或awk [options] -f scriptfile var=value file(s)或awk [options] 'pattern{action}'

python小白到底要哪裏入手python呢?

python 爬蟲 運維 人工只能1、選擇Python版本 對於Python工程師來說,Python的版本則是你們的工作環境。所以在學習之前一定要考慮選擇一個合適自己的版本,Python3對零基礎的小白很友好,易上手。選好版本後就可以開始學習了。 2、學習Python基礎知識 Python 是一個有條理的、

小程序開發 簡單的 crud 開始

按鈕 success 關鍵字 mil real 我們 edi 每次 pro 關鍵字:“小程序 API” 【WXML 完成布局】 <view> == <div> {{}} == <%= %> ejs | jsp2 <block

OD 實驗(十六) - 對話框入手對程序的逆向

gpa 右鍵 入棧 template ESS 接下來 步驟 技術 img 對話框: 對話框從類型上分為兩類:modal 對話框和 modeless 對話框,就是模態對話框和非模態對話框,也有叫成模式和非模式 模態對話框不允許用戶在不同窗口間進行切換,非模態對話框允許用戶

JavaWeb-form值(一個jsp頁面資料到另一個jsp頁面)

第一個頁面,login.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%-- 本行程式碼可以防止亂碼出現 --%> <%

簡單的演算法初探過程彙編 棧幀指標

從簡單的演算法初探過程彙編 棧幀指標 作者:zcabcd123       從簡單的演算法初探過程彙編 轉載自 搗亂小子   趁年輕,用程式碼實現夢想 — daoluan.net 不忽視彙編   較於我們日常接觸的高階語

檔案上加nodejs簡單伺服器

1.隨便找一個空的資料夾,執行命令,有提示之後一路回車: npm init 2.安裝express: npm install express --save 3.在建好的專案下建一個server.js,在server.js寫上一下程式碼: var express = require

C# in Depth學習筆記-簡單的資料型別開始

C# 1中定義的產品型別 以定義一個表示產品的型別作為開始,然後進行處理。 其中Product 型別內部封裝了幾個屬性。同時還要建立預定義產品的一個列表。 //程式碼清單1-1 public class Product { string name; public string Na

估算上海企業搜尋營銷成本,SEO優化公司清法網路3方面入手

品牌轉型升級擴知名度,“搜尋營銷”自是一個少不了的品推參謀方案。所以企業的相關負責人員免不了要立項申請,確定一下營銷計劃與搜尋營銷策略,以方便決策層進行參考、比價。這也就意味著,立項團隊需要對自己的方案進行預算評估,從成本與預期效果上為企業提供可供參考的方案比對資料。那麼對於案子的策劃人員來說,該以怎樣的思路

估算上海企業搜索營銷成本,SEO優化公司清法網絡3方面入手

技術分享 相關 負責 點擊率 image 是把 seo 分享圖片 註意 品牌轉型升級擴知名度,“搜索營銷”自是一個少不了的品推參謀方案。所以企業的相關負責人員免不了要立項申請,確定一下營銷計劃與搜索營銷策略,以方便決策層進行參考、比價。這也就意味著,立項團隊需要對自己的方案

估算上海企業搜尋營銷成本,SEO優化公司清法網路9方面入手

品牌轉型升級擴知名度,“搜尋營銷”自是一個少不了的品推參謀方案。所以企業的相關負責人員免不了要立項申請,確定一下營銷計劃與搜尋營銷策略,以方便決策層進行參考、比價。這也就意味著,立項團隊需要對自己的方案進行預算評估,從成本與預期效果上為企業提供可供參考的方案比對資料。那麼對於案子的策劃人員來說,該以怎樣的思路