首页 > 其他分享 >第二次双周赛

第二次双周赛

时间:2023-10-16 18:12:35浏览次数:42  
标签:case cur int light 双周 break start 第二次

第二次双周赛

7-1 输出全排列

  • 知识点:应该不是要用函数但是函数真好用

    ​ next_permutation() 产生全排列

#include<bits/stdc++.h>
using namespace std;
int main()
{
	int n;
	char ch[1000];
	cin>>n;
	for(int i=0;i<n;i++)
	ch[i]=i+1+'0';
	ch[n]='\0';
	do
	{
		cout<<ch<<endl; 
	 } while(next_permutation(ch,ch+n));
	return 0;
 } 

7-2 山

  • 知识点:dfs
#include<bits/stdc++.h>
using namespace std;
int m,n,ans=0;
int mp[10005][10005];
int xx[5]={0,1,0,-1};
int yy[5]={1,0,-1,0};
void dfs(int i,int j)
{
	mp[i][j]=0;
	for(int k=0;k<4;k++)
	{
		int nx=i+xx[k];
		int ny=j+yy[k];
		if(nx>=0&&nx<m&&ny>=0&&ny<n)
		{
			if(mp[nx][ny]==1)
			dfs(nx,ny);
		}
	}
	
}
int main()
{
	cin>>m>>n;
	for(int i=0;i<m;i++)
	{
		for(int j=0;j<n;j++)
		{
			cin>>mp[i][j];
		}
	}
	for(int i=0;i<m;i++)
	{
		for(int j=0;j<n;j++)
		{
			if(mp[i][j]==1)
			{
				dfs(i,j);
				ans++;
			}
		}
	}
	cout<<ans<<endl;
	return 0;
}

7-3 跳跃

  • 知识点:dfs
#include<bits/stdc++.h>
using namespace std;
int n;
int vis[50005]={0};
bool flag=false;
void jump(int start,int m[])
{
	if(m[start]==0&&start<n&&start>=0)
	flag=true;
	if(vis[start]==0&&start>=0&&start<n)
	{
		vis[start]=1;
		jump(start+m[start],m);
		jump(start-m[start],m);
	}
}
int main()
{
	int start;
	int m[50005];
	cin>>n;
	for(int i=0;i<n;i++)
	cin>>m[i];
	cin>>start;
	jump(start,m);
	if(flag)
	cout<<"True"<<endl;
	else
	cout<<"False"<<endl;
	return 0;
}

7-4 最长光路

  • 知识点:dfs
  • 思路:如果两次经过同一个格子,且光照向同一个方向,就说明是环路。
#include <iostream>
using namespace std;

int toward[4][2] = {
	{-1, 0},
	{0, 1},
	{1, 0},
	{0, -1}
};
string map[500];

int main() {
	int N, M, start_x, start_y, max_sum = 0, max_light = 0;
	cin >> N >> M;
	for (int i = 0; i < N; i++)
		cin >> map[i];
	cin >> start_x >> start_y;

	for (int i = 0; i < 4; i++) {
		int light = i, cur_x = start_x - 1, cur_y = start_y - 1, sum = 1;

		while (true) {
			cur_x += toward[light][0];
			cur_y += toward[light][1];
			sum++;

			if (cur_x == start_x - 1 && cur_y == start_y - 1 && light == i) {
				switch (i)
				{
				case 0:
					putchar('U');
					break;
				case 1:
					putchar('R');
					break;
				case 2:
					putchar('D');
					break;
				case 3:
					putchar('L');
					break;
				default:
					break;
				}
				putchar('\n');
				cout << "COOL";
				return 0;
			}

			if (cur_x < 0 || cur_x >= N || cur_y < 0 || cur_y >= M) {
				sum--;
				break;
			}
			else if (map[cur_x][cur_y] == '.')
				continue;
			else if (map[cur_x][cur_y] == 'C') {
				sum--;
				break;
			}
			else if (map[cur_x][cur_y] == '\\') {
				switch (light)
				{
				case 0:
					light = 3;
					break;
				case 1:
					light = 2;
					break;
				case 2:
					light = 1;
					break;
				case 3:
					light = 0;
					break;
				default:
					break;
				}
			}
			else if (map[cur_x][cur_y] == '/') {
				switch (light)
				{
				case 0:
					light = 1;
					break;
				case 1:
					light = 0;
					break;
				case 2:
					light = 3;
					break;
				case 3:
					light = 2;
					break;
				default:
					break;
				}
			}
		}

		if (max_sum < sum) {
			max_sum = sum;
			max_light = i;
		}
	}

	switch (max_light)
	{
	case 0:
		putchar('U');
		break;
	case 1:
		putchar('R');
		break;
	case 2:
		putchar('D');
		break;
	case 3:
		putchar('L');
		break;
	default:
		break;
	}
	putchar('\n');
	cout << max_sum;
	return 0;
}

7-5 回文数文回

  • 知识点:应该不是要暴力但是暴力大法好!
  • 思路:因为是回文,且固定9位数,所以只用枚举前5位即可
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e9+5;
const int st=1e8;
int main(){
    int n;
    int sum=0;
    cin>>n;
    string s;
    s=to_string(n);//把int转化成string
    int a=s[0]-'0';
    for (int a1=1; a1<=a; a1++)
        for (int b1=0; b1<=9; b1++)
            for (int c1=0; c1<=9; c1++)
                for (int d1=0; d1<=9; d1++)
                    for (int e1=0; e1<=9; e1++){
                        int k=a1*100000000+b1*10000000+c1*1000000+d1*100000+e1*10000+d1*1000+c1*100+b1*10+a1;
                        if (k<=n){
                            sum++;
                        }
                    }
    cout<<sum<<endl;
    return 0;   
}

标签:case,cur,int,light,双周,break,start,第二次
From: https://www.cnblogs.com/xiaoyangii/p/17768026.html

相关文章

  • 三次握手中每一次没收到报文会发生什么情况?第二次握手传回了 ACK,为什么还要传回 SYN?第
    三次握手中每一次没收到报文会发生什么情况?第一次握手服务端未收到SYN报文服务端不会进行任何的动作,而客户端由于一段时间内没有收到服务端发来的确认报文,等待一段时间后会重新发送SYN报文,如果仍然没有回应,会重复这个过程,直到发送次数超过最大重传次数限制,就会返回连接建立失败。......
  • Linux第二次周总结
    第三章用户管理3.1用户/组概览Linux系统是多用户、多任务的分时操作系统,系统上每一个进程都有一个特定的文件,每个文件都被一个特定的用户所拥有。每个用户都属于一个用户组或者多个组,系统可以对一个用户组中的所有用户进行集中管理。3.1.1用户标识:UID与GIDLinux系统并不能......
  • 数据库解决获取一个字段parent中某个字符串child第一次和第二次出现的位置之间的内容c
    下面就postgresql数据和oracle数据库分别提供两种解决方法--postgresql数据库解决获取一个字段parent中某个字符串child第一次和第二次出现的位置之间的内容cut--方法一selectcasewhenposition(childinparent)>0thensubstring(parent,position(childinparent)+l......
  • KubeSphere 社区双周报 | OpenFunction v1.2.0 发布 | 2023.09.15-09.28
    KubeSphere社区双周报主要整理展示新增的贡献者名单和证书、新增的讲师证书以及两周内提交过commit的贡献者,并对近期重要的PR进行解析,同时还包含了线上/线下活动和布道推广等一系列社区动态。本次双周报涵盖时间为:2023.09.15-2023.09.28。贡献者名单新晋KubeSphereCon......
  • 9.29闲话:9.24数学周练(第二次)拓展
    关于这张卷子呢,其实还是有点东西的,但是cxc上课讲的过于答辩,在这里写些题目的拓展解法和结论。T7(单选最后一题)题面解法求\(C_1\)到平面\(\alpha\)的距离,其实也就是求\(\overrightarrow{AC_1}\)在平面\(\alpha\)的法向量的投影的模长。而\(\overrightarrow{AC_1}=\ov......
  • 第二次博客
    最想学习的技术(一项技术)HTML是构建网页的基础,是前端开发的重要技能。学习HTML需要一些基本的资源和路线图,可以通过以下方式:一、书本和网络资源基础教材:《HTML与CSS入门经典》(CharlesRiverMediaISBN9780789741210)。这本书适合初学者,内容简单易懂。进阶书籍:《HTML5权威指南......
  • yzy第二次学习笔记
    第九章I/O库函数本章讨论了I/O库函数;结识了I/O库函数的作用及其对于系统调用的优势;使用示例程序来说明I/O库函数和系统调用之间的关系,并解释了他们之间的相似性和基本区别;详细介绍了IO库函数的算法,包括fread、fwrite和fclose的算法,重点介绍了它们与read、write和close系统调......
  • KubeSphere 社区双周报 | Fluent Operator 发布 v2.5.0 | 2023.09.01-09.14
    KubeSphere社区双周报主要整理展示新增的贡献者名单和证书、新增的讲师证书以及两周内提交过commit的贡献者,并对近期重要的PR进行解析,同时还包含了线上/线下活动和布道推广等一系列社区动态。本次双周报涵盖时间为:2023.09.01-2023.09.14。贡献者名单新晋KubeSphereCon......
  • NXP的KEAZ64单片机上电不启动,第二次Debug恢复正常
    问题描述NXP的KEAZ64单片机上电不启动,需要用调试器进入Debug模式,且首次Debug中断不触发,第二次以后功能才恢复正常首次Debug中断不触发,但reset引脚接地,中断功能恢复问题排除1.供电怀疑供电电路有问题,电压异常或者波动较大。*示波器观察供电是否有波动,电源是否能在短时间内......
  • 代码信息化:软件业“第二次工业革命”的契机
    软件行业面临最终产品信息化瓶颈如今,快递、外卖等行业通过信息系统实现了精准的产品和服务数字化管理。快递软件可以实时追踪每个包裹所在位置,调配最佳物流链路;外卖软件根据客户评价、菜品销量等数据持续优化产品和服务。这些成果都有赖于软件行业多年来对各行各业数字化建设的......