小紫的总分
题目描述
运行代码
#include<iostream>
using namespace std;
int main(){
int a,b,c,d,e,sum;
cin>>a>>b>>c>>d>>e;
sum=a+b+c+d+e;
if(sum>100){
cout<<"YES";
}
else cout<<"NO";
return 0;
}
代码思路
数学思想,一个简单的数学题
小蓝的旅游
题目描述
运行代码
#include<iostream>
using namespace std;
int main(){
int n,m;
cin>>n>>m;
if (n % 2 == 0||n%2==1&&m%2==1)
cout<<"YES";
else if(n%2==1&&m%2==0)
cout<<"NO";
return 0;
}
代码思路
首先,分析是否存在哈密顿路径的条件。
- 当
n
和m
都是奇数时,肯定不存在,因为无法不重复地遍历所有点并到达终点。 - 当
n
或m
中有一个为 1 且另一个大于 1 时,也不存在,因为这样会导致某些点无法遍历到。
如果不满足以上这些不能存在的情况,那么就认为存在哈密顿路径。
小粉的“好数”
题目描述
运行代码
#include <iostream>
using namespace std;
bool Number(int num) {
int d = 0;
int t = num;
while (t > 0) {
d += t% 10;
t /= 10;
}
if (d % 2 == 0 && (d >= num || (d< num && Number(d)))) {
return true;
}
return false;
}
int count(int n) {
int count = 0;
for (int i = 1; i <= n; i++) {
if (Number(i)) {
count++;
}
}
return count;
}
int main() {
int n;
cin >> n;
int s = count(n);
cout << s << endl;
return 0;
}
代码思路
-
Number(int num)
函数:- 输入:一个整数
num
- 功能:判断该整数是否满足上述条件。
- 首先,计算
num
的各位数字之和d
。 - 然后检查
d
是否为偶数,以及是否满足条件2(即d >= num
或者在不满足时递归调用Number(d)
直到找到满足条件的数)。 - 如果满足所有条件,则返回
true
,否则返回false
。
- 首先,计算
- 输入:一个整数
-
count(int n)
函数:- 输入:一个整数
n
- 功能:计算从1到
n
之间有多少个整数满足Number
函数定义的条件。- 通过遍历1到
n
之间的每个数,对每个数调用Number
函数,并根据返回值累加计数器count
。 - 最后返回计数器的值,即满足条件的整数总数。
- 通过遍历1到
- 输入:一个整数
-
main()
函数:- 功能:读取用户输入的一个整数
n
,调用count(n)
函数计算满足条件的整数数量,并输出结果。
- 功能:读取用户输入的一个整数
小黑的区间
题目描述
运行代码
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1e5+5;
int i,j,k,n,m,t,a[N],l;
ll r;
int main(){
ios::sync_with_stdio(0); cin.tie(0);
cin>>n>>m;
l=1;
for(i=1;i<=n;i++){
cin>>k;
if(a[k]&&i-a[k]>m){
l=max(l,a[k]+1);
}
a[k]=i;
r+=i-l+1;
}
cout<<r;
}
代码思路
- 首先定义了一些变量,包括数组
a
用于记录每个颜色上次出现的位置。 - 通过遍历输入的气球颜色序列。
- 对于当前颜色
k
,如果它之前已经出现过(a[k]
不为 0)且当前位置与上次出现位置的间隔大于m
,那么就更新起始的有效区间位置l
为上次出现位置加 1。 - 同时更新
a[k]
为当前位置。 - 每次计算当前位置到起始位置
l
的区间长度i-l+1
并累加到结果r
中。 - 最后输出总的完美区间数量
r
。
动态记录每个颜色的位置和不断调整有效区间的起始位置,来计算满足条件的完美区间的数量。
小绿的房子
题目描述
运行代码
#include<iostream>
using namespace std;
const int N=2e5+5;
int count[N];
struct edge{
int t,next;
} E[N];
int head[N],cnt=1;
// 添加边的函数
void add(int v,int t)
{
count[v]++;
E[cnt].t=t;
E[cnt].next=head[v];
head[v]=cnt++;
}
// 计算节点相关总边数的函数
int calculateTotalEdges(int node) {
int all = count[node] + 1;
for (int j = head[node]; j!= 0; j = E[j].next)
all += count[E[j].t] - 1;
return all;
}
int main()
{
int n;
cin>>n;
for(int i=1;i<n;i++)
{
int a,b;
cin>>a>>b;
add(a,b);
add(b,a);
}
int ans=0;
for(int i=1;i<=n;i++)
{
int totalEdges = calculateTotalEdges(i);
if (totalEdges == n)
ans++;
}
cout<<ans<<endl;
return 0;
}
代码思路
- 这段代码主要是构建了一个图的结构,并通过一些计算来统计满足特定条件的节点数量。
count[N]
用于记录每个节点的关联边数。edge
结构体表示边,包含目标节点和下一条边的指针。add
函数用于添加边,并更新相关计数和链表。- 在
main
函数中,输入节点数n
后构建图,然后通过遍历计算每个节点相关的总边数,判断是否满足特定条件来统计结果。