首页 > 其他分享 >11.14 解题报告

11.14 解题报告

时间:2022-11-14 22:48:14浏览次数:53  
标签:得分 报告 int 11.14 min js 解题 ans pts

T1

考场用时:\(1\) h
期望得分:\(70\) pts
实际得分:\(20\) pts
有一个地方的 \(m\) 写成了 \(n\),直接 T 飞。
对于 \(70\) 分的做法,考虑设 \(dp_{i,j}\) 表示分了 \(i\) 段,现在到 \(j\) 的最小代价,枚举 \(i\) 转移,复杂度 \(O(n^2 m)\)。
发现其实段数是没必要枚举的,直接压掉一维,复杂度 \(O(nm)\),可以得 \(100\) pts。

int dp[20001],st[20001][21][2],lg[MAX];
inline int w(int l,int r){
	int len=lg[r-l+1];
	int mn=min(st[l][len][0],st[r-(1ll<<len)+1][len][0]);
	int mx=max(st[l][len][1],st[r-(1ll<<len)+1][len][1]);
	return mx-mn;
}
signed main(){
	int n=read(),m=read(),K=read();
	for(int i=1;i<=n;i++) dp[i]=1e18;
	for(int i=1;i<=n;i++) st[i][0][0]=st[i][0][1]=read();
	lg[0]=-1;
	for(int i=1;i<=n;i++) lg[i]=lg[i>>1]+1;
	for(int i=1;i<=20;i++)
		for(int j=1;j+(1ll<<i)-1<=n;j++){
			st[j][i][0]=min(st[j][i-1][0],st[j+(1ll<<(i-1))][i-1][0]);
			st[j][i][1]=max(st[j][i-1][1],st[j+(1ll<<(i-1))][i-1][1]);
		}
	dp[0]=0;
		for(int j=1;j<=n;j++){
			for(int k=max(0ll,j-m);k<j;k++)
				dp[j]=min(dp[j],dp[k]+w(k+1,j)*(j-k)+K);
		}
	cout<<dp[n];
	return 0;
}

T2

考场用时:\(30\) min
期望得分:\(30\) pts
实际得分:\(0\) pts
爆搜写假了,考虑贪心,对于若干个连续的 \(1\),如果只有 \(1\) 个,显然直接加上是最优的,对于答案的贡献是 \(1\),如果有 \(\ge 2\) 个 \(1\),假设有 \(x\) 个 \(1\),此时可以花费 \(1\) 的代价构造出 \(1\) 后面跟着 \(x\) 个 \(0\),然后再减 \(1\),此时代价是 \(2\),优于一个一个加。

具体实现可以从头到尾扫一遍字符串,记录当前连续 \(1\) 的个数,考虑反过来,按照以上原则,把 \(1\) 全部消掉。

char s[MAX];
signed main(){
	int n=read();
	scanf("%s",s+1);
	int js=0,ans=0;
	for(int i=1;i<=n;i++){
		if(s[i]=='1') js++;
		else{
			if(js==1) ans++,js=0;
			else if(js>1) ans++,js=1;
		}
	}
	ans+=min(js,2ll);
	cout<<ans;
	return 0;
}

标签:得分,报告,int,11.14,min,js,解题,ans,pts
From: https://www.cnblogs.com/wapmhac/p/16890757.html

相关文章

  • Vulnhub Blogger靶机解题过程
    Blogger识别目标主机IP地址┌──(kali㉿kali)-[~/Vulnhub/Blogger]└─$sudonetdiscover-ieth1Currentlyscanning:192.168.103.0/16|ScreenView:Unique......
  • 11.14.12
    #include<stdio.h>#include<string.h>intmain(){inti,j,l1,l2; chara[100],b[100]; gets(a); gets(b); l1=strlen(a);l2=strlen(b); for(i=l1,j=0;i<l1+l2,j<l2......
  • Vulnhub 02 Breakout靶机解题详细过程
    02Breakout识别目标主机IP地址─(kali㉿kali)-[~/Vulnhub/02_breakout]└─$sudonetdiscover-ieth1Currentlyscanning:192.168.74.0/16|ScreenView:Uni......
  • Python实验报告(第11周)
      实验11:模块一、实验目的和要求1、学会自定义模块;2、学会引用其他模块;3、学会创建和使用包。二、实验环境软件版本:Python3.1064_bit三、实验过程1、实例1:......
  • 软件工程基础实验二报告
    小学四则运算自动生成程序一、题目①能够自动生成四则运算练习题②可以定制题目数量③用户可以选择运算符④用户设置最大数(如十以内、百以内等)⑤用户选择......
  • Java学习——11.14
    将近4天没更新啊,为什么呢,主要是面向过程太难太抽象了,不过好在我用四天还是将他理解了。1.封装(关键字:private)保护私有的方法和属性。set直接修改private  ......
  • 11.14.8
    #include<stdio.h>intmain(){ intn,m,i,j,sum=0,count=0; scanf("%d%d",&m,&n); for(i=m;i<=n;i++) {for(j=1;j<i;j++) {if(i%j==0){sum+=j; } } if(sum==i){p......
  • 11.14.9
    #include<stdio.h>intmain(){ intn,m,i,j,count=0; inta[100][100],b[100][100],c[100][100]; scanf("%d%d",&m,&n); for(i=0;i<m;i++) {for(j=0;j<n;j++) {scan......
  • 闲话 22.11.14
    闲话我不理解为什么我能现在写完所有题的题解。我们仍然回忆数据结构专题(话说回来我说“蒜”能有几个人知道我在说什么呢(就是那个《石蒜物语》(我反正不是很习惯这个......
  • 2022.11.14
    上午打被\(QC\)打T1与\(\color{Black}{j}\color{Red}{nmcslh}\)师傅一顿\(ACM\),得出了一个树剖做法,然后花了午饭前一节课的时间码完了,并且竟然一遍\(A\)了,非常极......