首页 > 其他分享 >$9.6$ 短学期题解

$9.6$ 短学期题解

时间:2023-09-05 21:36:34浏览次数:33  
标签:int 题解 void 学期 ++ && ans 9.6 now

\(a\)

int a[N];
void solve(){
    int n=read();
    for(int i=1;i<=n;i++){
        a[i]=read();
    }
    sort(a+1,a+1+n);
    int ans=0;
    for(int i=1;i<=min(5,n);i++){
        if(a[i]<=300)ans++;
    }
    puts(ans>=5?"Penta Kill":"Shut Down");
    //puts(ans>0?"Yes":"No");
}

\(b\)

想了很久,感觉没有不用最短路算法的写法
我这是使用的 \(floyed\) 算法,用 \(dij\) 或者并查集\(+dfs\)也能写。
\(floyed\) 的本质比较接近暴力枚举,大家可以学习一下。

int d[N][N],n,m;
void floyd(){
    for (int k = 1; k <= n; k ++ )
        for (int i = 1; i <= n; i ++ )
            for (int j = 1; j <= n; j ++ )
                d[i][j] = min(d[i][j], d[i][k] + d[k][j]);
}
void solve(){
    while(cin>>n>>m){
        for (int i = 1; i <= n; i ++ )
            for (int j = 1; j <= n; j ++ )
                if (i == j) d[i][j] = 0;
                else d[i][j] = INF;
        for(int i=1;i<=m;i++){
            int x=read(),y=read(),w=read();
            d[y][x]=w;
            d[x][y]=w;
        }
        floyd();
        int x=read(),y=read();
        if(d[x][y]==INF)cout<<"No path\n";
        else cout<<d[x][y]<<'\n';
    }
    //puts(ans>0?"YES":"NO");
    //puts(ans>0?"Yes":"No");
}

\(c\)

常规画图题

int fac[20][20];
void init(){
    fac[1][1]=1;
    for(int i=1;i<=10;i++){
        fac[i][1]=1;
        for(int j=2;j<=i;j++){
            fac[i][j]=fac[i-1][j-1]+fac[i-1][j];
        }       
    }
    // for(int i=1;i<=10;i++){
    //     for(int j=1;j<=i;j++){
    //         cout<<fac[i][j]<<" ";
    //     }
    //     cout<<'\n';
    // }
}
void solve(){
    int n;
    while(cin>>n){
        for(int i=n;i>=1;i--){
            for(int j=1;j<=(n-i);j++){
                cout<<" ";
            }
            for(int j=1;j<=i;j++){
                cout<<fac[i][j]<<" ";
            }
            cout<<'\n';
        }
        cout<<'\n';
    }
    //puts(ans>0?"YES":"NO");
    //puts(ans>0?"Yes":"No");
}

\(d\)

这是一份昨晚队友手敲的模拟做法

int n, m;
int vis[N];
void init(){
    for (int i = 1; i <= n; i++)
        vis[i] = 0;
}
void solve(){
   while (cin >> n >> m){
        init();
        int cnt = 0, now = 0;
        for (int i = 1; i < n; i++){
            cnt = 0;
            while (cnt < m){
                now = now % n + 1;
                if (vis[now] == 0)
                    cnt++;
            }
                        vis[now] = 1;
        }
        for (int i = 1; i <= n; i++)
            if (vis[i] == 0){
                cout << i << endl;
                break;
            }
    }
}

这是用递推公式写的约瑟夫环问题

void solve(){
    int n,k;
    while(cin>>n>>k){
        int ans=0;
        for(int i=2;i<=n;i++){
            ans=(ans+k)%i;
        }
        cout<<ans+1<<'\n';
    }
    //puts(ans>0?"YES":"NO");
    //puts(ans>0?"Yes":"No");
}

\(e\)

感觉没什么意思,找了份早年代码贴一下。

#include <stdio.h>
#include <string.h>
int main(){
	int n,s,a[7];
	char str[20];
	for(int i=0;i<=7;i++){
		a[i]=0;
	}
	scanf("%d",&n);
	getchar();
	while(n--){
		gets(str);
		s=0;
		for(int i=0;i<strlen(str);i++){
			if(str[i]>='0'&&str[i]<='9') s=str[i]-'0'+s*10;
			else break;
		}
		if(s>=1&&s<=25)a[0]++;
		else if(s>=26&&s<=55)a[1]++;
		else if(s>=56&&s<=69)a[2]++;
		else if(s>=70&&s<=103)a[3]++;
		else if(s>=104&&s<=125)a[4]++;
		else if(s>=200&&s<=230)a[5]++;
		else if(s>=231&&s<=250)a[6]++;
		else a[7]++;
	}
	printf("%d %d %d %d %d %d %d %d",a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7]);
	return 0;
}

\(f\)

类型同上。

#include<stdio.h>
int y[5],b[5],t[5],s[5],m[5],j,k;
char a[100000],ch;
int main() {
	int i,n;

	gets(a);
	char *p=a;
	i=0;
	while(*p!='\0') {

		ch=*p;
		if(*p!='.')
			y[i]=(ch-48)+y[i]*10;
		else i++;
		*p++;
	}
	gets(a);
	p=a;
	i=0;
	while(*p!='\0') {

		ch=*p;
		if(*p!='.')
			b[i]=(ch-48)+b[i]*10;
		else i++;
		*p++;
	}
	for(i=0; i<4; i++) {
		t[i]=(y[i]&b[i]);
	}
	scanf("%d",&n);
	getchar();
	for(k=0; k<n; k++) {
		int flag=0;
		gets(a);
		p=a;
		i=0;
		for(j=0; j<4; j++) {
			s[j]=0;
			m[j]=0;
		}
		while(*p!='\0') {
			ch=*p;
			if(*p!='.')
				s[i]=(ch-48)+s[i]*10;
			else {
				m[i]=(s[i]&b[i]);
				if(m[i]!=t[i]) {

					flag=1;
				}
				i++;
			}
			p++;
		}
		if(flag==0)
			printf("INNER\n");
		else
			printf("OUTER\n");

	}
}

标签:int,题解,void,学期,++,&&,ans,9.6,now
From: https://www.cnblogs.com/edgrass/p/17680863.html

相关文章

  • Iksevi 题解
    题目大意\(n\)次询问,每次给定一个点\((x,y),x\ge0,y\ge0\),问有多少种对角线长为偶数的正方形使得在用该正方形正密铺第一象限的情况下该点位于正方形顶点上。正密铺第一象限指将第一个正方形的角与\(x\)轴和\(y\)轴接触。此后的正方形都与至少一个已放置的正方形有一......
  • 【题解】CF1852C Ina of the Mountain
    我们先从题目的一部分入手。如果说,我们没有当一个数为\(0\)时,让这个数变成\(k\)的性质,我们如何求答案呢?很简单,在图上就是:绿色线段的长度加起来即为答案(本图中是\(6\))我们考虑很显然地,将一个数从\(0\)变为\(k\)即为将一个数一开始加上\(k\)我们如果要让第\(i\)列......
  • Java语言与其环境:常见问题解答
    Java语言与其环境:常见问题解答在本博客文章中,将深入探讨Java编程语言的特点和环境,解释一些常见的关于Java的疑问。Java语言的特点是什么?Java是一种高级编程语言,它具有以下几个主要的特点:简单:Java的语法与C和C++非常相似,但它消除了这两种语言中的许多复杂和很少使用的特性,如......
  • 【题解】ABC318
    AtCoder-ABC318AFullMoon暴力枚举判断。提交记录:Submission-AtCoderAtCoder-ABC318BOverlappingSheets暴力枚举判断。提交记录:Submission-AtCoderAtCoder-ABC318CBlueSpring使用通票一定是用在最大的\(kd\)天,排序后枚举\(k\)即可。提交记录:Submission-AtC......
  • CF1854 题解
    CF1854题解A首先考虑只有非负的情况,次数完全可以接受\(19\)次,所以直接用\(19\)次做一次前缀和就可以保证单调不降了。现在有了负数,考虑将负数变成正数,选出正数当中的最大值,然后用\(a_i+a_i\toa_i\)这样自增的方式让它的绝对值大于负数最大值,因为绝对值小于等于\(20......
  • 【题解】NOIP2022
    怎么看T3也不是那么难,可是为啥赛时就是被卡死了[难过]不补\(B\)题了,ad-hoc。A.种花题目描述:小C决定在他的花园里种出\(\texttt{CCF}\)字样的图案,因此他想知道\(\textttC\)和\(\textttF\)两个字母各自有多少种种花的方案;不幸的是,花园中有一些土坑,这些位置无法种......
  • AT318 A-G 题解
    A枚举\(1\simn\)的每个数,判断是否有\(i-M\equiv0\pmodP\)即可。赛时代码B暴力覆盖即可,注意\(x,y\)均是左开右闭。赛时代码C贪心的想,如果要替换\(i\)项,那必然是替换最大的\(i\)项,因此只需要对\(f\)排序,预处理后缀和后再扫一遍取替换前\(i\)项的最小值即可......
  • 湖北省选模拟 2023 部分题解
    质量不错。为什么湖北会有这么hard的省选啊/fn。D1T1\(\color{Gold}\bigstar\)第一题就不会是我没想到的。考虑一下简单情况,一条链咋做,每次操作相当于把一个空隙的大小减小\(2\),因此可以进行一个dp。具体咋dp,先咕。然后考虑只有一个环咋做,如果是偶环,那么肯定是一直操......
  • 【 LeetCode题解 】203. 移除链表元素
    【LeetCode题解】203.移除链表元素题目链接:https://leetcode.cn/problems/remove-linked-list-elements/博客主页链接:DuckBro博客主页关注博主,后期持续更新系列文章***感谢观看,希望对你有所帮助***目录【LeetCode题解】203.移除链表元素......
  • Xcode,swift:Error Domain=kCLErrorDomain Code=1 "(null)"问题解决
    问题描述:iOS开发时,当使用用户的位置权限时,获取用户经纬度报错:ErrorDomain=kCLErrorDomainCode=1"(null)",错误域=kCLError域代码=1“(null)”解决方法:打开模拟机的设置-通用-语言与地区将地区设置为中国(如果你的开发位置在中国的话) 点击左上方Features,选择Locati......