EZ 2017 12 17初二初三第一次膜你赛
以后平时练习还是写一写吧。
(题目搞来搞去太烦了,直接PDF存起来)
T1 水题(???),主要是数据水,正解是设一个阙值,然而根本没人打。(暴力出奇迹)
CODE
#include<cstdio>
using namespace std;
inline void read(int &x)
{
x=; char ch=getchar();
while (ch<''||ch>'') ch=getchar();
while (ch>=''&&ch<='') x=x*+ch-'',ch=getchar();
}
const int N=1e5+;
int sum,a[N],n,t,p,i,q;
int main()
{
freopen("a.in","r",stdin); freopen("a.out","w",stdout);
read(n); read(t);
for (i=;i<n;++i)
read(a[i]);
while (t--)
{
sum=;
read(q); read(p);
for (i=q;i<n;i+=p)
sum+=a[i];
printf("%d\n",sum);
}
return ;
}
T2 猥琐数学题(???)一定要想到,如果有解那么h[i]+l[j]≡k-a[i][j](mod k) 然后可以每次枚举第一列的数来当做这一列的操作次数,然后由此递推下去。
因为一定有解,所以取最小值即可。
(其实当时我打了BFS然后帅气爆0,连5*5的图都搜不出来)
CODE
#include<cstdio>
#include<cstring>
using namespace std;
typedef long long LL;
const int N=;
LL a[N][N],h[N],l[N],ans_h[N],ans_l[N],n,m,i,j,ans=-,sum,k,p;
inline void read(LL &x)
{
x=; char ch=getchar();
while (ch<''||ch>'') ch=getchar();
while (ch>=''&&ch<='') x=x*+ch-'',ch=getchar();
}
inline void copy()
{
for (int i=;i<=n;++i)
ans_h[i]=h[i];
for (int j=;j<=m;++j)
ans_l[j]=l[j];
}
int main()
{
freopen("b.in","r",stdin); freopen("b.out","w",stdout);
read(n); read(m); read(k);
for (i=;i<=n;++i)
for (j=;j<=m;++j)
read(a[i][j]),a[i][j]=(k-a[i][j]%k)%k;
for (p=;p<=m;++p)
{
memset(h,,sizeof(h));
memset(l,,sizeof(l));
h[]=a[][p]; sum=h[];
for (i=;i<=n;++i)
l[i]=(a[][i]-h[]+k)%k,sum+=l[i];
for (j=;j<=m;++j)
h[j]=(a[j][]-l[]+k)%k,sum+=h[j];
if (ans==-||sum<ans) ans=sum,copy();
}
printf("%lld\n",ans);
for (i=;i<=n;++i)
printf("%lld ",ans_h[i]); putchar('\n');
for (j=;j<=m;++j)
printf("%lld ",ans_l[j]); putchar('\n');
return ;
}
(注意开 long long)
T3 爆力+小优化即可轻松跑过(然而我想出了优化却把暴力的一个很重要的数组删掉了)
注意到一个位置上的存水量即为max(min(l[i],r[i])-a[i],0); l[i],r[i]是左(右)两边(不包括自己)的最高高度,a[i]是i位置上的墙的高度。
l[i],r[i]可以预处理,每次有墙的高度变化的时候就像左右更新l[i],r[i],如果发现高度没有其它墙高直接break即可(important)。
在上次的基础计算的时候再开一个last[i]记录上一次操作后剩下的水量(后来就是作死删掉了这个数组)
CODE
#include<cstdio>
using namespace std;
typedef long long LL;
inline void read(LL &x)
{
x=; char ch=getchar();
while (ch<''||ch>'') ch=getchar();
while (ch>=''&&ch<='') x=x*+ch-'',ch=getchar();
}
inline LL max(LL a,LL b) { return a>b?a:b; }
inline LL min(LL a,LL b) { return a<b?a:b; }
const LL N=1e5+;
LL a[N],l[N],r[N],last[N],n,q,x,y,t,w,i;
int main()
{
freopen("c.in","r",stdin); freopen("c.out","w",stdout);
w=;
read(n); read(q);
for (i=;i<=n;++i)
read(a[i]);
l[]=r[n]=;
for (i=;i<=n;++i)
l[i]=max(l[i-],a[i-]);
for (i=n-;i;--i)
r[i]=max(r[i+],a[i+]);
for (i=;i<=n;++i)
w+=last[i]=max(min(l[i],r[i])-a[i],);
while (q--)
{
char ch=getchar();
while (ch!='P'&&ch!='U') ch=getchar();
if (ch=='P') { printf("%lld\n",w); getchar(); } else
{
read(x); read(y);
a[x]+=y;
if (last[x]>y) w-=y,last[x]-=y; else w-=last[x],last[x]=;
for (i=x-;i;--i)
if (a[x]>r[i]) w+=max(min(l[i],a[x])-a[i],)-max(min(l[i],r[i])-a[i],),last[i]=max(min(l[i],a[x])-a[i],),r[i]=a[x]; else break;
for (i=x+;i<=n;++i)
if (a[x]>l[i]) w+=max(min(a[x],r[i])-a[i],)-max(min(l[i],r[i])-a[i],),last[i]=max(min(a[x],r[i])-a[i],),l[i]=a[x]; else break;
}
}
return ;
}
EZ 2017 12 17初二初三第一次膜你赛的更多相关文章
- EZ 2017 12 30 2018noip第二次膜你赛
去年的比赛了,然而今天才改好. 总体难度适中,有大佬AK. 主要是自己SB第二题没想出来,然后又是可怜的100来分. T1 一道二分+数学的题目. 我们可以二分叫的次数,然后用公式(等差数列,公差都是 ...
- HW 2017 12 17可禾大佬神题
好不容易搞来的题目,不写一写怎么行呢. 不过难度真心不高(一小时K掉),都是老题+暴力题,没有欧洲玄学. 再说一句,这试卷是叶可禾出的吧. T1 好老的题目,看到有多组数据我还怕了,以为有更流弊的算法 ...
- 2017.12.17 servlet 生命周期
servlet生命周期一般分为4个: 加载----实例化------服务-----销毁 (1)加载: 加载一般是在运行tomcat容器时来完成,将servlet类加载到tomcat中,或者是客户端发来 ...
- 更新日志(建议升级到2016.12.17) && 更新程序的方法
更新程序的方法: 1,在控制面板里点击备份当前数据库文件到磁盘,把当天获取的信息从内存写到磁盘/存储卡.2,下载最新版的源码 wget -O "infopi.zip" " ...
- Gitlab一键端的安装汉化及问题解决(2017/12/14目前版本为10.2.4)
Gitlab的安装汉化及问题解决 一.前言 Gitlab需要安装的包太TM多了,源码安装能愁死个人,一直出错,后来发现几行命令就装的真是遇到的新大陆一样... ... 装完之后感觉太简单,加了汉化补丁 ...
- 2017.12.25 Mybatis物理分页插件PageHelper的使用(二)
参考来自: 官方文档的说明:https://github.com/pagehelper/Mybatis-PageHelper/blob/master/wikis/zh/HowToUse.md 上篇博客 ...
- 2017.9.17校内noip模拟赛解题报告
预计分数:100+60+60=220 实际分数:100+60+40=200 除了暴力什么都不会的我..... T1 2017.9.17巧克力棒(chocolate) 巧克力棒(chocolate)Ti ...
- centos 6.5 升级内核 linux 3.12.17 (笔记 实测)
环境: 系统硬件:vmware vsphere (CPU:2*4核,内存2G) 系统版本:Linux centos 2.6.32-431.el6.x86_64(Centos-6.5-x86_64-mi ...
- centos 6.5 升级内核 linux 3.12.17
环境: 系统硬件:vmware vsphere (CPU:2*4核,内存2G) 系统版本:Linux centos 2.6.32-431.el6.x86_64(Centos-6.5-x86_64-mi ...
随机推荐
- OpenCV 线条及形状
1.线条 # dst 相当于画板 dst=np.zeros((300,300,3),np.uint8) # #参1 图像 参2 起始点 参3 结束点 参4 颜色 line=cv2.line(dst,( ...
- LeetCode题解之 Continuous Subarray Sum
1.题目描述 2.循环计算即可 3.代码 bool checkSubarraySum(vector<int>& nums, int k) { ){ return false ; } ...
- CREATE INDEX (Transact-SQL) 语法 (转载)
CREATE [ UNIQUE ] [ CLUSTERED | NONCLUSTERED ] INDEX index_name ON <object> ( column [ ASC | D ...
- Android图形显示之硬件抽象层Gralloc【转】
https://blog.csdn.net/yangwen123/article/details/12192401 FrameBuffer驱动程序分析文中介绍了Linux系统下的显示驱动框架,每个显示 ...
- 关于QT的QCombox的掉坑出坑
最近项目中开发在用到QCombox,然而在开发中,踩到了一个坑,花了一个晚上,一直在想,好在最后找到问题所在了. 这是业务的流程.直接说重点:QCombox在下拉窗更新数据的时候,会默认把下拉窗的第一 ...
- Georgia Tech Online Master of Science in Computer Science 项目经验分享
Georgia Tech Online Master of Science in Computer Science 项目经验分享 Posted on 2014/04/22 项目关键词:工科名校,计算机 ...
- 【转】Linux思维导图
[原文]https://www.toutiao.com/i6591690511763898888/ 1.Linux学习路径: 2.Linux桌面介绍: 3.FHS(文件系统目录标准): 4.Linux ...
- fedora、centos、rhel安装Adobe Flash Player 28
切换到root用户 添加Adobe Repository Adobe Repository 32-bit x86 rpm -ivh http://linuxdownload.adobe.com/ado ...
- 【2017下集美大学软工1412班_助教博客】团队编程2-需求分析&原型设计团队成绩公示
作业要求 团队作业2:需求分析&原型设计 团队评分结果 团队名称 作业标题 Total DY SM NABCD FG YX GF SP PHILOSOPHER 团队作业2--需求分析 5.5 ...
- PyQt5--QFontDiaglog
# -*- coding:utf-8 -*- ''' Created on Sep 17, 2018 @author: SaShuangYiBing Comment: ''' import sys f ...