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

  (题目搞来搞去太烦了,直接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. Echarts柱状图百分比显示

    option = { tooltip: { trigger: 'item', formatter:'{c}%' //这是关键,在需要的地方加上就行了 }, grid: { borderWidth: 0 ...

  2. JUnit手动设计测试方法以及与Randoop的自动生成测试的比较

    手动设计测试 在已有的web project本地目录lib文件夹里导入两个jar文件(版本可不一样):junit-4.12.jar和hamcrest.jar 打开eclipse,导入项目,右击项目选择 ...

  3. android--获取屏幕高宽度工具类

    //获得屏幕相关的辅助类 public class ScreenUtils { private ScreenUtils() { /* cannot be instantiated */ throw n ...

  4. 【疑难杂症04】EOFException异常详解

    最近线上的系统被检测出有错误日志,领导让我检查下问题,我就顺便了解了下这个异常. 了解一个类,当然是先去看他的API,EOFException的API如下: 通过这个API,我们可以得出以下信息: 这 ...

  5. .NET笔试题集(四)

    转载于:http://www.cnblogs.com/ForEvErNoME/archive/2012/09/10/2678727.html 1.请你简单的说明数据库建立索引的优缺点 使用索引可以加快 ...

  6. 调用webservice 的时候没法输入参数

    在web.config的<system.web></system.web>中间加入如下配置节内容<webServices> <protocols> &l ...

  7. 内网arp攻击

    内网arp攻击 环境:一台kali虚拟机(攻击者),一台win7虚拟机(用户) 网络:NAT模式 网段:192.168.41.0/24 网关:192.168.41.2/24 win7的IP地址:192 ...

  8. 利用MSF的MS08_067模块攻击windows server 2003 SP2中文版系统

    一.测试环境 攻击机:kali(NMAP+MSF) 靶机:windows server 2003 SP2 中文版 利用漏洞:MS08_067 二.漏洞描述 MS08-067漏洞的全称为“Windows ...

  9. Windows2008 Server r2 64位显示桌面图标的方法

    点击桌面左下方的开始菜单,在搜索框中输入“icon”,如下图所示: 点击:显示或隐藏桌面上的通用图标,然后弹出如下图: 应用并确定即可!

  10. Secure Shell相关设置

    1.清空known hosts记录 ctrl+shift+j调出js控制台后,输入: term_.command.removeAllKnownHosts()