1521 一維戰艦
基準時間限制:1 秒 空間限制:131072 kb 分值: 10 難度:2級演算法題
收藏關注愛麗絲和鮑博喜歡玩一維戰艦的遊戲。他們在一行有n個方格的紙上玩這個遊戲(也就是1×n的**)。
在遊戲開始的時候,愛麗絲放k個戰艦在這個**中,並不把具體位置告訴鮑博。每乙隻戰艦的形狀是 1×a 的長方形(也就是說,戰艦會佔據a個連續的方格)。這些戰艦不能相互重疊,也不能相接觸。
然後鮑博會做一系列的點名。當他點到某個格仔的時候,愛麗絲會告訴他那個格仔是否被某只戰艦佔據。如果是,就說hit,否則就說miss。
但是這兒有乙個問題!愛麗絲喜歡撒謊。他每次都會告訴鮑博miss。
請你幫助鮑博證明愛麗絲撒謊了,請找出哪一步之後愛麗絲肯定撒謊了。
input
單組測試資料。output第一行有三個整數n,k和a(1≤n,k,a≤2*10^5),表示**的大小,戰艦的數目,還有戰艦的大小。輸入的n,k,a保證是能夠在1×n的**中放入k只大小為a的戰艦,並且他們之間不重疊也不接觸。
第二行是乙個整數m(1≤m≤n),表示鮑博的點名次數。
第三行有m個不同的整數x1,x2,...,xm,xi是鮑博第i次點名的格仔編號。格仔從左到右按照1到n編號。
輸出乙個整數,表示最早一次能夠證明愛麗絲一定撒謊的點名編號。如果不能證明,輸出-1。點名的編號依次從1到m編號。input示例
樣例1output示例11 3 3
54 8 6 1 11
樣例25 1 3
21 5
樣例輸出13樣例輸出2
-1分析
在區間【1,n】上最多能放(n+1)/(a+1)個戰艦。如果某個空格沒有戰艦,相當於將乙個區間分割成了兩個區間,這樣它能放的戰艦數就會相應的減少((大區間能放的戰艦數)-(小區間1能放的戰艦數+小區間2能放的戰艦數))個。
隨著愛麗絲不斷地報miss,區間不斷地被分割。當最後一次分割使得能放的戰艦數小於k個時,該分割不能進行,即愛麗絲撒慌。
**
1 #include 2 #include3using
namespace
std;
4int
n,k,a;
5intm;6
sets;
7int
main()836
37 cout
39return0;
40 }
一道搜尋好題
這個題真的叫這個名字 一道搜尋好題 我也很絕望 但是這並不是好題推薦 題目描述 給定乙個數s,找任意個正整數a1,a2,an,使得它們的和恰好等於s,且它們的倒數之和與1的差不超過10 6。輸出任意一種方案或者輸出無解。s 65536 輸入樣例 10輸出樣例 2 4 4 看起來非常的不靠譜對不對 實...
一道搜尋好題
給定乙個數s,找任意個正整數a1,a2,an,使得它們的和恰好等於s,且它們的倒數之和與1的差不超過10 6。輸出任意一種方案或者輸出無解。s 65536 解析 事實上也是簡單的搜尋。從小到大列舉每個數,加入試試看。兩個剪枝 當前的和加上最大的和到不了1,退出。當前的和加上最小的和都超過了1,退出。...
記一道好VAN的數學題
首先發掘幾個性質 然後考慮是否能讓乙無論如何都能構造出乙個等色等邊三角形出來。考慮當第 34 步時,左端點和右端點距離 33 段弧,與他們同時相距 33 步的點 z 可以構成乙個等邊三角形。因為偶數步是乙操作的,所以乙必然能使左右端點顏色一致 他染的跟之前的一致即可 然後問題就變成了乙是否能順利染到...