[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模拟】农夫约的假期 (前缀和+递推)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: var let this的区别
- 下一篇: hdu1814 Peaceful Com