ECfinal UVALive 7512 November 11th (公式)
題目大意:一共R排,每排S個座椅,一共有B個座椅是壞的,坐的時候要求相鄰兩個位置只能坐一個人,求最多和最少坐多少人後不能再坐人
題目分析:預處理壞的位置,為了方便計算,在最左和最右再加兩列壞的座位,然後只要列舉任意兩對壞座位之間的情況即可,最大時偶數除/2,奇數/2+1,最小時每三個位子坐一個人能佔據的空間最大
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int const MAX = 1005;
int r, s, b;
int a[MAX][MAX];
struct B
{
int x, y;
}bk[MAX * 10];
bool cmp(B a, B b)
{
if(a.x == b.x)
return a.y < b.y;
return a.x < b.x;
}
int get_ma(int x)
{
if(x == 0)
return 0;
if(x < 3)
return 1;
if(x & 1)
return (x + 1) / 2;
return x / 2;
}
int get_mi(int x)
{
if(x == 0)
return 0;
if(x < 3)
return 1;
return x / 3 + (x % 3 != 0);
}
int main()
{
int T;
scanf("%d", &T);
for(int ca = 1; ca <= T; ca++)
{
int cnt = 0;
scanf("%d %d %d", &r, &s, &b);
for(int i = 0; i < b; i++)
{
scanf("%d %d", &bk[cnt].x, &bk[cnt].y);
bk[cnt].x ++;
bk[cnt].y ++;
cnt ++;
}
for(int i = 1; i <= r; i++)
{
bk[cnt].x = i;
bk[cnt].y = 0;
cnt ++;
bk[cnt].x = i;
bk[cnt].y = s + 1;
cnt ++;
}
sort(bk, bk + cnt, cmp);
int mi = 0, ma = 0;
for(int i = 0; i < cnt - 1; i++)
{
if(bk[i].x == bk[i + 1].x)
{
mi += get_mi(bk[i + 1].y - bk[i].y - 1);
ma += get_ma(bk[i + 1].y - bk[i].y - 1);
}
}
printf("Case #%d: %d %d\n", ca, ma, mi);
}
}
相關文章
- Top 10 系列:NodeJS in NovemberNodeJS
- UVALive 6283 Great Deceiver 思考題
- Nothing lasts forever, Even cold November rainASTAI
- UVALive 7511 Multiplication Table (數學模擬題)
- UVALive 6665 Dragon’s Cruller (BFS + 優先佇列+hash)Go佇列
- UVALive 7410 && POJ 5583 Kingdom of Black and White (列舉)
- 全概率公式、貝葉斯公式公式
- 原子謂詞公式和合式公式公式
- 戰鬥公式的演化與策略--屬性與公式的關係、減法公式與乘法公式公式
- 求和公式公式
- js公式JS公式
- 物理公式公式
- word公式公式
- Office公式公式
- 尤拉公式——真正的宇宙第一公式公式
- 【公式】殺號公式準確率可達98公式
- 淺談全概率公式和貝葉斯公式公式
- 2010成都站c題||uvalive5006 二進位制
- EXCEL操作公式Excel公式
- 常用Latex公式公式
- jupyter公式公式
- Lotus 公式秘籍公式
- 一個公式公式
- 爆款公式公式
- 數學公式公式
- 格林公式7公式
- 【數值框架】戰鬥公式:傷害公式選擇框架公式
- Excel公式大全詳解 excel表格計算公式大全Excel公式
- §3. 高斯公式與斯托克斯公式公式
- excel利用rank排名次公式 excel利用公式計算排名Excel公式
- word公式怎麼計算 word公式計算的方法公式
- 全概率公式理解公式
- 三個求和公式公式
- LaTeX 公式編輯公式
- 控制公式的大小公式
- HDU1792(公式)公式
- 自定義View公式View公式
- 公式編輯器公式