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

  (题目搞来搞去太烦了,直接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. Adapter中用不了getWindowManager()

    在写popupwindow的时候一般会获取屏幕的宽高来设置popupwindow的宽高,但是在adapter中用不了getWindowManager(), 但是为什么Activity中就可以用getW ...

  2. 留言板0.3_models设计

    1.编写"message.models": class UserMessage(models.Model): name = models.CharField(max_length= ...

  3. pyhon类继承

    1,python类的继承 class A(object): name ='eason' age = '22' def __init__(self): print '我是A的构造函数!!!' def g ...

  4. leveldb源码分析--SSTable之逻辑结构

    SSTable是leveldb 的核心模块,这也是其称为leveldb的原因,leveldb正是通过将数据分为不同level的数据分为对应的不同的数据文件存储到磁盘之中的.为了理解其机制,我们首先看看 ...

  5. 结合 Redis 实现同步锁

    1.技术方案 1.1.redis的基本命令 1)SETNX命令(SET if Not eXists) 语法:SETNX key value 功能:当且仅当 key 不存在,将 key 的值设为 val ...

  6. python的学习之路day7-socket网络编程

    python基础部分学习完了,时间也已经过了两个月左右,感觉没学到什么,可能是我学习之后忘记的太多了. 由于没钱买书,要是去培训就更没钱了,所以在网上找了一本书,感觉还不错,讲的比较好,比较详细. P ...

  7. malloc,calloc,realloc函数用法,原理及不同解析

    https://blog.csdn.net/lixungogogo/article/details/50887028 一.malloc malloc在MSDN中原型为: void *malloc( s ...

  8. 026.7 网络编程 URL对象

    通过一个程序理解Java的url对象. String str_url = "http://127.0.0.1:8080?name=xxx"; URL url = new URL(s ...

  9. 【转】 最新版chrome谷歌浏览器Ajax跨域调试问题

    Ajax本身是不支持跨域的,而我们在开发工作中,可能会遇到本地开发环境未配置相关代码,需要到其他服务器上获取数据的情况,尤其在用HTML5开发app的过程中,前后台完全分离,使用Ajax进行数据交互, ...

  10. [转]VS2013+简单稀疏光束调整库SSBA配置(64位编译)

    有关SSBA库的资源比较少,我是在Github上搜索下载的,具体的GitHub官方下载地址为:SSBA 下载后在SSBA解压文件夹下新建文件夹build. 打开cmake gui,在source co ...