生活随笔
收集整理的這篇文章主要介紹了
20150321BC
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?BC的界面貌似變得很漂亮的樣子(暴露了多久沒打BC了。。。)
寫在之前:
這學期遇到了點事情,所以心情很受影響,代碼也沒怎么敲,課程本來就緊,再加上轉專業的一堆破事,所以有些不爽...
影響心情的事情雖然沒有被完全解決,不過暫時被凍結了,?大家都冷靜一段時間,冷靜下來,也就自然而然得解決了。
代碼有一陣沒敲了,腦子也開始生銹了呢....
?A:買團體票,有不同的規則,問哪家比較合適,水。
#
include?<iostream> #
include?<algorithm> #
include?<cstdio> #
include?<cmath> #
include?<cstring> using?namespace?std; int?main() { ??????int?m,n,i; ??????int?a[120],b[120]; ??????int?ans=0; ??????int?cost[120]; while?(scanf("%d?%d",&n,&m)!=EOF) { ?????????memset(a,0,sizeof(a)); ?????????memset(b,0,sizeof(b)); ?????????memset(cost,0,sizeof(cost)); ????????for?(int?i=1;i<=m;i++) ????????????scanf("%d?%d",&a[i],&b[i]); ????????for?(int?i=1;i<=m;i++) ????????{ ????????????cost[i]=n/a[i]*b[i]; ????????????if?(n?%a[i]!=0) ????????????????cost[i]+=b[i]; ????????} ????????ans=999999999; ????????for?(int?i=1;i<=m;i++) ????????????if?(cost[i]<ans) ?????????????ans=cost[i]; ????????printf("%d\n",ans); } return?0; } B:要求連續W個堆的高度都為H,問最少調整多少個塊,如果不能得到就-1.
? ?容易想到,如果塊的總數不小于W*H,問題一定有解。
? ?我們想要找到連續的W個堆,使它最接近最優值。
如果每個堆的高度為h[i]
通過數據發現,當W=4,H=6時,6 6 6 6 >6 6 6 7 >?4 4 8 8 >4 4 4 5 >4 4 4 4
我們容易發現,一段連續區間的好壞是由(h[i]-H)和abs(h[i]-H)共同決定的
#include?<iostream> #include?<algorithm> #include?<cstdio> #include?<cstring> #include?<cmath> using?namespace?std; int?main() {????int?n,W,H; ?????int?h[50001]; ?????int?sum; ?????int?now; ?????int?m; ?????int?ans; while?(scanf("%d?%d?%d",&n,&W,&H)!=EOF) {???sum=0; ?????????for?(int?i=1;i<=n;i++) ?????????{ ????????????scanf("%d",&h[i]); ????????????sum=sum+h[i]; ?????????} ?????????if?(sum<W*H) ?????????{ ????????????printf("-1\n"); ????????????continue; ?????????} ??????????now=0; ??????????m=99999999; ??????????int?cost=0; ??????????int?ave; ?????????for?(int?i=1;i<=W;i++) ?????????{ ????????????now=now+(h[i]-H); ????????????cost=cost+abs(h[i]-H); ?????????} ????????????ave=(abs(now)+cost)/2; ?????????if?(ave<m) ?????????{ ?????????????m=ave; ?????????????ans=1; ?????????} ?????????for?(int?i=W+1;i<=n;i++) ?????????{ ?????????????now=now+h[i]-h[i-W]; ?????????????cost=cost+abs(h[i]-H)-abs(h[i-W]-H); ?????????????ave=(abs(now)+cost)/2; ?????????????if?(ave<m) ?????????????{ ?????????????????m=ave; ?????????????????ans=i; ?????????????} ?????????} ?????????printf("%d\n",m); } return?0; }
轉載于:https://www.cnblogs.com/111qqz/p/4360103.html
總結
以上是生活随笔為你收集整理的20150321BC的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。