首页 > 其他分享 >暑假集训CSP提高模拟17

暑假集训CSP提高模拟17

时间:2024-08-13 18:06:27浏览次数:5  
标签:cnt 17 int cin 集训 maxn tie CSP maxx

A. 符号化方法初探

看最大数和最小数的绝对值大小,用至多 \(n-1\) 次让其符号相同,是正数就加前一个数,是负数就倒着加后一个数,最多

\(n-2\) 次。

点击查看代码
#include<bits/stdc++.h>
const int maxn=2e5+10;
using namespace std;
int n,a[maxn],x[maxn],y[maxn],cnt,minn,maxx,ma,mi; 

int main()
{
	ios::sync_with_stdio(0);
	cin.tie(0),cout.tie(0);
	cin>>n;
	maxx=-2e9;
	minn=2e9;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];
		if(a[i]>maxx) maxx=a[i],ma=i;
		if(a[i]<minn) minn=a[i],mi=i;
	}
	if(-minn>maxx)
	{
		for(int i=1;i<=n;i++)
		{
			if(a[i]>0)
			{
//				a[i]+=minn;
				x[++cnt]=mi,y[cnt]=i;
			}
		}
		for(int i=n-1;i>=1;i--)
		{
//			a[i]+=a[i+1];
			x[++cnt]=i+1,y[cnt]=i; 
		}
	}
	else
	{
		for(int i=1;i<=n;i++)
		{
			if(a[i]<0)
			{
//				a[i]+=maxx;
				x[++cnt]=ma,y[cnt]=i;
			}
		}
		for(int i=2;i<=n;i++)
		{
//			a[i]+=a[i-1];
			x[++cnt]=i-1,y[cnt]=i; 
		}
	}
	cout<<cnt<<'\n';
	for(int i=1;i<=cnt;i++)cout<<x[i]<<" "<<y[i]<<'\n';
	
	return 0;
}
/*
4
-1 -1 0 -1
*/

B. 无标号 Sequence 构造

思维题,\(n^3\) 暴力肯定不行,但他只问相不相等,所以我们可以构造一个 \(1*n\) 的矩阵,由于矩阵乘法满足结合率,所以

我们先 \(n^2\) 让等号两边矩阵都乘上构造矩阵再 \(n^2\) 判等即可

点击查看代码
#include<bits/stdc++.h>
const int mod=998244353;
const int maxn=3010;
using namespace std;
int t,n,a[maxn][maxn],b[maxn][maxn],c[maxn][maxn],flag,aa[2][maxn],cc[2][maxn];

int main()
{
	ios::sync_with_stdio(0);
	cin.tie(0),cout.tie(0);
	cin>>t;
	while(t--)
	{
		flag=0;
		cin>>n;
		memset(aa,0,sizeof aa);
		memset(cc,0,sizeof cc);
		for(int i=1;i<=n;i++)
			for(int j=1;j<=n;j++)cin>>a[i][j];
		for(int i=1;i<=n;i++)
			for(int j=1;j<=n;j++)cin>>b[i][j];
		for(int i=1;i<=n;i++)
			for(int j=1;j<=n;j++)cin>>c[i][j];	
		
		for(int i=1;i<=n;i++)
			for(int j=1;j<=n;j++)
				aa[1][i]=(aa[1][i]+1ll*a[j][i]*(j%2+1)%mod)%mod;
		for(int i=1;i<=n;i++)
			for(int j=1;j<=n;j++)
				cc[1][i]=(cc[1][i]+1ll*c[j][i]*(j%2+1)%mod)%mod;	
		for(int i=1;i<=n;i++)
		{
			long long temp=0;
			for(int j=1;j<=n;j++)
	    	{
	    		temp=(temp+1ll*aa[1][j]*b[j][i])%mod;
//	    		cout<<temp<<" "<<cc[1][i]<<endl;
			}
			if(temp!=cc[1][i])flag=1;
			if(flag)break;
		}		
		if(flag) cout<<"No"<<'\n';
		else cout<<"Yes"<<'\n';
	}
	
	return 0;
}

D. 有限制的构造

一个\(dp\),但我 \(dp\) 一直不太好

初始模型是 \(f_{i,j,k}\) 表示前 \(i\) 个,画面质量是 \(j\) ,不可玩度是 \(k\) 时的个数,但数组开不下,遂舍弃

观察到 \(n\) 最大80,所以我们可以把答案放数组里,则\(f_{i,j,k}\) 表示前 \(i\) 个,选 \(j\) 个,画面质量是 \(k\) 时,的不可玩度最小值

我们强制让 \(k\) 在范围内,最后再随便选一个即可,但 \(256MiB\),还是开不下,滚动数组优化一下就好了

点击查看代码
#include<bits/stdc++.h>
const int maxn=1e4+10;
using namespace std;
int n,A,B,ans,a[100],b[100],f[2][82][maxn];

int main()
{
	ios::sync_with_stdio(0);
	cin.tie(0),cout.tie(0);
	cin>>n>>A>>B;
	for(int i=1;i<=n;i++)
		cin>>a[i]>>b[i];
	memset(f,0x7f,sizeof f);
	f[1][0][0]=f[0][0][0]=0;	
	for(int i=1;i<=n;i++)
	{
		int temp=i&1;
		for(int j=1;j<=i;j++)
		{
			for(int k=0;k<=A;k++)
			{
				if(k>=a[i])f[temp][j][k]=f[temp^1][j-1][k-a[i]]+b[i];
				f[temp][j][k]=min(f[temp][j][k],f[temp^1][j][k]);
			}
		}
	}
	for(int i=n;i>=0;i--)
	{
		for(int j=0;j<=A;j++)
		{
			if(f[1][i][j]<=B||f[0][i][j]<=B)
			{
				cout<<min(i+1,n);
				return 0;	
			}
		}
	}

	
	return 0;
}

标签:cnt,17,int,cin,集训,maxn,tie,CSP,maxx
From: https://www.cnblogs.com/oceansofstars/p/18357472

相关文章

  • [JOISC2017] Cultivation
    link。不是,怎么四方跑得飞快啊?成最优解了?有人会卡吗?鉴定为剪枝太多导致的。一个出发点不太一样的思路。假设上下左右各被操作了\(U,D,L,R\)次。我们考虑一个点\((x,y)\)不被感染的条件是初始时\([x-D,x+U]\times[y-R,y+L]\)这个矩形内没有任何感染点。考虑扣出所有中间......
  • D42 2-SAT+二进制枚举 P3825 [NOI2017] 游戏
    视频链接: P3825[NOI2017]游戏-洛谷|计算机科学教育新生态(luogu.com.cn)//2-SAT+二进制枚举O(2^8*(n+m))#include<iostream>#include<cstring>#include<algorithm>usingnamespacestd;constintN=100005;inthead[N],to[N<<1],ne[N<<1],idx;......
  • 暑假集训CSP提高模拟19
    A.数字三角形没看到拍列,对着自己造的错样例改半天。填数,由上往下都向左下填,可以保证有解点击查看代码#include<bits/stdc++.h>constintmaxn=550;usingnamespacestd;inta[maxn][maxn],n,flag,cnt,maxx,mi;structlsx{ intx,id; booloperator<(constlsx&a)c......
  • Windows出现出现身份验证错误。要求的函数不受支持 远程计算机: 10.17.1.2 这可能是由
    Windows出现出现身份验证错误。要求的函数不受支持远程计算机:10.17.1.2这可能是由于CredsSP加密数据库修正。若要了解详细信息,请访问https://go.microsoft.com/fwlink/?linkid=866660解决方案解决方法第一步点开控制面板选择系统与安全第二步选择“允许远程访问......
  • 问题 IDEA创建Sping项目只能勾选17和21,却无法使用Java8
    想创建一个springboot项目,本地安装jdk版本为1.8,但是在使用SpringInitializr创建项目时,版本只能选择21或17在JDK为1.8的情况下,无论选择Java17版本或者21版本时,都会报错。Java17和Java8(JDK1.8)的区别版本号:Java17是JavaSE17的版本,而JDK1.8是JavaSE8的版本。发......
  • 第17天 信息打点-语言框架&开发组件&FastJson&Shiro&Log4j&SpringBoot等
    时间轴演示案例指纹识别—本地工具—GotoScanPython—开发框架—Django&FlaskPHP—开发框架—ThinkPHP&Laravel&YiiJava—框架组件—FastJson&Shiro&Solr&Spring知识点1.CMS指纹识别—不出网程序识别解决:CMS识别到后前期漏洞利用和代码审计一般PHP开发居多,利用源码......
  • Odoo17 门户链接访问令牌
    为了方便共享文档,odoo在每个文档模型中都加入了共享链接的快捷分享功能,用户可以方便的在想要分享的文档上将文档的链接分享给客户/供应商。我们以销售订单为例,来看一下分享功能的使用方法.生成共享链接我们在想要分享的文档上点击动作-分享,会弹出一个对话框:在显示的对话框中......
  • [CF1172E] Nauuo and ODT
    [CF1172E]NauuoandODT首先考虑单次询问,将每个颜色拉出来,求解有多少条路径至少包含一个给定点。这就是维护所有黑色连通块的大小平方和。我们每一次删掉一个点就等价于将所有和他相连的点删掉,这样一定会T。可以使用类似CF487ETourists的套路,将其父亲—儿子化,如果一个点......
  • SpringBoot饮品店管理系统 毕业设计-附源码63617
    摘要随着社会的发展和人们生活水平的提高,饮品店在城市中的数量和规模不断增长。饮品店作为一个重要的零售业态,承载了人们对于饮品的需求和追求,具有广阔的市场潜力。然而,随着饮品店的数量增多和竞争加剧,传统的管理方式已经无法满足日益增长的需求。传统的饮品店管理方式往......
  • 2024.8.12 总结(集训)
    破防的一天。TQX来给我们讲课。stOTQXOrz讲的是二分图和网络流。感觉内容很多,而且比较难,讲得对我来说比较快。很多东西我还没懂就过了,有时我还走神了,没听到。胡老师说今天是见图论的“天”,网络流是图论的天花板,本来就没打算让我们今天全部听懂。下午看了一下午别人的博客、......