1.Heaps
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
int a[1010];
bool maxHeap(int* a, int m) {
for(int i=1; i<=m/2; i++) { // 遍历所有非叶子节点
// 如果左右孩子比更大则不是大根堆
if(2*i<=m && a[i] < a[2*i] || 2*i+1<=m && a[i] < a[2*i+1]) return false;
}
return true;
}
bool minHeap(int* a, int m) {
for(int i=1; i<=m/2; i++) {
if(2*i<=m && a[i] > a[2*i] || 2*i+1<=m && a[i] > a[2*i+1]) return false;
}
return true;
}
bool first = true;
void postOrder(int u, int m) {
if(u<=m) {
postOrder(u*2, m);
postOrder(u*2+1, m);
if(!first) printf(" ");
first = false;
printf("%d", a[u]);
}
}
int main(){
int n, m;
scanf("%d%d", &n, &m);
while(n--) {
for(int i=1; i<=m; i++) {
scanf("%d", &a[i]);
}
if(minHeap(a, m)) {
printf("Min Heap\n");
} else if(maxHeap(a, m)) {
printf("Max Heap\n");
} else {
printf("Not Heap\n");
}
first = true;
postOrder(1, m);
printf("\n");
}
return 0;
}
2.铺地砖
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
const int maxn = 10000 + 10;
int f[maxn];
int main(){
int n;
scanf("%d", &n);
f[1] = 1, f[2] = 2;
for(int i=3; i<=n; i++) {
f[i] = f[i-1] + f[i-2];
f[i] %= 999983;
}
printf("%d\n", f[n]);
return 0;
}
3.求众数
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<iostream>
#include<algorithm>
#include<map>
using namespace std;
typedef long long ll;
int main(){
int n;
map<int, int> m;
while(scanf("%d", &n)==1) { // 处理多组数据
m.clear(); // map容器,key为数据,value对于出现的次数
int x;
for(int i=0; i<n; i++) { // 输入n个数字
scanf("%d", &x);
if(m.find(x)!=m.end()) m[x] = 0; // 如果x第一次出现,需要做初始化
m[x]++; // x出现次数加一
}
int maxcnt = 0; // 最多出现次数
int ans = 0; // 对于的数据
for(map<int, int>::iterator it = m.begin(); it != m.end(); it++) { // 遍历map容器
// it->first; // key,即数据
// it->second; // value,即数据出现次数
if(it->second > maxcnt || (it->second==maxcnt && it->first < ans)) { // 遇到一个更优解
maxcnt = it->second; // 更新
ans = it->first;
}
}
printf("%d\n", ans); // 输出
}
return 0;
}