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 按极角排序,按顺序枚举,显然距离最远的点是单调的,线性时间可解出答案. 大包子的束缚 题目描 ...
随机推荐
- Java开发工程师(Web方向) - 03.数据库开发 - 第5章.MyBatis
第5章--MyBatis MyBatis入门 Abstract: 数据库框架的工作原理和使用方法(以MyBatis为例) 面向对象的世界与关系型数据库的鸿沟: 面向对象世界中的数据是对象: 关系型数据 ...
- leetcode-回文链表
请判断一个链表是否为回文链表. 示例 1: 输入: 1->2 输出: false 示例 2: 输入: 1->2->2->1 输出: true 进阶:你能否用 O(n) 时间复杂 ...
- 【halcon】学习记录
图像采集和二值化等处理 * Image Acquisition : Code generated by Image Acquisition open_framegrabber (, , , , , , ...
- 动画效果 ObjectAnimator
学习了一下动画效果的使用,做一下笔记 ImageView imageView = findViewById(R.id.imageView); ObjectAnimator.ofFloat(imageV ...
- Kali信息收集-DNS
1.whois查询 直接在终端输入whois 域名 2.查找dns服务器 (1)host (2)dig (3)nslookup 3.域传输 4.域名枚举 (1)dnsdict6 kali没有集成这款工 ...
- Thunder团队第五周 - Scrum会议1
Scrum会议1 小组名称:Thunder 项目名称:i阅app Scrum Master:杨梓瑞 工作照片: 邹双黛在照相,所以图片中没有该同学. 参会成员: 王航:http://www.cnblo ...
- Thunder团队第二周 - Scrum会议7
Scrum会议7 小组名称:Thunder 项目名称:i阅app Scrum Master:杨梓瑞 工作照片: 参会成员: 王航:http://www.cnblogs.com/wangh013/ 李传 ...
- 异常概念和处理机制,try-catch-finally,throw和throws,自定义异常
异常概念和处理机制 什么是异常? 所谓异常就是指在程序运行的过程中发生的一些不正常事件.(如除0溢出,数组下标越界,所要读取的文件不存在); 异常导致的后果? Java程序的执行过程中如出现异常事件, ...
- databales详解(一)
学习可参考:http://www.guoxk.com/node/jquery-datatables http://yuemeiqing2008-163-com.iteye.com/blog/20069 ...
- CNN之间的计算
参考内容 1.网易云课堂微专业——深度学习—04第一周:http://mooc.study.163.com/smartSpec/detail/1001319001.htm 2.CNN基础介绍:http ...