首页 > 其他分享 >20230308总结

20230308总结

时间:2023-03-08 23:24:07浏览次数:44  
标签:总结 return 20230308 max sum mid int ans

总之就是很寄,很寄。

T1:想出来前缀和了 ,但是没想出来怎么优化,于是心态没了,于是就gg了,后面也没想暴力,我很菜。

T1 可以 dfs mn dp过 nm 二分过 但是我一个没想出来 我很废物

#include<bits/stdc++.h>
using namespace std;
const int N=1e3+7;
int dp[N][N];
int dp1[N][N],dp2[N][N];
int a[N][N];
int sum[N][N];
int qqjh(int y1,int x1,int y2,int x2){
	return sum[x2][y2]+sum[x1-1][y1-1]-sum[x1-1][y2]-sum[x2][y1-1];
}
int ans=-1;
int n,m;
//算本身 
int main(){
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			scanf("%d",&a[i][j]);
			dp1[i][j]=a[i][j]*(dp1[i-1][j]+1);
			dp2[i][j]=a[i][j]*(dp2[i][j-1]+1);
		}
	}
//	printf("最多向上延伸:%d 最多向左延伸:%d\n",dp1[4][6],dp2[4][6]);
//	printf("最多向上延伸:%d 最多向左延伸:%d\n",dp1[4][6]);
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			sum[i][j]=sum[i-1][j]+sum[i][j-1]-sum[i-1][j-1]+a[i][j];
		}
	}

	//printf("%d",qqjh(3,2,6,4));
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			int k = i - dp1[i][j] + 1 , l = j - dp2[i][j] + 1;
			int len1=dp1[i][j];
			int len2=dp2[i][j];
//			int sum1=qqjh(j-len1+1,i-len2+1,j,i);
//			int sum2=qqjh(j-len1,i-len2,j+1,i+1);
			int sum1=qqjh(l,k,j,i);
			int sum2=qqjh(l-1,k-1,j+1,i+1);
			if(sum1==sum2&&sum1==(i-k+1)*(j-l+1)) ans=max(ans,len1*len2);
			//printf("当前点位置:i:%d j:%d len1:%d len2:%d sum1:%d sum2:%d \n",i,j,len1,len2,sum1,sum2);
		}
		
	}
	printf("%d",ans);
	return 0;
}

后面基本就没咋想了捏,考试的时候切记要打暴力然后想不出来换换脑子,我就是指向了T1然后钻进去了 后面没想出来 疯狂摆 无语了
T2:ST表模板

#include<bits/stdc++.h>
using namespace std;
const int N=1e6+7;
int b[N];
int read(){
	int tmp;scanf("%d",&tmp);return tmp;
}
int max_[N][21];
int work(int l,int r){
    int k=log2(r-l+1);
    return min(max_[l][k],max_[r-(1<<k)+1][k]);
}
void dfs(int st,int end){
	if(st>end) return;
	int ans=work(st,end);
	int mid=b[ans];
	printf("%d ",mid);
	dfs(st,mid-1);
	dfs(mid+1,end);
}
int main(){
	freopen("tree.in","r",stdin);
	freopen("tree.out","w",stdout);
	int n=read();
    for(int i=1;i<=n;i++){
    	b[i]=read();
    	max_[b[i]][0]=i;
	}
	//for(int i=1;i<=n;i++) printf("%d ",max_[i][0]);
    for(int j=1;j<=21;j++){
        for(int i=1;i+(1<<j)-1<=N;i++){
            max_[i][j]=min(max_[i][j-1],max_[i+(1<<(j-1))][j-1]);
        }
    }
    dfs(1,n);
	return 0;
    
}

T3:dp 但我大概想明白了 还差一点 代填坑 思路有了 代码还差点

T4:子序列 其实是可以50pts的 优化可以a[i] 作为下标 开1e6;

T5:不会

T6:删除代码

赋值语句性质:只要后面有赋值,就无效性,因而从后往前枚举 赋值语句
然后 正权值不删除 负权值与堆顶比较同时考虑 是否超出k的限制
最后记得一定要ans赋初值!!!!!否则就会很惨
还要记得代码顺序和逻辑 否则你会只能得一半分

这题要维护一个长度为k-m(就是删除后面赋值语句的次数)

#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=1000010;
struct node{int opt,y;}a[N];
priority_queue<long long> q;
int n,k;
int ans=0,x=-1e15;
signed main(){
	scanf("%lld%lld",&n,&k);
	a[0].opt=1;
	for(int i=1;i<=n;i++) scanf("%lld%lld",&a[i].opt,&a[i].y);
	for(int i=n;i>=0;i--){
		if(a[i].opt==1){
			x=max(x,ans+a[i].y);
			if(k<=0) break;
			k--;
			while(q.size()>k){
				ans+=q.top();
				q.pop();
			}
			
			
			//break;
		}
		else{
			ans+=a[i].y;
			if(a[i].y<0){
				if(q.size()<k){
					q.push(a[i].y);
					ans-=a[i].y;
				}
				else if(k&&q.top()>a[i].y){
					ans+=q.top();
					q.pop();
					ans-=a[i].y;
					q.push(a[i].y);
				}
			}
		}
	}
	printf("%lld",x);
	return 0;
}

标签:总结,return,20230308,max,sum,mid,int,ans
From: https://www.cnblogs.com/Zimo233/p/17196659.html

相关文章

  • 3-8总结
    今天认识了关于安卓的一些东西,应用框架层以Java类的形式为应用程序提供许多高级的服务。应用程序开发者被允许在应用中使用这些服务。活动管理者-控制应用程序生命......
  • @Resource、@Autowired和@Inject的对比与总结
    @Resource@Target({TYPE,FIELD,METHOD})@Retention(RUNTIME)@Repeatable(Resources.class)public@interfaceResource{Stringname()default"";Stri......
  • 3.08今日总结
    今天学习了连接数据库查询功能实现登录功能packagecom.example.helloworld;importstaticandroid.widget.Toast.LENGTH_SHORT;importstaticcom.example.helloworl......
  • 项目中多级缓存设计实践总结
    缓存的重要性简而言之,缓存的原理就是利用空间来换取时间。通过将数据存到访问速度更快的空间里以便下一次访问时直接从空间里获取,从而节省时间。我们以CPU的缓存体系为例......
  • 2023、03、08学习总结
    在学页面美化的时候遇到乱码小问题:以下是乱码代码:<!DOCTYPEhtml><htmllang="zh-CN"><head><metacharset="UTF-8"><metahttp-equiv="Content-Type"cont......
  • [总结]部分套路总结
    前言:套路题做不出来,但机房巨巨能一眼秒,遂决定写这个。看见“互质”想分解质因数,一个数中大于根号倍的质因数不会超过一个。例:P8292,0308考试题。......
  • 每日学习总结_20230308
    今天的JavaWeb学习主要集中在Servlet和JSP的使用上。我学习了如何创建一个Servlet并且在Web应用程序中进行部署和调试。同时,我还学习了如何在JSP中使用Java代码,并了解了JSP......
  • 2023.3.8每日总结
    javaweb简单的增删改查之“通过姓名查找,查询所有信息” 1.方法/**查看全部信息*/publicList<Member>selectByName(Stringname){//......
  • 3月8号总结
    1.Error与Exception的区别Error是程序无法处理的错误,比如OutOfMemoryError、ThreadDeath等。这些异常发生时,Java虚拟机(JVM)一般会选择线程终止。此类异常是程序的致命异......
  • 今日总结
    今天继续联系了javaweb的增删改查<%@pagelanguage="java"contentType="text/html;charset=utf-8"pageEncoding="utf-8"%><!DOCTYPEhtmlPUBLIC"-//W3C//......