[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;
}
[jzoj 5775]【NOIP2008模拟】农夫约的假期 (前缀和+递推)的更多相关文章
- JZOJ 5775. 【NOIP2008模拟】农夫约的假期
5775. [NOIP2008模拟]农夫约的假期 (File IO): input:shuru.in output:shuru.out Time Limits: 1000 ms Memory Lim ...
- [JZOJ5775]【NOIP2008模拟】农夫约的假期
Description 在某国有一个叫农夫约的人,他养了很多羊,其中有两头名叫mm和hh,他们的歌声十分好听,被当地人称为“魔音”······ 农夫约也有自己的假期呀!他要去海边度假,然而mm和 ...
- [CSP-S模拟测试]:阴阳(容斥+计数+递推)
题目传送门(内部题16) 输入格式 第一行两个整数$n$和$m$,代表网格的大小.接下来$n$行每行一个长度为$m$的字符串,每个字符若为$W$代表这个格子必须为阳,若为$B$代表必须为阴,若为$?$ ...
- JZOJ 5777. 【NOIP2008模拟】小x玩游戏
5777. [NOIP2008模拟]小x玩游戏 (File IO): input:game.in output:game.out Time Limits: 1000 ms Memory Limits ...
- JZOJ 5809. 【NOIP2008模拟】数羊
5809. [NOIP2008模拟]数羊 (File IO): input:sheep.in output:sheep.out Time Limits: 1000 ms Memory Limits: ...
- JZOJ 5793. 【NOIP2008模拟】小S练跑步
5793. [NOIP2008模拟]小S练跑步 (File IO): input:run.in output:run.out Time Limits: 2000 ms Memory Limits: ...
- JZOJ 5791. 【NOIP2008模拟】阶乘
5791. [NOIP2008模拟]阶乘 (File IO): input:factorial.in output:factorial.out Time Limits: 1000 ms Memory ...
- JZOJ 5776. 【NOIP2008模拟】小x游世界树
5776. [NOIP2008模拟]小x游世界树 (File IO): input:yggdrasil.in output:yggdrasil.out Time Limits: 1500 ms Me ...
- JZOJ 5773. 【NOIP2008模拟】简单数学题
5773. [NOIP2008模拟]简单数学题 (File IO): input:math.in output:math.out Time Limits: 1000 ms Memory Limits ...
随机推荐
- 在win10下改变默认的输入法切换Ctrl+Space
在win10下改变默认的输入法切换Ctrl+Space 学习了:https://www.zhihu.com/question/22288432 在win10下面,有两种风格的控制面板设置: 在输入法上 ...
- JAVA模拟登录实例
近期在做公司一个web项目.要求在我们的系统上,可以显示其它站点上的数据. 刚開始接到这个任务时,还在想.简单的非常.直接用UrlConection直接进入该网页,然后获取该网页的html,取到想要的 ...
- java代理使用 apache ant实现文件压缩/解压缩
[背景] 近日在研究web邮件下载功能,下载的邮件能够导入foxmail邮件client.可是批量下载邮件还需将邮件打成一个压缩包. 从网上搜索通过java实现文件压缩.解压缩有非常多现成的样例. [ ...
- HDU1573 X问题【一元线性同余方程组】
题目链接: http://acm.hdu.edu.cn/showproblem.php? pid=1573 题目大意: 求在小于等于N的正整数中有多少个X满足:X mod a[0] = b[0], X ...
- ASP.NET MVC 认证模块报错:“System.Configuration.Provider.ProviderException: 未启用角色管理器功能“
新建MVC4项目的时候 选 Internet 应用程序的话,出来的示例项目就自带了默认的登录认证等功能.如果选空或者基本,就没有. 如果没有,现在又想加进去,怎么办呢? 抄啊.将示例项目的代码原原本本 ...
- 最经典的SDK程序结构 HelloWin
程序运行效果:在创建窗口的时候,播放一个声音.且在窗口的客户区中央画一句文字:Hello, Windows 98!,无论程序怎么移动.最大化,文字始终在程序的中央部位. 程序总共分为六个步骤:定义,注 ...
- elasticsearch date_histogram
(5)Date Histogram Aggregation 时间直方图聚合,专门对时间类型的字段做直方图聚合.这种需求是比较常用见得的,我们在统计时,通常就会按照固定的时间断(1个月或1年等)来做统计 ...
- class--类②
定义 C++ 对象 类提供了对象的蓝图,所以基本上,对象是根据类来创建的.声明类的对象,就像声明基本类型的变量一样.下面的语句声明了类 Box 的两个对象: Box Box1; // 声明 Box1, ...
- 简述RTMPDump与编译移植
RTMPDump主页 ,RTMPDump库主要包含三部分: 1.一个基本的客户端程序 2.两个服务器程序(rtmpsrv.rtmpsuck) 3.一个支持rtmp协议的库—librtmp 下载RTMP ...
- STL 集合部分操作
3.28更新 在EOJ 1641 集合栈计算机中,使用并集和补集时候,第五个参数使用x.begin()会报错:assignment of read-only location,而使用inserter( ...