题解 P5051 【[COCI2017-2018#7] Timovi】
看到这道题目,数据范围,心凉了一大截
这是没开O2的

而这是开了O2的

emm……本蒟蒻也无言以对呀
好了,回归正题,看到题目的标签,高性能,自然而然地想到了快读
相信做这题的大佬们一定知道吧!
快读,从字面上来理解就是____。
答案:快速读入
我们都知道,读入一个字符比读入一个整数要快得多。
那么这就好办了!我们又知道,每一个字符都有它自己的ASCII码,那么,我们是不是只要将输入的字符减去字符0的ASCII码48就可以了呢?
显然是这样。
下面放出快读的代码,有注释,不懂的还可以问问老师和同学。
int read(){//快读,read
,f=;//r为计数器,f为标志,看是整数还是负数
char c=getchar();//读入c
')&&c!='-')//读入非数字、负号的字符
c=getchar();
if(c=='-')//特判c,若c为负号则f置-1,即为负数
f=-,c=getchar();
')//正式读入数字
r=r*+c-',c=getchar();//r由c-0的ASCII码组成
return r*f;//若f为1则为负数,f为-1则为负数
}
很简单吧?
下面,关键代码!要认真哟! 就是干货
大家看到题面,千万不要想当然地认为就是1~n整个加两遍

睁大眼睛,咦?每回 2 ~ n - 1加了两遍,而 1 和 n 只加了一遍?
这就是问题所在! 本蒟蒻一开始就错了这个地方
所以,核心代码重磅来袭!
){
;i<=n&&m>;i++,m-=k)//在for循环中可以有多个条件语句
a[i]+=min(m,k);//上面中间意思是说i≤n且m>0时做后面的条件
;i>=&&m>;i--,m-=k)//后面意思是说在i减1的同时m减k
a[i]+=min(m,k);//为什么用min?因为当m不足k时应减m而不是k
}
这里 for 循环有一点儿难,好好理解
其实,弄清 for 循环的结构也就不难了:

很简单吧?这样解释上面的结构就不成问题了
其实说是橙题,但我觉得实际的难度是绿题
好吧,下面放出代码最终版!
相信听了我解释的同学们都弄懂了吧!
代码来喽!
// luogu-judger-enable-o2
//这是必须得开的,不然,目之所及尽是TLE
#include<cstdio>
#include<queue>
#define maxn 200010//定义maxn为200010
using namespace std;//本蒟蒻代码中不可或缺的成分
int n,k,m,a[maxn],i;
int read(){//快读
,f=;
char c=getchar();
')&&c!='-')
c=getchar();
if(c=='-')
f=-,c=getchar();
')
r=r*+c-',c=getchar();
return r*f;
}
int main(){
n=read(),k=read(),m=read();//read()的正确使用,get一下
){//核心代码
;i<=n&&m>;i++,m-=k)
a[i]+=min(m,k);
;i>=&&m>;i--,m-=k)
a[i]+=min(m,k);
}
;i<=n;i++)//输出a数组
printf("%d ",a[i]);//别忘了空格!
;
}
OI加油!洛谷冲鸭!
题解 P5051 【[COCI2017-2018#7] Timovi】的更多相关文章
- COCI2017/2018 CONTEST #7
Prosjek 显然,越大的数应该越后参与平均数的计算,这样受较小数的影响就小一些 那我们就排个序,贪心的从最小的数开始往大的计算平均数即可 时间复杂度\(O(nlogn)\) Timovi 把分组分 ...
- Week One
2018.11.21: 1.[BZOJ 4868][SHOI 2017] 从后往前枚举最后位置即可,如果$A<B$,用尽可能多的$A$替换$B$操作 Tip:很大的$C$可能爆$longlong ...
- TSOJ--2018 江苏省省赛
[2018 江苏省大学生程序设计大赛] K. 2018 (测试数据范围有扩大) Problem Given a, b, c, d, find out the number of pairs of int ...
- 记 2019蓝桥杯校内预选赛(JAVA组) 赛后总结
引言 好像博客好久没更新了 哈哈哈哈哈 趁现在有空更新一波 不知道还有没有人看 确实该记录一下每天做了什么了 不然感觉有些浑浑噩噩了 比赛介绍 全称: 蓝桥杯全国软件和信息技术专业人才大赛 蓝桥杯 实 ...
- NOIP赛前集训备忘录(含每日总结)(日更?。。。)
NOIP赛前集训备忘录(含每日考试总结) 标签: 有用的东西~(≧▽≦)/~啦啦啦 阅读体验:https://zybuluo.com/Junlier/note/1279194 考试每日总结(这个东西是 ...
- 20190719-FirstZero
这也许也是一个成就吧? First Zero 考试 第一次 爆0 好了好了. T1 你永远不知道你在想什么. 我仿佛想出一个$\Theta(NM\log^2 N)$的$dfs$??? 蒟蒻原地爆炸 T ...
- 2018 ACM-ICPC Asia Beijing Regional Contest (部分题解)
摘要 本文主要给出了2018 ACM-ICPC Asia Beijing Regional Contest的部分题解,意即熟悉区域赛题型,保持比赛感觉. Jin Yong’s Wukong Ranki ...
- The 2018 ACM-ICPC Asia Qingdao Regional Contest(部分题解)
摘要: 本文是The 2018 ACM-ICPC Asia Qingdao Regional Contest(青岛现场赛)的部分解题报告,给出了出题率较高的几道题的题解,希望熟悉区域赛的题型,进而对其 ...
- WC 2018 题解
WC 2018 题解 一些感受.jpg 题目难度相较前些年会相对简单一点?(FAKE.jpg 平均码量符合WC风格?(甚至更多一点 出题人良心! [WC2018] 通道 一个不知道对不对的$\log ...
随机推荐
- Lightoj1007【欧拉函数-素数表】
基础题. PS:注意unsigned long long; 以及%llu #include<bits/stdc++.h> using namespace std; typedef unsi ...
- 蓝桥杯T126(xjb&大数开方)
题目链接:http://lx.lanqiao.cn/problem.page?gpid=T126 题意:中文题诶- 思路:显然被翻转了奇数次的硬币为反面朝上,但是本题的数据量很大,所以O(n^2)枚举 ...
- SpringMVC之DispatcherServlet类
一.DispatcherServlet是什么 DispatcherServlet是前置控制器,配置在web.xml文件中的.拦截匹配的请求,Servlet拦截匹配规则要自已定义,把拦截下来的请求,依据 ...
- LeetCode:灯泡开关2
题目 现有一个房间,墙上挂有 n 只已经打开的灯泡和 4 个按钮.在进行了 m 次未知操作后,你需要返回这 n 只灯泡可能有多少种不同的状态. 假设这 n 只灯泡被编号为 [1, 2, 3 ..., ...
- atom通过remote ftp同步本地文件到远程主机的方法
视频教程:https://ninghao.net/video/3991 搜索 “remote ftp”, 点击 “Package”搜索包,Install”安装 本地打开需要同步的项目目录 创建 rem ...
- shell 经典
使用新写法 这里的新写法不是指有多厉害,而是指我们可能更希望使用较新引入的一些语法,更多是偏向代码风格的,比如 尽量使用func(){}来定义函数,而不是func{} 尽量使用[[]]来代替[] 尽量 ...
- X Samara Regional Intercollegiate Programming Contest DIV2
http://codeforces.com/gym/101341 其实我觉得这份题很不错的,虽然是div2,但是感觉对我挺有帮助(我比较垃圾0.0),还没补完(做的时候一直蒙逼,要补很多题)先写一点点 ...
- 《springcloud 二》微服务动态网关,网关集群
动态网关 实际上是网关和分布式配置中心的整合,通过post手动刷新,生效 动态网关 传统方式将路由规则配置在配置文件中,如果路由规则发生了改变,需要重启服务器.结合整合SpringCloud C ...
- 整数的lqp拆分
题目大意 lqp在为出题而烦恼,他完全没有头绪,好烦啊… 他首先想到了整数拆分.整数拆分是个很有趣的问题.给你一个正整数N,对于N的一个整数拆分就是满足任意m>0,a1 ,a2 ,a3…am&g ...
- SQL server下所有表名及字段名及注释查询
--查询所有表及注释SELECTA.name ,C.valueFROM sys.tables A LEFT JOIN sys.extended_properties C ON C.major_id = ...