首页 > 其他分享 >高一下三调2

高一下三调2

时间:2024-05-13 17:32:29浏览次数:27  
标签:return int 一下 400 vis maxn ans 三调

T1攻击装置

题目

image

脑瘫了,考场上连边时 \((i-1)*n+j\) 写成 \(i*n+j\),连边直接错位

点击查看代码
#include<bits/stdc++.h>
const int maxn=4e4+10;
using namespace std; 
int n,head[maxn<<3],nxt[maxn<<4],to[maxn<<4],vis[maxn],match[maxn],tot;
int a[500][500],sum,ans;
string s[300];
void add(int x,int y)
{
	to[++tot]=y;
	nxt[tot]=head[x];
	head[x]=tot;
}
bool dfs(int u)
{
	for(int i=head[u];i;i=nxt[i])
	{
		int y=to[i];
		if(vis[y])continue;
		vis[y]=1;
		if(!match[y]||dfs(match[y]))
		{
			match[y]=u;
			return 1;
		}
	}
	return 0;
}
int main()
{
	freopen("attack.in","r",stdin);
	freopen("attack.out","w",stdout);
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
	{
		cin>>s[i];
		for(int j=0;j<n;j++)
		{
			if(s[i][j]=='0')a[i][j+1]=1,sum++;
		}
	}		
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=n;j++)
		{
			if(a[i][j]==1)
			{
				if(a[i-2][j-1]==1)add((i-1)*n+j,(i-3)*n+j-1);
				if(a[i-1][j-2]==1)add((i-1)*n+j,(i-2)*n+j-2);
				if(a[i-2][j+1]==1)add((i-1)*n+j,(i-3)*n+j+1);
				if(a[i-1][j+2]==1)add((i-1)*n+j,(i-2)*n+j+2);
				if(a[i+2][j-1]==1)add((i-1)*n+j,(i+1)*n+j-1);
				if(a[i+1][j-2]==1)add((i-1)*n+j,(i)*n+j-2);
				if(a[i+2][j+1]==1)add((i-1)*n+j,(i+1)*n+j+1);
				if(a[i+1][j+2]==1)add((i-1)*n+j,(i)*n+j+2);
			}
		}
	}
	for(int i=1;i<=n*n;i++)
	{
		memset(vis,0,sizeof(vis));
		if(dfs(i))ans++;
	}
	printf("%d\n",sum-ans/2);
	
	return 0;
}
/*
3
010
000
100
*/

T2循环

题目

image

水题

点击查看代码
#include<bits/stdc++.h>
const int maxn=1e3+10;
const int mod=100;
int x,vis[maxn];
int main()
{
	freopen("number.in","r",stdin);
	freopen("number.out","w",stdout);
	scanf("%d",&x);
	x%=100;
	int flag=1,ans=1;
	while(flag)
	{
		ans=ans*x%100;
		printf("%d ",ans);
		if(vis[ans])flag=0;
		vis[ans]=1;
	}
	
	return 0;
}

T3漫步

题目

image

也是水题,但我想复杂了,打了个贪心的暴力,T俩点

贪心——80pts
#include<bits/stdc++.h>
const int maxn=1e5+10;
using namespace std;
int n,st[maxn],ans,rs,minn=1e10;
struct node{int x,v;}m[maxn];
bool cmp(node a,node b)
{
	return a.x<b.x;
}
int main()
{
	freopen("jog.in","r",stdin);
	freopen("jog.out","w",stdout);
	scanf("%d",&n);
	for(register int i=1;i<=n;i++)
	{
		scanf("%lld%lld",&m[i].x,&m[i].v);	
		minn=min(minn,m[i].v);
	}
	sort(m+1,m+n+1,cmp);
	for(register int i=1;i<=n;i++)
	{
		if(m[i].v==minn)st[++rs]=i;
	}
	ans+=rs;
	int end=st[rs];
	while(minn!=m[n].v&&minn!=1e10)
	{
		minn=1e10;
		memset(st,0,sizeof st);
		rs=0;
		for(register int i=end+1;i<=n;i++)
		{
			minn=min(minn,m[i].v);
		}
		for(register int i=end+1;i<=n;i++)
		{
			if(m[i].v==minn)st[++rs]=i;
		}
		sort(st+1,st+1+rs);
		end=st[rs];
		ans+=rs;
		if(end==n)break;	
	}
	printf("%d\n",ans);
	return 0;
}
/*
5
0 1
1 2
2 3
3 2
6 1
*/
正解
#include<bits/stdc++.h>
#define int long long
const int maxn=1e5+10;
using namespace std;
int n,st[maxn],ans,rs,minn=1e10;
struct node{int x,v;}m[maxn];
bool cmp(node a,node b)
{
	return a.x<b.x;
}
signed main()
{
	freopen("jog.in","r",stdin);
	freopen("jog.out","w",stdout);
	scanf("%lld",&n);
	ans=n;
	for(int i=1;i<=n;i++)
	{
		scanf("%lld%lld",&m[i].x,&m[i].v);	
	}
	sort(m+1,m+n+1,cmp);
	for(int i=n-1;i>=1;i--)
	{
		if(m[i].v>m[i+1].v)ans--,m[i].v=m[i+1].v;
	}
	printf("%d\n",ans);
	return 0;
}
/*
5
0 1
1 2
2 3
3 2
6 1
*/

T4穿越

题目

image

image

当时以为是个搜索,也确实是个搜索,但没打出来,骗了40pts走了

点击查看代码
#include<bits/stdc++.h>
#define fi first
#define se second
const int maxn=1e5+10;
using namespace std;
int n,m,a[400][400],aa,yu[400][400],p,x,y,b,z,h,lsx;
typedef pair<int,int> pii;
vector<pii>q[400][400],ch;
queue<pair<pii,int> >qq;
bool vis[400][400];

void bfs(int x,int y,int t)
{
//	cout<<"!"<<endl;
	if(x<=0||x>n||y<=0||y>m||vis[x][y]==1||a[x][y]==1||t>=yu[x][y])return;
	if(a[x][y]!=2)
	{
		qq.push({{x,y},t});
		vis[x][y]=1;
		if(x==n&&y==m)
		{
			printf("%d\n",t);
			exit(0); 
		}
	}
	else
	{
		for(auto i:q[x][y])
		{
			if(i.fi<=t&&i.se>=t)return;
		}
		qq.push({{x,y},t});
		vis[x][y]=1;
		return;
	}
} 


int main()
{
	freopen("cross.in","r",stdin);
	freopen("cross.out","w",stdout);
	scanf("%d%d",&n,&m);
	memset(yu,0x7f7f7f,sizeof yu);
	for(int i=1;i<=n;i++)
		for(int j=1;j<=m;j++)
		{
			
			scanf("%d",&a[i][j]);
			if(a[i][j]==3)ch.push_back({i,j});
		}	
	scanf("%d",&aa);
	for(int i=1;i<=aa;i++)
	{
		scanf("%d",&lsx);
		scanf("%d",&p);
		for(int j=1;j<=p;j++)
			scanf("%d%d",&x,&y),yu[x][y]=min(lsx,yu[x][y]);
	}
	scanf("%d",&b);
	for(int i=1;i<=b;i++)scanf("%d%d%d%d",&x,&y,&z,&h),q[z][h].push_back({x,y});
	if(a==0&&b==0)printf("%d",n+m-2),exit(0);
	qq.push({{1,1},0}); 
	vis[1][1]=1;
	while(1)
	{
		pii k=qq.front().fi;
		int x=k.fi,y=k.se,t=qq.front().se;
		qq.pop();
		vis[x][y]=0;
		bfs(x+1,y,t+1);bfs(x-1,y,t+1);bfs(x,y+1,t+1);bfs(x,y-1,t+1);bfs(x,y,t+1);
		if(a[x][y]==3)
		{
			for(auto i:ch)bfs(i.fi,i.se,t+2);
		}
	}
	
	return 0;	
} 
/*
3 3
0 1 0
2 0 1
3 2 0
2 
2 1 3 1 
1 1 1 3
1
2 4 2 1
*/

T5结队

题目

image

image

早上吃饭时还在说会不会考并查集,说中了,但当时却没想到。。。

点击查看代码
#include<bits/stdc++.h>
const int maxn=1e5+10;
using namespace std;
int A,B,P,zs[maxn],cnt,ans,v[maxn],fa[maxn];
bool vis[maxn];
int find(int x){return fa[x]==x?x:fa[x]=find(fa[x]);}
void pre()
{
	for(int i=2;i<=sqrt(B);i++)
	{
		if(!vis[i])
		{
			for(int j=2;j*i<=B;j++)
				vis[j*i]=1;
		}
	}
}
int main()
{
	freopen("merge.in","r",stdin);
	freopen("merge.out","w",stdout);
	scanf("%d%d%d",&A,&B,&P);
	pre();
	for(int i=P;i<=B;i++)
		if(!vis[i])zs[++cnt]=i,fa[i]=i;
	for(int i=1;i<=cnt;i++)
	{
		for(int j=1;j*zs[i]<=B;j++)
		{
			int x=j*zs[i];
			if(x<A)continue;
			if(fa[x]&&find(x)!=x)fa[find(x)]=zs[i];
			if(fa[x]==0)fa[x]=zs[i];
		}
	}
	for(int i=A;i<=B;i++)
	{
		int x=find(i);
		if(!v[x]&&x)ans++,v[x]=1;
		if(x==0)ans++; 
	}
	printf("%d\n",ans);
	
	return 0;
}

标签:return,int,一下,400,vis,maxn,ans,三调
From: https://www.cnblogs.com/oceansofstars/p/18189649

相关文章

  • 【比赛】高一下三调2
    T1[TJOI2013]攻击装置题目描述给定一个01矩阵,其中你可以在0的位置放置攻击装置。每一个攻击装置\((x,y)\)都可以按照“日”字攻击其周围的\(8\)个位置\((x-1,y-2)\),\((x-2,y-1)\),\((x+1,y-2)\),\((x+2,y-1)\),\((x-1,y+2)\),\((x-2,y+1)\),\((x+1,y+2)\),\((x+2,y+1)\)。......
  • DirectX 12 Ultimate 是微软在 DirectX 12 API 的基础上推出的一个新版本,它旨在为游戏
    DirectX12Ultimate是微软在DirectX12API的基础上推出的一个新版本,它旨在为游戏开发者提供更多的功能和支持,同时也为玩家带来更出色的游戏体验。下面我将简要介绍一下DirectX12Ultimate的特点和重要性:支持最新硬件特性:DirectX12Ultimate支持最新的硬件特性,包......
  • 解释一下这两行 "pub": "pnpm --filter \"./packages/*\" run pub", "pub:b
    F:\learn-front\code-inspector\package.json这两行命令是用于在JavaScript项目中发布(publish)软件包到npm仓库的脚本定义,常见于使用pnpm作为包管理器的Monorepo(单仓库多项目)结构的项目中。这里具体解释一下每部分的含义:pub:这是一个npm脚本的别名,当在命令行中执行npmrunp......
  • iOS pod删除某一个框架记录一下 eg: JMessage
    pod删除JMessage 提示没有找到 “jcore-ios” 在otherlinkerFlags 中删除 “jcore-ios” 删除后说没有找到“JMessage”继续删除  删除后问题出现了   提示没有找到coreimage 很奇怪 根本没有动这个文件 继续删除问题更多,回去排查发现 -fram......
  • 记录一下docker踩坑 /dev/shm目录
    /dev/shm是Linux系统中的一个特殊目录,用于作为临时文件存储的一种形式,它将数据存储在RAM(随机存取存储器)中,而不是在磁盘上。这意味着在/dev/shm中存储的数据访问速度非常快,但数据在系统重启后不会被保留。/dev/shm是POSIX共享内存(POSIXSharedMemory)的一部分,它允许不同的进程(程序......
  • 高一下三调|ssy的队列|hash dp|题解
    SSY的队列题目链接解析:考场上看到这个题第一眼是绝望的,毕竟数论咱是一窍不通.但是往下细看了看这个数据范围,N是很小的,就想了想模拟.然而只骗到10分.这个题绩效较高的解法是状压dp,在N<15的范围之内均可薄纱(ppllxx_9G也是成功拿到这70rank1了orz),可得70,但是一到后......
  • 总结一下公共字段(aop加自定义注解加反射)
    应用场景在一些业务类的创建中,我们需要反复对不同的类的同一个属性进行赋值,那么问题就出现了**代码冗余**如何解决呢思路:利用aop创造一个切面如何创造一个切面呢实质上就是扫描加设置增强位置那么如何扫描到对应的赋值方法上呢这里需要用到自定义注解了自定义注解://这......
  • 介绍一下opentcs
    OpenTCS是一个开源的自动运载系统(AutomatedGuidedVehicle,AGV)控制系统。它旨在管理和控制自动化运输车辆,例如AGV或自动搬运车(AMR),在工业和商业环境中执行各种任务。下面是一些关键特性和组件:任务调度和优化:OpenTCS能够规划和优化AGV的任务执行顺序,以最大程度地提高效率和资源......
  • 【比赛】高一下三调
    A.李时珍的皮肤衣看不出规律就打表点击查看代码#include<bits/stdc++.h>#definell__int128usingnamespacestd;longlongn;voidp(llx){ if(!x)return; p(x/10); cout<<int(x%10);}llqpow(lla,llb){ llans=1; while(b) { if(b&1)ans=ans*a%n; a=......
  • 2024.5.3【比赛】高一下三调
    为了拓宽自己的英雄池,还是要写一下。分数&排名:理想:会牵挂的叫亲人,回不去的是故乡。现实:神虎一跃,威震天地!A.李时珍的皮肤衣今天输了,明天也要卷土重来。赛后加点卡赛时是不理解的。为啥这次就加点,上次数据范围错了都不把数据范围错的删了给我重测。自己手动模......