洛谷-入门4-数组3

P2141 [NOIP 2014 普及组] 珠心算测验

题目背景

NOIP2014 普及 T1

题目描述

珠心算是一种通过在脑中模拟算盘变化来完成快速运算的一种计算技术。珠心算训练,既能够开发智力,又能够为日常生活带来很多便利,因而在很多学校得到普及。

某学校的珠心算老师采用一种快速考察珠心算加法能力的测验方法。他随机生成一个正整数集合,集合中的数各不相同,然后要求学生回答:其中有多少个数,恰好等于集合中另外两个(不同的)数之和?

最近老师出了一些测验题,请你帮忙求出答案。

输入格式

共两行,第一行包含一个整数 n,表示测试题中给出的正整数个数。

第二行有 n 个正整数,每两个正整数之间用一个空格隔开,表示测试题中给出的正整数。

输出格式

一个整数,表示测验题答案。

输入输出样例

输入 #1复制

复制代码
4
1 2 3 4

输出 #1复制

复制代码
2

说明/提示

【样例说明】

由 1+2=3,1+3=4,故满足测试要求的答案为 2。

注意,加数和被加数必须是集合中的两个不同的数。

【数据说明】

对于 100% 的数据,3≤n≤100,测验题给出的正整数大小不超过 10,000。

实现代码:

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
long long a[10000];
long long b[10000]={0};

int main(){
	int n;
	cin>>n;
	int t;
	for(int i=1;i<=n;i++){
		cin>>t;
		a[i]=t;
		b[t]=1;
	}
	int sum=0;
	for(int i=1;i<=n-1;i++){
		for(int j=i+1;j<=n;j++){
			int x=a[i]+a[j];
			if(b[x]==1){
				sum++;
				b[x]=0;
			}
		}
	}
	cout<<sum;
	return 0;
}

P1614 爱与愁的心痛

题目背景

(本道题目隐藏了两首歌名,找找看哪~~~)

《爱与愁的故事第一弹·heartache》第一章。

《我为歌狂》当中伍思凯神曲《舞月光》居然没赢给萨顶顶,爱与愁大神心痛啊~~~而且最近还有一些令人伤心的事情,都让人心痛(最近真的很烦哈)......

题目描述

最近有 n 个不爽的事,每句话都有一个正整数刺痛值(心理承受力极差)。爱与愁大神想知道连续 m 个刺痛值的和的最小值是多少,但是由于业务繁忙,爱与愁大神只好请你编个程序告诉他。

输入格式

第一行有两个用空格隔开的整数,分别代表 n 和 m。

第 2 到第 (n+1) 行,每行一个整数,第 (i+1) 行的整数 ai​ 代表第 i 件事的刺痛值 ai​。

输出格式

输出一行一个整数,表示连续 m 个刺痛值的和的最小值是多少。

输入输出样例

输入 #1复制

复制代码
8 3
1
4
7
3
1
2
4
3

输出 #1复制

复制代码
6

说明/提示

数据规模与约定
  • 对于 30% 的数据,保证 n≤20。
  • 对于 60% 的数据,保证 n≤100。
  • 对于 90% 的数据,保证 n≤103。
  • 对于 100% 的数据,保证 0≤m≤n≤3×103,1≤ai≤100。

实现代码:

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
long long a[100000];
long long b[100000]={0};

int main(){
	int n,m;
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	for(int i=1;i<=n-m+1;i++){
		for(int j=i;j<=i+m-1;j++){
			b[i]+=a[j];	
		}
	}
	sort(b+1,b+n-m+1);
	cout<<b[1];
	return 0;
}

P2911 [USACO08OCT] Bovine Bones G

题目描述

Bessie 喜欢桌游和角色扮演游戏,所以她说服了 Farmer John 驾车送她去爱好商店,在那里她购买了三个用于掷骰子的骰子。这些公平的骰子分别有 S1​、S2​ 和 S3​ 个面(2≤S1​≤20;2≤S2​≤20;2≤S3​≤40),上面分别包含 1 到 S1​,S2​ 和 S3​ 之间的所有整数。Bessie 不断地掷骰子,试图找出哪个三个骰子的点数和出现得最频繁。如果有多个和出现得最频繁,输出其中最小的和。

输入格式

第 1 行:三个用空格分隔的整数:S1​、S2​ 和 S3​。

输出格式

第 1 行:当骰子以每种可能的组合掷出时,出现次数最多的最小整数和。

显示翻译

题意翻译

输入输出样例

输入 #1复制

复制代码
3 2 3 

输出 #1复制

复制代码
5 

说明/提示

这里是所有可能的结果。

复制代码
1 1 1 -> 3  
1 2 1 -> 4  
2 1 1 -> 4  
2 2 1 -> 5  
3 1 1 -> 5  
3 2 1 -> 6 
1 1 2 -> 4  
1 2 2 -> 5  
2 1 2 -> 5  
2 2 2 -> 6  
3 1 2 -> 6  
3 2 2 -> 7 
1 1 3 -> 5  
1 2 3 -> 6  
2 1 3 -> 6  
2 2 3 -> 7  
3 1 3 -> 7  
3 2 3 -> 8

5 和 6 都出现得最频繁(各五次),所以答案是 5。

题面翻译由 ChatGPT-4o 提供。

实现代码:

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
long long a[100000];
long long b[100000]={0};

int main(){
	int n,m,z;
	cin>>n>>m>>z;
	
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			for(int k=1;k<=z;k++){
				a[i+j+k]++;
			}
		}
	}
	int max=0;
	int t;
	for(int i=1;i<=100;i++){
		if(a[i]>max){
			max=a[i];
			t=i;
		}
	}
	cout<<t;
	return 0;
}

P1161 开灯

题目描述

在一条无限长的路上,有一排无限长的路灯,编号为 1,2,3,4,...。

每一盏灯只有两种可能的状态,开或者关。如果按一下某一盏灯的开关,那么这盏灯的状态将发生改变。如果原来是开,将变成关。如果原来是关,将变成开。

在刚开始的时候,所有的灯都是关的。小明每次可以进行如下的操作:

指定两个数,a,t(a 为实数,t 为正整数)。将编号为 ⌊a⌋,⌊2×a⌋,⌊3×a⌋,...,⌊t×a⌋ 的灯的开关各按一次。其中 ⌊k⌋ 表示实数 k 的整数部分。

在小明进行了 n 次操作后,小明突然发现,这个时候只有一盏灯是开的,小明很想知道这盏灯的编号,可是这盏灯离小明太远了,小明看不清编号是多少。

幸好,小明还记得之前的 n 次操作。于是小明找到了你,你能帮他计算出这盏开着的灯的编号吗?

输入格式

第一行一个正整数 n,表示 n 次操作。

接下来有 n 行,每行两个数,ai​,ti​。其中 ai​ 是实数,小数点后一定有 6 位,ti​ 是正整数。

输出格式

仅一个正整数,那盏开着的灯的编号。

输入输出样例

输入 #1复制

复制代码
3
1.618034 13
2.618034 7
1.000000 21

输出 #1复制

复制代码
20

说明/提示

记 T=i=1∑n​ti​=t1​+t2​+t3​+⋯+tn​。

  • 对于 30% 的数据,满足 T≤1000;
  • 对于 80% 的数据,满足 T≤200000;
  • 对于 100% 的数据,满足 T≤2000000;
  • 对于 100% 的数据,满足 n≤5000,1≤ai<1000,1≤ti≤T。

数据保证,在经过 n 次操作后,有且只有一盏灯是开的,不必判错。而且对于所有的 i 来说,ti​×ai​ 的最大值不超过 2000000。

实现代码:

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
long long a[10000000]={0};
long long b[100000]={0};

int main(){
	int n;
	cin>>n;
	for(int i=1;i<=n;i++){
		double x,y;
		cin>>x>>y;
		for(int j=1;j<=y;j++){
			if(a[int(j*x)]==0) a[int(j*x)]=1;
			else a[int(j*x)]=0;
		}
	}
	for(int i=1;;i++){
		if(a[i]==1){
			cout<<i;
			return 0;
		}
	}
	return 0;
}

P5731 【深基5.习6】蛇形方阵

题目描述

给出一个不大于 9 的正整数 n,输出 n×n 的蛇形方阵。

从左上角填上 1 开始,顺时针方向依次填入数字,如同样例所示。注意每个数字有都会占用 3 个字符,前面使用空格补齐。

输入格式

输入一个正整数 n,含义如题所述。

输出格式

输出符合题目要求的蛇形矩阵。

输入输出样例

输入 #1复制

复制代码
4

输出 #1复制

复制代码
  1  2  3  4
 12 13 14  5
 11 16 15  6
 10  9  8  7

说明/提示

数据保证,1≤n≤9。

实现代码:

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
long long a[1000][1000];

int main(){
	int n;
	cin>>n;
	int k=1;
	int x=1,y=0;
	while(k<=n*n){
		while(y<n&&!a[x][y+1]){
			a[x][++y]=k++;
		}
		while(x<n&&!a[x+1][y]){
			a[++x][y]=k++;
		}
		while(y>1&&!a[x][y-1]){
			a[x][--y]=k++;
		}
		while(x>1&&!a[x-1][y]){
			a[--x][y]=k++;
		}
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			printf("%3d",a[i][j]);
		}
		cout<<endl;
	}
	return 0;
}
相关推荐
A923A2 小时前
【洛谷刷题 | 第七天】
算法·模拟·洛谷
Yu_Lijing2 小时前
基于C++的《Head First设计模式》笔记——原型模式
c++·笔记·设计模式
玉树临风ives2 小时前
atcoder ABC 451 题解
c++·算法·atcoder
_日拱一卒2 小时前
LeetCode:和为K的子数组
算法·leetcode·职场和发展
周可温8412 小时前
动手学RAG
算法
山西茄子2 小时前
GstAggregator的aggregate
开发语言·前端·javascript·gstreamer
周可温8412 小时前
Transformer 深度理解与动手实现
算法
南境十里·墨染春水2 小时前
C++传记 详解单例模式(面向对象)
开发语言·c++·单例模式
扶摇接北海1762 小时前
洛谷:B4488 [语言月赛 202602] 甜品食用
数据结构·c++·算法