題目鏈結
現在有n個整數,在這n個數中找出k個數,保證這k個數中任意兩個數差的絕對值可以被m整除。input
第一行輸入三個整數n,k,m(2<=k<=n<=100000,1<=m<=100000)。
第二行包含n個整數a1,a2,..., an(0 <= ai <= 10^9 )。
output
如果不存在這樣的k個數,輸出"no";
否則輸出"yes"後,在下一行輸出這k個數,數與數之間用空格隔開。 (存在多種情況,輸出任意一種)。
example
input
3 2 3output1 8 4
yesinput1 4
3 3 3output1 8 4
noinput
4 3 5output2 7 7 7
yes思維,只要模m後的餘數相等,差就一定是m的倍數。2 7 7
比如:(a-b)%p=0 a%p=m,b%p=n,,那麼m和n一定相等。
把n個整數模m的值算出來,用vector實現計數,把模m後相等的值放在一起就行了。
#include #include #include using namespace std;
typedef long long ll;
const int inf=0x3f3f3f3f;
const ll inf=0x3f3f3f3f3f3f3f3f;
const int maxn=1e5+10;
vectorve[maxn];
int main()
for(int i=0;i=k)
{ cout<<"yes"《涉及知識點:
1、vector實現計數,注意vector計數的時候vector必須定義成陣列形式。
揹包問題 可分割
可分割的揹包問題 即挑菜單位價值最大的物品裝入即可。寶物 i12 3456 78910 重量w i 42 9558 5455 價值v i 38 186820 56715 求裝入寶物的最大價值,以及裝入寶物的序號。include include using namespace std 需要乙個結構體,...
揹包問題(可分割)
給定乙個載重量為m的揹包,考慮n個物品,其中第i個物品的重量 wi 價值vi 1 i n 要求把物品裝滿揹包,且使揹包內的物品價值最大。如果物品可以分割,則稱為揹包問題 貪心演算法 為方便計算,建立如下的資料結構,表示物品的引數 struct baga 1001 存放物品的陣列 排序因子 按價效比降...
貪心法之可分割揹包問題
複習演算法至貪心法,書上的舉例是可分割的揹包問題。可分割揹包問題很容易理解,只需要根據收益和重量的比值進行排序,首選比值較大者填入即可,若物品種類大於剩餘載重量,則填充剩餘載重量的此物品,在剩餘載重量足夠的情況下,依次將物品填入揹包即可。這應該是揹包問題中最為簡易的了,待熬過這段時間的考試,準備好好...