DZY的根 思維水

2022-03-29 03:04:32 字數 1398 閱讀 2059

dzy的根

【問題描述】

dzy是個沒有根的人,他十分想要有根,這樣才能。。。智商爆表的計算機大神wjc決定再幫幫他,他用程式製造了n個根——有生命的根!

這n個根和wjc一樣都十分機智,他們要參加西洋棋比賽,該比賽要進行k場對弈。每個根最多參加兩場對弈,最少參加零場對弈。每個根都有乙個與其他根都不相同的等級(用乙個正整數來表示)。

在對弈中,等級高的根必須用黑色的棋子,等級低的根必須用白色的棋子。 每個根最多只能用一次黑色的棋子和一次白色的棋子。

為了增加比賽的客觀度,觀眾希望k場對弈中雙方等級差的總和最小。比如有7個根,他們的等級分別是30,17,26,41,19,38,18,要進行3場比賽,最好的安排是 2 vs 7, 7 vs 5,6 vs 4,此時等級差的總和為(18-17)+(19-18)+(41-38)=5 達到最小。

【輸入格式】

第一行兩個整數n、k。接下來n行,第i行表示第i-1個根等級。

【輸出格式】

最小等級差的總和

【輸入樣例】

7 330

1726

4119

3818

【輸出樣例】

5【資料範圍】

90% n<=3000

100% n<=100000

所有等級值<110 1<=k<=n-1

【**】

由 hacker_wjc 改編於某個oj上的某道題(23333333333333333)

題解:每個根最多參加兩場對弈,最少參加零場對弈,其實就是代表贏一次必定會輸一次,也就是排序中相鄰的兩個數的差和最小;

**:

#include#include#include#includeusing namespace std;

const int inf=0x3f3f3f3f;

#define si(x) scanf("%d",&x)

#define sl(x) scanf("%lld",&x)

#define pi(x) printf("%d",x)

#define pl(x) printf("%lld",x)

#define mem(x,y) memset(x,y,sizeof(x))

#define p_ printf(" ")

typedef long long ll;

const int maxn=100010;

int m[maxn],n[maxn];

int main()

sort(m,m+n);

int tp=0;

for(int i=1;isort(n,n+tp);

int ans=0;

for(int i=0;ians+=n[i];

printf("%d\n",ans);

} return 0;

}

Hybrid Crystals(思維,水題)

題意 有三種能量石,分別是l,d,n。每顆能量石含有ai的能量。能量石可以融合,融合規則 l型別的合併可以增加ai點能量,d型別的減少,n型別的可加可減 加還是減隨你自己 並且保證第一顆能量石的能量是1,且型別是n。並且每顆能量石符合題目所給的那個公式。給你一些能量石,你需要融合其中一部分,讓融合後...

彈飛DZY(思維,打表,還沒過全,先放著)

彈飛dzy description 某天,機智的zzc發明了一種超級彈力裝置,為了在他的朋友dzy面前顯擺,他邀請dzy一起玩個遊戲。遊戲一開始,zzc在地上沿著一條直線擺上n個裝置,每個裝置設定初始彈力係數ki,當dzy達到第i個裝置時,他會往後彈ki步,達到第i ki個裝置,若不存在第i ki個...

思維 水 南陽oj 噴水裝置(一)

描述 現有一塊草坪,長為20公尺,寬為2公尺,要在橫中心線上放置半徑為ri的噴水裝置,每個噴水裝置的效果都會讓以它為中心的半徑為實數ri 0 輸入第一行m表示有m組測試資料 每一組測試資料的第一行有乙個整數數n,n表示共有n個噴水裝置,隨後的一行,有n個實數ri,ri表示該噴水裝置能覆蓋的圓的半徑。...