2025 11联测9

王老师的首尾最大数

 文件 IO比赛题目

时间限制: 1000MS空间限制: 256MB

题目描述

为了出题目,王老师新定义了一个概念——首尾数

对于一个数字而言,将它的第一位和最后一位数字相加,就是它的 首尾数

现在王老师给出 n 个数字,请你找出其中 首尾数 最大的数字

如果存在多个 首尾数 最大的数字,请输出本身数字最小的那个数字

输入格式

输入第一行包含一个整数 n 表示数字数量

输入第二行包含 n 个整数,分别表示每个数 ai​

输出格式

按题目要求输出答案

样例输入 1 

3
3
456
78

样例输出 1 

78

样例输入 2 

5
418
523
666
32999
6

样例输出 2 

6

提示/说明

数据范围

对于 100% 的数据 1≤n≤1000,1≤ai​≤100000

样例解释

3 的首尾数为 3+3=6
456 的首尾数为 4+6=10
78 的首尾数为 7+8=15

所以首尾数最大的是 78

样例解释2

418,666,32999,6 的首尾数都是 12,6 是其中最小的数字

代码:

#include<bits/stdc++.h>
using namespace std;
#define int long long

signed main(){
    freopen("num.in","r",stdin);
    freopen("num.out","w",stdout);
    
    int n;
    cin >> n;
    int ans = LLONG_MAX; 
    int mx = -1;
    
    while(n--){
        string s;
        cin >> s;
        int a = (s[0] - '0') + (s[s.size() - 1] - '0');
        int num = stoi(s);
        
        if(a > mx){
            mx = a;        
            ans = num;   
        }
        else if(a == mx){ 
            if(num < ans){ 
                ans = num;
            }
        }
    }
    
    cout << ans;
    return 0;
}

王老师的组队比赛

 文件 IO比赛题目

时间限制: 1000MS空间限制: 256MB

题目描述

王老师准备从新的集训队中选拔一部分同学去参加天梯赛

班级里一共有 n 名同学,但是这 n 名同学的关系有好有坏,有些同学之间关系非常好,而有些同学之间可能存在矛盾或冲突。

为了确保队伍的和谐与比赛的成绩,王老师决定从这些同学中选拔尽可能多且不会产生矛盾的同学去参加比赛,毕竟就算每个人只会做送分题,十个人也有 1000 分!

现在王老师统计了 m 条关系,每条关系用两个编号 x,y 表示,表示 x 和 y 同学存在矛盾,不能同时选这两位同学去参赛

现在王老师想知道,最多可以选择多少人去参加比赛?

输入格式

输入第一行包含两个整数 n,m,含义如题

接下来 m 行,每行包含两个整数 x,y,表示两位有矛盾的同学

输出格式

输出第一行包含一个整数表示最多选多少同学参赛

第二行从小到大依次输出被选同学的编号,如果存在多组不同的方案,则输出字典序最小的那组

样例输入 1 

7 10
1 2
1 4
2 4
2 3
2 5
2 6
3 5
3 6
4 5
5 6

样例输出 1 

3
1 3 7

提示/说明

数据范围

一共 10 组测试数据

其中编号 1∼2 的数据满足:m=0;

其中编号 3∼4 的数据满足:m=(n∗(n−1))/2;

对于所有的数据满足 n≤20,m≤100,且关系不会出现重复((2,4)(4,2) 这两组关系也属于重复)

代码(优化到极致最后一个点也wa/)

#include<bits/stdc++.h>
using namespace std;
#define int long long
bool a[105][105];
vector<int>cnt;
signed main(){
    freopen("race.in","r",stdin);
    freopen("race.out","w",stdout);
    int n,m;cin>>n>>m;
    int ans=0;
    
    while(m--){
        int x,y;
        cin>>x>>y;
        a[x][y]=1;
        a[y][x]=1;
    }
    for(int i = 1; i< (1 << n); i++){
        vector<int>v;
        for(int j = 0; j < n; j++){
            if((i >> j) & 1){
                v.push_back(j+1);
            }
        }
        bool f=1;
        for(int k=0;k<v.size();k++){
            for(int j=k+1;j<v.size();j++){
                if(a[v[k]][v[j]]==1){
                    f=0;
                    break;
                }
            }
        }
        if(f&&v.size()>ans){
            ans=v.size();
            cnt=v;
        }
    }
    cout<<ans<<"\n";
    for(auto x:cnt){
        cout<<x<<" ";
    }
    return 0;
}

代码(dfs)

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int a[110][110],b[110],n,m,u,v,cnt,res1[110],res2[110];
void dfs(int x){
    if(x-1>cnt){
        cnt=x-1;
        memset(res2,0,sizeof(res2));
        for(int i=1;i<=cnt;++i)res2[res1[i]]=1;
    }
    for(int i=res1[x-1]+1;i<=n;++i){
        if(!b[i]){
            res1[x]=i;
            ++b[i];
            for(int j=1;j<=n;++j)if(a[i][j])++b[j];
            dfs(x+1);
            for(int j=1;j<=n;++j)if(a[i][j])--b[j];
            --b[i];
        }
    }
}
int main(){
    
    freopen("race.in","r",stdin);
    freopen("race.out","w",stdout);
    cin>>n>>m; 
    for(int i=1;i<=m;++i){
        cin>>u>>v;
        a[u][v]=a[v][u]=1;
    }
    dfs(1);
    cout<<cnt<<endl;
    for(int i=1;i<=n;++i){
        if (res2[i]){
            cout << i << " ";
        }
    }
    return 0;
}

王老师的数学函数

 文件 IO比赛题目

时间限制: 1000MS空间限制: 256MB

题目描述

王老师热爱数学,而这天石老师决定考考王老师

石老师设定了一个函数 fun(x),这个函数的意义是计算 x 的因数个数

例如 fun(12)=6,因为 12 有 6 个因数:1,2,3,4,6,12

而石老师提出的问题是,给出一个区间 [l,r] 他希望王老师计算 fun(l)+fun(l+1)+fun(l+2)⋯+fun(r) 的结果,即 ∑i=lr​fun(i) 的和

由于数字范围不大,所以王老师轻松解决了这个问题

但是接着王老师就想到了一个问题,如果这道题的数字变大呢?

为了方便让所有数字变大,王老师想到的方案是——让所有数字变成 n 次幂!

也就是现在王老师会给出一个区间 [l,r] 和一个整数 n,他希望计算 fun(ln)+fun((l+1)n)+fun((l+2)n)⋯+fun(rn) 的结果,即 ∑i=lr​fun(in) 的和

这个问题让王老师很满意,于是他决定用这个问题来考考你,由于结果可能很大,请你将结果对 1000000007 取模

输入格式

输入一行包含三个整数 l,r,n 含义如题

输出格式

输出一个整数表示答案,并将答案对 1000000007 取模

样例输入 1 

1 12 2 

样例输出 1 

66

样例输入 2 

1 100 2

样例输出 2 

1194

提示/说明

数据范围

测试点编号rn
1∼3≤100=1
4∼6≤1000=1000
7∼10≤1e12=10000000

对于所有数据满足 r−l≤1e6

代码

(没写出来放最后了)

逐花归海 花海

 文件 IO比赛题目

时间限制: 3000MS空间限制: 512MB

题目描述

王老师来到了一片灿烂的花海,这片花海由山神打理,修理成了一个n×m的矩形

每朵花都有一个好看值,王老师喜欢好看的花。

王老师和山神达成了一笔交易,山神给了王老师一张神奇的网,这张网只能网住一个”口“形区域,并且王老师只能带走”口型“区域边缘的花。换言之,王老师需要选出一个区域(i1​,j1​),(i2​,j2​)(分别表示左上角和右下角),然后获得(i1​,j1​),(i1​+1,j1​),...(i2​,j1​),(i1​,j2​),(i1​+1,j2​),...(i2​,j2​)(i1​,j1​+1),(i1​,j1​+2),...,(i1​,j2​−1),(i2​,j1​+1),(i2​,j1​+2),...,(i1​,j2​−1)上的花,1≤i1​<i2​≤n,1≤j1​<j2​≤m。

王老师希望最后获得的花的好看值之和最大。

输入格式

第一行两个整数 n,m

接下来 n 行,每行 m 个数,表示花的美丽值 ai,j​

输出格式

一个整数,表示获得的花的好看值之和的最大值

样例输入 1 

5 4
3 -2 -2 -4
0 4 2 1
5 -1 0 -2
-6 -1 1 -1
1 3 -1 0

样例输出 1 

10

样例输入 2 

见下发大样例

样例输出 2 

见下发大样例

样例输入 3 

见下发大样例

样例输出 3 

见下发大样例

提示/说明

样例解释:

选择子矩阵

0 4 2
5 -1 0

此时和最大为10

【子任务】

对于30%的数据,2≤n,m≤10

对于50%的数据,2≤n,m≤100。

对于100%的数据,2≤n,m≤105,n×m≤2×105,∣ai,j​∣≤100

代码😁😁😁

#include <bits/stdc++.h>
using namespace std;
const int N = 450;
vector<int> row[N], col[N], a[N];
int f[200005], n, m;
int main() {
 freopen("flower.in","r",stdin);
 freopen("flower.out","w",stdout);
	scanf("%d%d", &n, &m);
	if (n < m) {
		for (int i = 0; i <= n; ++i) {
			a[i].resize(m + 1);
			row[i].resize(m + 1);
			col[i].resize(m + 1);
			for (int j = 0; j <= m; ++j)
				a[i][j] = row[i][j] = col[i][j] = 0;
		}
		for (int i = 1; i <= n; ++i)
			for (int j = 1; j <= m; ++j)
				scanf("%d", &a[i][j]);
	} else {
		for (int i = 0; i <= m; ++i) {
			a[i].resize(n + 1);
			row[i].resize(n + 1);
			col[i].resize(n + 1);
			for (int j = 0; j <= n; ++j)a[i][j] = row[i][j] = col[i][j] = 0;
		}
		for (int i = 1; i <= n; ++i)
			for (int j = 1; j <= m; ++j)
				scanf("%d", &a[j][i]);
		swap(n, m);
	}
	for (int i = 1; i <= n; ++i)
		for (int j = 1; j <= m; ++j) {
			row[i][j] = row[i][j - 1] + a[i][j];
			col[i][j] = col[i - 1][j] + a[i][j];
		}
	int ans = -1e9;
	for (int l = 1; l <= n; ++l)
		for (int r = l + 1; r <= n; ++r) {
			f[m + 1] = -1e9;
			for (int i = m; i >= 1; --i)
				f[i] = max(f[i + 1], row[l][i - 1] + row[r][i - 1] + col[r][i] - col[l - 1]
						   [i]);
			for (int i = 1; i < m; ++i)
				ans = max(ans, -row[l][i] - row[r][i] + col[r][i] - col[l - 1][i] + f[i +
					1]);
		}
	printf("%d\n", ans);
	return 0;
}

猜你划到最后在找第4题代码

#include<cstdio>
typedef long long ll;
const int N=1000010,P=1000000007;
int i,j,k,p[N/10],tot,g[N],ans;
ll n,l,r,f[N];
bool v[N];
inline void work(ll p) {
	for(ll i=l/p*p; i<=r; i+=p)if(i>=l) {
		int o=0;
		while(f[i-l]%p==0)f[i-l]/=p,o++;
		g[i-l]=1LL*g[i-l]*(o*k+1)%P;
	}
}
int main() {
	
	freopen("function.in","r",stdin);
	freopen("function.out","w",stdout);
	for(i=2; i<N; i++) {
		if(!v[i])p[tot++]=i;
		for(j=0; j<tot&&i*p[j]<N; j++) {
			v[i*p[j]]=1;
			if(i%p[j]==0)break;
		}
	}
	scanf("%lld%lld%d",&l,&r,&k);
	n=r-l;
	for(i=0; i<=n; i++)f[i]=i+l,g[i]=1;
	for(i=0; i<tot; i++) {
		if(1LL*p[i]*p[i]>r)break;
		work(p[i]);
	}
	for(ans=i=0; i<=n; i++) {
		if(f[i]>1)g[i]=1LL*g[i]*(k+1)%P;
		ans=(ans+g[i])%P;
	}
	printf("%d",ans);
	return 0;
}
### 产品联合测试流程和注意事项 产品联合测试(简称“联测”)是软件开发过程中一个关键环节,特别是在多个团队或模块协同开发的场景中。其主要目的是验证不同模块、系统或服务之间的接口是否能够正确交互,确保整体功能的完整性和稳定性。 #### 联测流程 1. **需求对齐与测试计划制定** 在联测开始前,各方需对产品需求、功能边界、接口规范进行明确,并制定详细的测试计划,包括测试范围、测试用例设计、测试环境准备、测试时间安排等。 2. **接口文档准备与评审** 各方需提供完整的接口文档,包括请求方式、参数说明、返回值格式、错误码定义等。通过文档评审确保接口设计合理且无歧义。 3. **测试环境搭建与接口联调** 搭建与生产环境尽可能一致的测试环境,进行接口联调。此阶段主要验证接口是否能正常通信,响应是否符合预期。 4. **执行测试用例与缺陷管理** 根据测试计划执行测试用例,记录测试结果。发现缺陷后需及时提交并跟踪修复情况,确保问题闭环。 5. **回归测试与验收确认** 缺陷修复后进行回归测试,验证问题是否彻底解决。最终由相关方确认测试结果,完成联测交付。 6. **联测总结与文档归档** 联测结束后进行总结,分析测试过程中的问题与经验,归档测试文档,为后续维护和升级提供依据。 #### 注意事项 - **接口一致性** 确保接口在开发与测试阶段保持一致性,避免因接口变更导致测试失败。如有变更,应及时同步文档并通知相关方。 - **数据隔离与安全性** 测试数据应与生产数据隔离,防止测试行为影响真实业务。同时需注意敏感数据的脱敏处理。 - **异常处理与容错机制** 需对接口异常情况进行测试,如超时、参数错误、服务不可用等,确保系统具备良好的容错能力。 - **日志与监控** 联测过程中应开启详细的日志记录,便于问题定位。建议引入监控工具,实时观察接口调用状态与性能。 - **沟通与协作机制** 联测涉及多方协作,需建立高效的沟通机制,及时处理测试中发现的问题,避免因沟通不畅影响进度。 - **自动化测试支持** 建议在联测阶段引入自动化测试工具,提升测试效率与覆盖率,尤其适用于回归测试。 #### 示例:接口联测测试用例(伪代码) ```python def test_api_response(): # 请求参数 payload = { "user_id": 12345, "token": "abc123xyz" } # 发起请求 response = api_client.post("/user/profile", data=payload) # 验证响应状态码 assert response.status_code == 200 # 验证返回数据结构 assert "username" in response.json() assert "email" in response.json() # 验证错误处理 invalid_payload = {"user_id": None} error_response = api_client.post("/user/profile", data=invalid_payload) assert error_response.status_code == 400 ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值