我宣佈我手機報廢了…
這道枚舉是IOI95的題目。雖說是枚舉但是情況要考慮5種清楚(圖示中的4,5圖是同樣的情況),尤其是第6圖的一系列if-else非常非常叫我噁心!
【packing rectangles】
/* ID: wanqia6 TASK: packrec LANG: C++ */ #include <fstream> using namespace std; int getmax(int a,int b,int c = -1,int d = -1) { if (b > a) a = b; if (c > a) a = c; if (d > a) a = d; return a; } void swapq(int &a,int &b) { int t = a; a = b; b = t; return; } ifstream infile; struct { int a,b; } rect[5],list[100000]; void initdata() { infile.open("packrec.in"); for (int i = 1; i <= 4; i++) infile >> rect[i].a >> rect[i].b; infile.close(); return; } const int CHART[24][4] = { {1,2,3,4},{1,2,4,3},{1,3,2,4},{1,3,4,2}, {1,4,2,3},{1,4,3,2},{2,1,3,4},{2,1,4,3}, {2,3,1,4},{2,3,4,1},{2,4,1,3},{2,4,3,1}, {3,1,2,4},{3,1,4,2},{3,2,1,4},{3,2,4,1}, {3,4,1,2},{3,4,2,1},{4,1,2,3},{4,1,3,2}, {4,2,1,3},{4,2,3,1},{4,3,1,2},{4,3,2,1} }; const int INF = 20000; int fa,fb,fc,fd,k,ans = INF,tot; void modify_ans(int len,int wid) { int tmp = len * wid; if (len > wid) swapq(len,wid); if (tmp == ans) { tot++; list[tot].a = len; list[tot].b = wid; } else if (tmp < ans) { ans = tmp; tot = 0; list[tot].a = len; list[tot].b = wid; } return; } void calc_sqr() { int xa,xb,xc,xd,ya,yb,yc,yd,len,wid; xa = fa == 0 ? rect[CHART[k][0]].a:rect[CHART[k][0]].b; ya = fa == 0 ? rect[CHART[k][0]].b:rect[CHART[k][0]].a; xb = fb == 0 ? rect[CHART[k][1]].a:rect[CHART[k][1]].b; yb = fb == 0 ? rect[CHART[k][1]].b:rect[CHART[k][1]].a; xc = fc == 0 ? rect[CHART[k][2]].a:rect[CHART[k][2]].b; yc = fc == 0 ? rect[CHART[k][2]].b:rect[CHART[k][2]].a; xd = fd == 0 ? rect[CHART[k][3]].a:rect[CHART[k][3]].b; yd = fd == 0 ? rect[CHART[k][3]].b:rect[CHART[k][3]].a; len = xa + xb + xc + xd; wid = getmax(ya,yb,yc,yd); modify_ans(len,wid); wid = getmax(ya + yc,yb + yd); if (yc == yd) len = getmax(xc + xd,xa + xb); else if ((yc > yd) && (yc < yb + yd)) len = getmax(xa + xb,xc + xb,xc + xd); else if ((yd > yc) && (yd < ya + yc)) len = getmax(xa + xb,xa + xd,xc + xd); else if (yc > yb + yd) len = getmax(xa,xb + xc,xd + xc); else if (yd > ya + yc) len = getmax(xb,xa + xd,xc +xd); modify_ans(len,wid); len = getmax(xa + xb + xc,xd); wid = yd + getmax(ya,yb,yc); modify_ans(len,wid); len = getmax(xa + xb,xc,xd); wid = yc + yd + getmax(ya,yb); modify_ans(len,wid); len = xa + getmax(xb + xc,xd); wid = getmax(ya,yd + getmax(yb,yc)); modify_ans(len,wid); return; } void solve() { for (fa = 0; fa <= 1; fa++) for (fb = 0; fb <= 1; fb++) for (fc = 0; fc <= 1; fc++) for (fd = 0; fd <= 1; fd++) for (k = 0; k < 24; k++) calc_sqr(); return; } ofstream outfile; void outitdata() { outfile.open("packrec.out"); for (int i = 0; i < tot; i++) for (int j = i + 1; j <= tot; j++) if (list[i].a > list[j].a) { swapq(list[i].a,list[j].a); swapq(list[i].b,list[j].b); } outfile << ans << endl; outfile << list[0].a << ' ' << list[0].b << endl; for (int i = 1; i <= tot; i++) if (list[i].a != list[i - 1].a) outfile << list[i].a << ' ' << list[i].b << endl; outfile.close(); return; } int main() { initdata(); solve(); outitdata(); return 0; }
Java將List結果分成3份執行 在Java編程中,有時候我們需要將一個List集合中的元素分成幾部分進行處理。這種情況下,我們可以使用Java的相關類庫和API來實現這一需求。在本文中,我們將介紹如何使用Java將List結果分成3份執
List 是Java中非常常用的數據類型。 List 是有序的 Collection。 Java List 一共三個實現類:分別是 ArrayList、 Vector 和 LinkedList。 ArrayList(數組) Array
本文分享自華爲雲社區《重磅新品發佈!雲耀數據庫HRDS,享受輕量級的極致體驗!》,作者:GaussDB 數據庫。 所謂,凡有井水處,即能歌柳詞。 大數據時代,凡有數據處,必有數據庫。 隨着業務需求的不斷擴大和數據量的激增,數
結構特點 List 和 Set 是存儲單列數據的集合,Map 是存儲鍵和值這樣的雙列數據的集合;List 中存儲的數據是有順序,並且允許重複;Map 中存儲的數據是沒有順序的,其鍵是不能重複的,它的值是可以有重複的,Set 中存儲的數據
「列表 list」是一個抽象的數據結構概念,它表示元素的有序集合,支持元素訪問、修改、添加、刪除和遍歷 等操作,無須使用者考慮容量限制的問題。列表可以基於鏈表或數組實現。 ‧ 鏈表天然可以看作一個列表,其支持元素增刪查改操作
簡介: 搶紅包是我們生活常用的社交功能, 這個功能最主要的特點就是用戶的併發請求高, 在系統設計上, 可以使用非常多的辦法來扛住用戶的高併發請求, 在本文中簡要介紹使用Redis緩存中間件來實現搶紅包算法, Redis是一個在內存中基
執行步驟: 1. 備份 mv -f /etc/apt/sources.list /etc/apt/sources.list.bak 2. 執行替換爲阿里源 cat > /etc/apt/sources.list<< EOF deb
在訪問後端api地址,頁面最下方有列示平臺的各個服務,點擊進入可查看具體的表內容 後端api地址: http://{hostIP}/x_program_center/jest/list.html 其中:{hostIP}爲中
物理結構在很大程度上決定了程序對內存和緩存的使用效率,進而影響算法程序的整體性能。 由於存儲數據的需要長久保存,並且內存的價格比硬盤貴太多,因此內存無法取代硬盤。 緩存的大容量和高速度難以兼得。隨着 L1、L2、L3 緩存的容量逐步增大
背景 百川專項是指物流統一打造企業級能力平臺,戰略上聚焦純配、倉配類業務主線,以提升前臺業務整體交付吞吐率爲核心目標,支撐物流開放領域解決方案和標準產品的快速交付實施。計劃以“百川”專項項目爲契機,加速推動BP團隊將ECLP中各自業務的單
問題描述 分頁返回的記錄總數total和每頁數量pageSize一致,數據庫統計的數量大於當前返回的總記錄數total,以下是相關代碼 問題分析 sql錯誤導致返回信息有誤? 檢查結果:經過數據執行日誌中生成的sql,sql正常並
遇到vue用axios請求後端json對象,發現vue頁面對應的v-for標籤怎麼都不渲染。 首先控制檯打印數據正常,以爲錯誤出現在生命週期鉤子上面。 axios請求在dom渲染之後,但是一頓操作之後還是沒有用。 參考了很多種方法, 第一種
本文分享自華爲雲社區《全網最易用、最實用、最好用的【幻獸帕魯】專用服務器攻略來啦!一鍵部署,5s開服!》,作者: 雲容器大未來。 華爲雲隆重推出“帕魯服務器-雲耀雲容器版”,基於雲耀雲容器助您一鍵快速搭建幻獸帕魯專用服務器,秒級開服,隨時啓
前言 在上一篇文章《還在擔心報表不好做?不用怕,試試這個方法》中,小編分享瞭如何使用模板語言生成報表的過程。今天小編進一步介紹模板語言中一些基本的概念和用法,因此讀者可以配合上一篇文章一起看。 本文介紹的內容有: 模板文件 綁定數據源 單
Python GC機制 對於Python這種高級語言來說,開發者不需要自己管理和維護內存。Python採用了引用計數機制爲主,標記-清除和分代收集兩種機制爲輔的垃圾回收機制。 首先,需要搞清楚變量和對象的關係: 變量:通過變量指針引用對象