日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[jzoj 5775]【NOIP2008模拟】农夫约的假期 (前缀和+递推)

發布時間:2025/3/15 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [jzoj 5775]【NOIP2008模拟】农夫约的假期 (前缀和+递推) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

傳送門

Description

在某國有一個叫農夫約的人,他養了很多羊,其中有兩頭名叫mm和hh,他們的歌聲十分好聽,被當地人稱為“魔音”······
農夫約也有自己的假期呀!他要去海邊度假,然而mm和hh不能離開他。沒辦法,他只好把他們兩個帶上。
到了海邊,農夫約把他的羊放在一個(nn)的矩陣(有nn個方格)里。mm和hh十分好動,他們要走到m(m<=n*n)個地方,第i個地方的坐標為(x[i](行),y[i](列)),每到一個地方他們會高歌一曲,制造q[i]點魔音值,因為他們的魔音十分獨特,他們的聲音只能橫著或豎著傳播。每傳播一格,魔音值會增加1。(傳播的格子數取最小的)接下來農夫約要住酒店。為了方便照顧小羊們,他選的酒店的坐標要在矩陣內。但小羊們的魔音讓他十分頭疼。他想求出魔音值最小的地方。
他還要享受他的假期,所以他把這個任務交給你了,加油(^_^)。

Input

第一行輸入n、m和z。
接下來m行,每行3個正整數x[i],y[i]和q[i]。

Output

第一行一個整數表示魔音值最小是多少。
接下來一行兩個正整數zb1和zb2,表示魔音值最小的地方的坐標(如果有多個答案,輸出橫坐標最小的情況下,縱坐標最小的)。

Sample Input

3 3 1
1 1 1
1 2 1
1 3 1

Sample Output

5
1 2

樣例解釋:(1,1)的初始魔音值為1,(1,2)的初始魔音值為1,(1,3)的初始魔音值為1,(1,1)與(1,2)的距離為1(abs(1-1)+abs(1-2)),傳播過程中的魔音值為1*z=1。(1,2)與(1,2)的距離為0,傳播過程中的魔音值為0,(1,3)與(1,2)的距離為1,傳播過程中的魔音值為1。總魔音值為1+1+1+1+0+1=5。

Data Constraint

10%的數據,n<=10(來自題目的饋贈).
30%的數據,n<=1000.
100%的數據,0<n<=100000,0<m<=100000,0<z<=10,0<q[i]<=100.

Hint

題目保證z=1

Solution

可以暴力求出第一個點的,然后將它向后轉移

Code

//By Menteur_Hxy #include<cstdio> #include<cstdlib> #include<cstring> #include<iostream> #include<algorithm> #define int long long #define F(i,a,b) for(i=(a);i<=(b);i++) #define getchar() (p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<20,stdin)),p1==p2?EOF:*p1++) using namespace std;char buf[1<<20],*p1,*p2; inline int read() {int x=0,f=1; char c=getchar();while(!isdigit(c)) {if(c=='-')f=-f;c=getchar();}while(isdigit(c)) x=(x<<1)+(x<<3)+c-48,c=getchar();return x*f; }const int N=100010; int xid[N],yid[N],da[N],xls[N],yls[N];signed main() {freopen("shuru.in","r",stdin);freopen("shuru.out","w",stdout);int n,m,z,i,ans=0,xsum=0,ysum=0,xmi=1000000000000ll,ymi=1000000000000ll,xans,yans;n=read(),m=read(),z=read();F(i,1,m) xid[read()]++,yid[read()]++,ans+=read();F(i,1,n) xls[i]=xls[i-1]+xid[i],yls[i]=yls[i-1]+yid[i]; // F(i,1,n) printf("%d ",xls[i]);puts(""); // F(i,1,n) printf("%d ",yls[i]);puts("");F(i,1,n-1) xsum+=m-xls[i],ysum+=m-yls[i];F(i,1,n) { // printf("%lld %lld\n",xsum,ysum);if(xsum<xmi) xmi=xsum,xans=i;if(ysum<ymi) ymi=ysum,yans=i;xsum+=(xls[i]<<1)-m;ysum+=(yls[i]<<1)-m;}printf("%lld\n%lld %lld",ans+xmi+ymi,xans,yans);return 0; }

轉載于:https://www.cnblogs.com/Menteur-Hxy/p/9451615.html

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的[jzoj 5775]【NOIP2008模拟】农夫约的假期 (前缀和+递推)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。