X day3
题目
官方题解
T1:
一道水题
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<stack>
using namespace std;
inline int read(){
int f=,ans=;char c;
while(c<''||c>''){if(c=='-')f=-;c=getchar();}
while(c>=''&&c<=''){ans=ans*+c-'';c=getchar();}
return f*ans;
}
char str,str1[];
stack<int> sta;
int ans;
int main(){
scanf("%s",str1+);
int len=strlen(str1+);
for(int i=;i<=len;i++){
if(str1[i]=='('){
sta.push();
}else{
if(sta.empty()) ans++,sta.push();
else sta.pop();
}
}
cout<<ans+sta.size()/;
}
T2:
线段树优化贪心,我们可以先将他们的末尾排序,然后依次看一看是否能放
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<algorithm>
#define int long long
using namespace std;
inline int read(){
int f=,ans=;char c;
while(c<''||c>''){if(c=='-')f=-;c=getchar();}
while(c>=''&&c<=''){ans=ans*+c-'';c=getchar();}
return f*ans;
}
int n,m,k;
struct node{
int u,v,w;
}x[];
int sum;
int maxn[],ans[];
void pushdown(int k,int l,int r){
int mid=l+r>>;
if(ans[k]!=){
ans[k<<]+=ans[k];
ans[k<<|]+=ans[k];
maxn[k<<]+=ans[k];
maxn[k<<|]+=ans[k];
ans[k]=;
}return;
}
int query(int k,int l,int r,int x,int y){
if(x<=l&&r<=y) return maxn[k];
int mid=l+r>>,mmaxn=;
pushdown(k,l,r);
if(x<=mid) mmaxn=max(mmaxn,query(k<<,l,mid,x,y));
if(mid<y) mmaxn=max(mmaxn,query(k<<|,mid+,r,x,y));
maxn[k]=max(maxn[k<<],maxn[k<<|]);
return mmaxn;
}
void update(int k,int l,int r,int x,int y,int w){
if(x<=l&&r<=y){ans[k]+=w;maxn[k]+=w;return;}
pushdown(k,l,r);
int mid=l+r>>;
if(x<=mid) update(k<<,l,mid,x,y,w);
if(mid<y) update(k<<|,mid+,r,x,y,w);
maxn[k]=max(maxn[k<<],maxn[k<<|]);
return;
}
bool cmp(node x1,node x2){return x1.v<x2.v;}
signed main(){
m=read(),n=read(),k=read();
for(int i=;i<=m;i++) x[i].u=read(),x[i].v=read(),x[i].w=read();
sort(x+,x+m+,cmp);
for(int i=;i<=m;i++){
int res=query(,,n,x[i].u,x[i].v),ans=;
if(res>=k) continue;
if(res+x[i].w<=k) ans=x[i].w;
else ans=k-res;
update(,,n,x[i].u,x[i].v-,ans);
sum+=ans;
}
cout<<sum;
return ; }
T3:
我们容易想到一维情况是最大子序列,然后二位也是如此。每次确定$[l,r]$表示当前子矩阵在$l-r$行的最大值,然后二维的像一维那样搞。但是这种可以删除一个数,所以我们需要在定一维表示是否删除一个数
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
inline int read(){
int f=,ans=;char c;
while(c<''||c>''){if(c=='-')f=-;c=getchar();}
while(c>=''&&c<=''){ans=ans*+c-'';c=getchar();}
return f*ans;
}
int n,m,k,dp[][],a[][],minv[],s[][],sum[],maxn;
int main(){
n=read(),m=read(),k=read();
for(int i=;i<=n;i++){
for(int j=;j<=m;j++) a[i][j]=read(),s[i][j]=s[i-][j]+s[i][j-]-s[i-][j-]+a[i][j];
}/*l i R j*/
for(int i=;i<=n;i++){//L
memset(minv,/,sizeof(minv));
for(int j=i;j<=n;j++){//R
memset(dp,,sizeof(dp));
sum[]=;
for(int kk=;kk<=m;kk++){//INIT
minv[kk]=min(minv[kk],a[j][kk]);
sum[kk]=s[j][kk]-s[i-][kk]-s[j][kk-]+s[i-][kk-];
}
for(int kk=;kk<=m;kk++){
dp[kk][]=max(dp[kk-][]+sum[kk],sum[kk]);
dp[kk][]=max(dp[kk-][]+sum[kk],max(dp[kk-][]+sum[kk]-minv[kk]+k,sum[kk]-minv[kk]+k));
maxn=max(maxn,max(dp[kk][],dp[kk][]));
}
}
}
cout<<maxn;
}
X day3的更多相关文章
- 冲刺阶段day3
day3 项目进展 今天周三,我们五个人难得的一整个下午都能聚在一起.首先我们对昨天的成果一一地查看了一遍,并且坐出了修改.后面的时间则是做出 登录界面的窗体,完善了登录界面的代码,并且实现了其与数据 ...
- python笔记 - day3
python笔记 - day3 参考:http://www.cnblogs.com/wupeiqi/articles/5453708.html set特性: 1.无序 2.不重复 3.可嵌套 函数: ...
- python_way,day3 集合、函数、三元运算、lambda、python的内置函数、字符转换、文件处理
python_way,day3 一.集合 二.函数 三.三元运算 四.lambda 五.python的内置函数 六.字符转换 七.文件处理 一.集合: 1.集合的特性: 特性:无序,不重复的序列 如果 ...
- Spark菜鸟学习营Day3 RDD编程进阶
Spark菜鸟学习营Day3 RDD编程进阶 RDD代码简化 对于昨天练习的代码,我们可以从几个方面来简化: 使用fluent风格写法,可以减少对于中间变量的定义. 使用lambda表示式来替换对象写 ...
- Spark Tungsten揭秘 Day3 内存分配和管理内幕
Spark Tungsten揭秘 Day3 内存分配和管理内幕 恭喜Spark2.0发布,今天会看一下2.0的源码. 今天会讲下Tungsten内存分配和管理的内幕.Tungsten想要工作,要有数据 ...
- Catalyst揭秘 Day3 sqlParser解析
Catalyst揭秘 Day3 sqlParser解析 今天我们会进入catalyst引擎的第一个模块sqlparser,它是catalyst的前置模块. 树形结构 从昨天的介绍我们可以看到sqlPa ...
- Kakfa揭秘 Day3 Kafka源码概述
Kakfa揭秘 Day3 Kafka源码概述 今天开始进入Kafka的源码,本次学习基于最新的0.10.0版本进行.由于之前在学习Spark过程中积累了很多的经验和思想,这些在kafka上是通用的. ...
- python s12 day3
python s12 day3 深浅拷贝 对于 数字 和 字符串 而言,赋值.浅拷贝和深拷贝无意义,因为其永远指向同一个内存地址. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ...
- Day3 - Python基础3 函数、递归、内置函数
Python之路,Day3 - Python基础3 本节内容 1. 函数基本语法及特性 2. 参数与局部变量 3. 返回值 嵌套函数 4.递归 5.匿名函数 6.函数式编程介绍 7.高阶函数 8. ...
- 三校联考 Day3
三校联考 Day3 大水题 题目描述:给出一个圆及圆上的若干个点,问两个点间的最远距离. solution 按极角排序,按顺序枚举,显然距离最远的点是单调的,线性时间可解出答案. 大包子的束缚 题目描 ...
随机推荐
- CSS选择器语法&示例
CSS3 选择器 在 CSS 中,选择器是一种模式,用于选择需要添加样式的元素. "CSS" 列指示该属性是在哪个 CSS 版本中定义的.(CSS1.CSS2 还是 CSS3.) ...
- git配置github链接
1.百度git官网-下载最新版git 2.一路默认下一步安装 3.打开 git bash here 命令行 4.注册github账号(用自己的邮箱就可以,不会英文可以用谷歌翻译)注册成功后建立项目 5 ...
- Linux命令应用大词典-第26章 模块和内核管理
26.1 lsmod:显示内核中模块的状态 26.2 get_module:查看内核模块详细信息 26.3 modinfo:显示内核模块信息
- TPO-16 C1 Reserve the room for a rehearsal
TPO-16 C1 Reserve the room for a rehearsal 第 1 段 1.Listen to a conversation between a Student and a ...
- 关于Python 中的 if 语句
学习Python,最开始我们都是先从函数学起,Python教程中有很多函数,if算是其中之一. 可能最为人所熟知的编程语句就是 if 语句了.例如: >>> >>> ...
- Java学习笔记-11.运行期间类型鉴定
1.Class对象的getClasses()方法获取的是该类中所有的公共的内部类,以及从父类,父接口继承来的内部类.getinterfaces()方法返回类继承的所有接口. import javax. ...
- Linux命令详解----ln
ln命令 ln命令为文件或文件夹创建连接,连接类型有硬链接和符号连接两种,符号连接需要使用"-s"选项 ln语法 ln [选项] 参数 使用 ln --help查看可用选项 [ro ...
- Redis+Keepalived高可用方案详细分析
背景 目前,Redis集群的官方方案还处在开发测试中,未集成到稳定版中.且目前官方开发中的Redis Cluster提供的功能尚不完善(可参考官方网站或http://www.redisdoc.com/ ...
- 《学习OpenCV》课后习题解答6
题目:(P104) 使用cvCmp()创建一个掩码.加载一个真实的图像.使用cvsplit()将图像分割成红,绿,蓝三个单通道图像. a.找到并显示绿图. b.克隆这个绿图两次(分别命名为clone1 ...
- PAT-2018年冬季考试-乙级
1091 N-自守数 代码: #include <bits/stdc++.h> using namespace std; int T; int A(int a) { ; while(a) ...