以后平时练习还是写一写吧。

  (题目搞来搞去太烦了,直接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初二初三第一次膜你赛的更多相关文章

  1. EZ 2017 12 30 2018noip第二次膜你赛

    去年的比赛了,然而今天才改好. 总体难度适中,有大佬AK. 主要是自己SB第二题没想出来,然后又是可怜的100来分. T1 一道二分+数学的题目. 我们可以二分叫的次数,然后用公式(等差数列,公差都是 ...

  2. HW 2017 12 17可禾大佬神题

    好不容易搞来的题目,不写一写怎么行呢. 不过难度真心不高(一小时K掉),都是老题+暴力题,没有欧洲玄学. 再说一句,这试卷是叶可禾出的吧. T1 好老的题目,看到有多组数据我还怕了,以为有更流弊的算法 ...

  3. 2017.12.17 servlet 生命周期

    servlet生命周期一般分为4个: 加载----实例化------服务-----销毁 (1)加载: 加载一般是在运行tomcat容器时来完成,将servlet类加载到tomcat中,或者是客户端发来 ...

  4. 更新日志(建议升级到2016.12.17) && 更新程序的方法

    更新程序的方法: 1,在控制面板里点击备份当前数据库文件到磁盘,把当天获取的信息从内存写到磁盘/存储卡.2,下载最新版的源码 wget -O "infopi.zip" " ...

  5. Gitlab一键端的安装汉化及问题解决(2017/12/14目前版本为10.2.4)

    Gitlab的安装汉化及问题解决 一.前言 Gitlab需要安装的包太TM多了,源码安装能愁死个人,一直出错,后来发现几行命令就装的真是遇到的新大陆一样... ... 装完之后感觉太简单,加了汉化补丁 ...

  6. 2017.12.25 Mybatis物理分页插件PageHelper的使用(二)

    参考来自: 官方文档的说明:https://github.com/pagehelper/Mybatis-PageHelper/blob/master/wikis/zh/HowToUse.md 上篇博客 ...

  7. 2017.9.17校内noip模拟赛解题报告

    预计分数:100+60+60=220 实际分数:100+60+40=200 除了暴力什么都不会的我..... T1 2017.9.17巧克力棒(chocolate) 巧克力棒(chocolate)Ti ...

  8. 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 ...

  9. 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 ...

随机推荐

  1. ubuntu 搭建samba共享方案

    1.samba服务安装搭建 sudo apt-get install samba sudo vim /etc/samba/smb.conf workgroup = szsoft 设置用户密码登陆方式s ...

  2. 2016年,谁是最受欢迎的 Java EE 服务器?

    [编者按]本文作者为性能监控工具 Plumbr 创始人 Nikita Salnikov-tarnovski,主要介绍2016年度最广为使用的 Java EE 容器及其排名变化情况.本文系国内 ITOM ...

  3. 使用 Azure PowerShell 模块创建和管理 Windows VM

    Azure 虚拟机提供完全可配置的灵活计算环境. 本教程介绍 Azure 虚拟机的基本部署项目,例如选择 VM 大小.选择 VM 映像和部署 VM. 你将学习如何执行以下操作: 创建并连接到 VM 选 ...

  4. 表格排序(tablesorter)

    1.在html页面的head中引用 <script src="/static/Bootstrap/js/jquery/jquery.tablesorter.min.js"&g ...

  5. python3.6和pip3安装

    CenOS7 安装依赖环境 yum -y install openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc 编译 ...

  6. ShellCode初体验

    写在前面的话: ShellCode是一门艺术,就像围棋手门追求的“神之一手”,今天就来初探一下这让人疯狂的艺术: 零.代码0 相信手写opcode,目前很少有人干了,其实,也确实已经没有这个必要了,毕 ...

  7. 在eclipse中方便的比较各个语言 资源文件—jinto的安装

    一.下载与安装jinto Eclipse插件的插件,用来解决资源文件的国际化问题 用jinto编辑器打开properties文件后,就可以方便的建立出各国和各种语言的资源文件,同时可以方便的对比书写各 ...

  8. VS2008 开发wince程序设备调试

    今天之前开发的一个wince程序,用户反馈报错,由于很久没玩了,从用户那里拿来设备.结果怎么调试的忘记了.在网上找了些资料,自己有摸索了一下.才搞定. 1.安装Microsoft ActiveSync ...

  9. JAVA-最常用的A题语法

    输出 System.out.println(""); if 语句 if(布尔表达式) { //如果布尔表达式为true将执行的语句 } if...else... 语句 if(布尔表 ...

  10. O​r​a​c​l​e​ ​1​1​g​ ​客​户​端​安​装​及​p​l​s​q​l​配​置

    百度文库 http://wenku.baidu.com/link?url=7KyIHuoeUf1EvD5uClFNugDIT9s_dU7bu5_2XhQK4SLarHfG_dBwzhMooedQcsn ...