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表示該噴水裝置能覆蓋的圓的半徑。...