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 ...
随机推荐
- 腾讯云Centos安装jdk8
1.下载jdk1.8的tar cd /usr/local/src #切换到该目录下 wget url #下载jdk8的tar包 2.下载完成后解压tar包 tar -zxvf jdk-8u152-li ...
- Percona Xtradb Cluster的设计与实现
Percona Xtradb Cluster的设计与实现 Percona Xtradb Cluster的实现是在原mysql代码上通过Galera包将不同的mysql实例连接起来,实现了multi ...
- 【SVN】Linux下svn搭建配置全过程——初学者轻松上手篇
版本控制主要用到的是git和svn,其中svn界面化使用操作简单,本篇简单介绍SVN搭建配置全过程. 1. 下载并安装 yum install subversion 查看版本 svnserve --v ...
- python字典的基本操作
字典的基本方法 什么是字典: 字典是一种 key - value的数据类型,听alex说就像我们上学用的字典,通过笔划,字母来查找对饮页面的详细内容. 语法: id_dict = { 'stu1101 ...
- 一、JSP九大内置对象 二、JAVAEE三层架构和MVC设计模式 三、Ajax
一.JSP九大内置对象###<1>概念 不需要预先申明和定义,可以直接在jsp代码中直接使用 在JSP转换成Servlet之后,九大对象在Servlet中的service方法中对其进行定义 ...
- Oracle 导出用户下的所有索引创建语句
SELECT dbms_lob.substr(dbms_metadata.get_ddl('INDEX', INDEX_NAME))||';' from dba_indexes where owne ...
- T4学习- 1、简介
一.T4简介 T4(Text Template Transformation Toolkit)在 Visual Studio 中,"T4 文本模板"是由一些文本块和控制 ...
- pip安装python模块遇到一直出现retrying的问题
最近安装python模块,遇到这样的一个问题如图所示: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status= ...
- Python基础5
本节内容 1. 函数基本语法及特性 2. 参数与局部变量 3. 返回值 嵌套函数 4.递归 5.匿名函数 6.函数式编程介绍 7.高阶函数 8.内置函数 温故知新 1. 集合 主要作用: 去重 关系测 ...
- BZOJ4894:天赋(矩阵树定理)
Description 小明有许多潜在的天赋,他希望学习这些天赋来变得更强.正如许多游戏中一样,小明也有n种潜在的天赋,但有一些天赋必须是要有前置天赋才能够学习得到的. 也就是说,有一些天赋必须是要在 ...