t1:social distancing 1
t2:social distancing 2
t3:cowntact tracing
一種新型疾病,cowvid-19,開始在全世界的奶牛之間傳播。farmer john 正在採取盡可能多的預防措施來防止他的牛群被感染。
farmer john 的牛棚是乙個狹長的建築物,有一排共 n 個牛欄(2≤n≤10^5)。有些牛欄裡目前有奶牛,有些目前空著。得知「社交距離」的重要性,farmer john 希望使得 d 盡可能大,其中 d 為最近的兩個有奶牛的牛欄的距離。例如,如果牛欄 3 和 8 是最近的有奶牛的牛欄,那麼 d=5。
最近兩頭奶牛新來到 farmer john 的牛群,他需要決定將她們分配到哪兩個之前空著的牛欄。請求出他如何放置這兩頭新來的奶牛,使得 d 仍然盡可能大。farmer john 不能移動任何已有的奶牛;他只想要給新來的奶牛分配牛欄。
輸入的第一行包含 n。下一行包含乙個長為 n 的字串,由 0 和 1 組成,描述牛棚裡的牛欄。0 表示空著的牛欄,1 表示有奶牛的牛欄。字串中包含至少兩個 0,所以有至少有足夠的空間安置兩頭新來的奶牛。
輸出 farmer john 以最優方案在加入兩頭新來的奶牛後可以達到的最大 d 值(最近的有奶牛的牛欄之間的距離)。
14
10001001000010
2
分四種情況判斷:
1.把2個1放在兩個不同的區間
2.把2個1放在同乙個區間
3.把2個1分別放在頭和尾
4.區間輸出
#
include
#include
#include
#include
#include
using
namespace std;
int n,m,maxn1,maxn2,x,y,maxx=
2147483647
;int a[
100101
],cnt;
char c;
intmain()
else
maxn2=
max(maxn2,a[m]
-a[m-1]
);}}
} x=
min(maxn1/
2,maxn2/2)
,y=maxn1/3;
if(a[1]
>1)
//分別判斷
if(a[m]
if(a[1]
>
1&&a[m]
cnt=
min(a[1]
-1,n-a[m]);
if(m==0)
cout
cout<<
min(maxx,
max(x,
max(y,cnt)))
;return0;
}
由於高傳染性的牛傳染病 cowvid-19 的爆發,farmer john 非常擔憂他的奶牛們的健康。
儘管他盡了最大努力使他的 n 頭奶牛們(1≤n≤1000)踐行「社交距離」,還是有許多奶牛不幸染上了疾病。編號為 1…n 的奶牛們分別位於一條長直道路上的不同位置(相當於一維數軸),奶牛 i 位於位置 xi。farmer john 知道存在乙個半徑 r,任何與一頭被感染的奶牛距離不超過 r 單位的奶牛也會被感染(然後會傳染給與其距離 r 單位內的奶牛,以此類推)。
不幸的是,farmer john 並不確切知道 r 的值。他只知道他的哪些奶牛被感染了。給定這個資料,求出起初感染疾病的奶牛的最小數量。
輸入的第一行包含 n。以下 n 行每行用兩個整數 x 和 s 描述一頭奶牛,其中 x 為位置(0≤x≤10^6),s 為 0 表示健康的奶牛,1 表示染病的奶牛,並且所有可能因傳播而染病的奶牛均已染病。
輸出在疾病開始傳播之前已經得病的奶牛的最小數量。
671
11151
31100
61
3
這道題在t1的基礎上做出了改變……
實際上求出每個被感染的牛與離它最近的一頭被感染的牛之間的距離就好了
注意開long long
#
include
#include
#include
#include
#include
#include
using
namespace std;
long
long n,f[
1000001
],x,y,minn=
2147483647
,maxx,ans;
intmain()
x=1100000
,y=2200000
;for
(int i=
1;i<=maxx;i++
) minn=
min(minn,
abs(x-y)-1
);x=-1
;for
(int i=
1;i<=maxx;i++)if
(f[i]==2
)printf
("%d\n"
,ans)
;return0;
}
輸入的第一行包含 n(2≤n≤100)和 t(1≤t≤250)。下一行包含乙個長為 n 的字串,每個字元均為 0 或 1,表述目前 farmer john 的 n 頭奶牛的狀態——0 表示一頭健康的奶牛,1 表示一頭染病的奶牛。以下 t 行每行包含 farmer john 的互動清單中的一條記錄,由三個整數 t、x 和 y組成,其中 t 為一次互動發生的正整數時間(t≤250),x 和 y 為範圍 1…n 內的不同整數,表示時間 t 握蹄的兩頭奶牛。在每一時刻至多只有一次互動發生。
輸出一行,包含三個整數 x、y 和 z,其中 x 為可能為零號病人的奶牛數量,y 為與資料一致的最小可能 k 值,z 為與資料一致的最大可能 k 值(如果通過資料無法推斷 k 的上界,z 輸出 「infinity」)。注意可能有 k=0。
4
3110071
2523
624
1
1 infinity
2020 3 11 C組模擬賽題解
t1 水果盛宴 t2 憤怒的奶牛2 t3 採訪 t4 房間開燈貝茜又再一次地闖入了 farmer john 的房子!她在廚房發現了一堆檸檬和一堆橘子 每堆都有無限多個 並且,她希望盡可能地多吃。貝茜的有乙個飽腹值上限 t 1 t 5,000,000 吃乙個橘子會增加她 a 點飽腹值,吃乙個檸檬會增加...
2020 3 14 C組模擬賽題解
t1 探索的奶牛 t2 單詞 t3 牛車 t4 危險係數fj的奶牛喜歡探索農場周圍的地形。一開始,所有n 1 n 1,000,000,000 只奶牛一起出發,但當碰到路口時,這一群牛可能會分成兩部分 不能為空 每一部分都繼續前進,當碰到另乙個路口時,再分成兩部分,如此反覆下去。假設路上到處都是新的岔...
2020 3 28 C組模擬賽題解
t1 羊羊整除 t2 羊羊吃草 t3 羊羊修路 t4 羊羊列隊羊年到了,村長開始教小羊學習pascal語言,剛開始學習四則運算。村長在白板上寫下兩個整數16和3,問小羊們,有16隻羊,平均分到3個羊村,每個羊村分到的數量必須相同,這個分配的數量最大是多少?小羊們很快就得到了答案,每個羊村分到5只,有...