适合小型网络公司的建站方式可以为,房地产开发公司账务处理流程,公众号推广一个6元,网站建设正版软件A:无穷力量
题目描述
2022年重庆突发山火让世界看到了中国一个又一个的感人事迹#xff1a;战士们第一时间奔赴火场#xff0c;志愿者们自发组成团队#xff0c;为救火提供一切的可能的服务#xff0c;人们自发输送物资#xff0c;有的志愿者甚至几天几夜没有睡觉。每个…A:无穷力量
题目描述
2022年重庆突发山火让世界看到了中国一个又一个的感人事迹战士们第一时间奔赴火场志愿者们自发组成团队为救火提供一切的可能的服务人们自发输送物资有的志愿者甚至几天几夜没有睡觉。每个人献出一点力造就了集体的无穷力量。山火被灭后记者想统计共有多少人志愿者参加了灭火行动他在山脚共找到了N个不同的志愿者进行调查。这N个被调查的志愿者回答如下 第1位志愿者回答和我一起行动的除了我之外还有A[1]个人。 第2位志愿者回答和我一起行动的除了我之外还有A[2]个人。 第3位志愿者回答和我一起行动的除了我之外还有A[3]个人。 。。。。。。 第N位志愿者回答和我一起行动的除了我之外还有A[N]个人。 假设这N位志愿者都没有记错那么至少有多少志愿者参与了灭火 输入
分两行输入。 第一行一个整数N。 第二行N个整数空格分开第i个整数表示A[i]。 输出
一个整数表示至少有多少个志愿者。
样例输入 Copy
【样例1】
4
1 2 1 2
【样例2】
9
2 2 44 2 2 2 444 2 2样例输出 Copy
【样例1】
5
【样例2】
499提示
对于100%的数据3N500A[i]1000000。
#include bits/stdc.h
using namespace std;
mapint, intmp;
int main()
{int n; cin n;for (int i 1; i n; i){int num;scanf(%d, num); mp[num];}int sum 0;for (auto it : mp){sum it.first;while (mp[it.first] it.first){mp[it.first] - it.first;sum it.first;}}if (sum n) printf(%d\n, sum); else printf(%d\n, n); return 0;
}
B:幸运位置
题目描述
刀越磨越快脑子越用灵。不管什么事情小宏总是喜欢多思考。今天他和小伙伴们玩一个游戏n个人围成一圈从第1个位置开始报数每隔m个人报一次数每次报数的人要表演节目这样很有可能有人不用表演节目。例如有6个人每隔3报数报数的位置则是1、5、3、1、5、3……这样位置2、4、6的人就不用表演节目。小宏想考考你在玩游戏前根据n和m迅速找出这些不用表演节目的位置。
输入
共一行两个整数n和m。1n10000, 1m1000。
输出
共一行不用表演节目的位置如果所有位置都要表演节目则输出”NO”。
样例输入 Copy
【样例1】
6 3
【样例2】
5 3样例输出 Copy
【样例1】
2 4 6
【样例2】
NO/*一个大佬的方法*/
#includebits/stdc.h
using namespace std;
typedef long long int ll;
#define N 1000009
int arr[N];
int main()
{int n, m, i 1, ans 0;scanf(%d%d, n, m);while (arr[i] 0){arr[i] 1;i (m 1);if (i ! n) i % n;}for (int i 1; i n; i){if (arr[i] 1) ans;else printf(%d , i);}if (ans n) puts(NO);return 0;
}/*我的方法*/
#include bits/stdc.h
using namespace std;
setintarr;
int main()
{int n, m;scanf(%d%d, n, m);int idx 1, cntof1 0, cnt 0;while (cntof1 2){cnt;if (idx % n 0) arr.insert(n);else arr.insert(idx % n);if (idx % n 1) cntof1;idx m 1;}if (arr.size() n) printf(NO\n);elsefor (int i 1; i n; i){if (arr.find(i) arr.end()) printf(%d , i);}return 0;
} G:智力测试题
题目描述
牛牛同学智商为-1e9但是他既不谦虚又不低调很喜欢炫耀他的智商。 现在牛牛就来测智商了题目是这样。 已知一个n乘以n的矩阵有一个小球一开始在(1,1)处小球每秒都会向右走一格如果到达最右边小球就会掉落在下一行的第一格。 如果到达(n, n)则返回(1,1)。现在给定n和时间t请你输出小球最后所在的行和列。
输入
一行两个正整数n和t。
输出
两个整数代表小球最终的行和列。
样例输入 Copy
【样例 1 输入】
3 5
【样例 2 输入】
4 2
【样例 3 输入】
2 7
样例输出 Copy
【样例 1 输出】
2 3
【样例 2 输出】
1 3
【样例 3 输出】
2 2提示
【数据范围】 对于 50% 数据保证t ≤ n2 − 1 对于 80% 数据保证t ≤ n2 对于 100% 数据保证1 ≤ n ≤ 100 ≤ t ≤ 500 题目数据比较毒瘤请考虑所有情况。
#include stdio.h
int main()
{int n, t;scanf(%d%d, n, t);if (!((t / n 1) % n)) printf(%d , n);else printf(%d , (t / n 1) % n);printf(%d\n, 1 t % n);return 0;
} H:采集灵石
题目描述
牛牛打开了一个有趣的游戏。在游戏中灵石是一种非常重要的资源。每位玩家每天有且仅有一次采集的机会。
灵石会在许多浮岛上刷新每个浮岛上灵石刷新数量可能不同。这些浮岛之间通过传送法阵相连激活每个岛屿上的传送法阵花费的灵石数量也不同。玩家可以耗费mi 块灵石从任意一个其他浮岛或初始平台前往第i个浮岛。采集完毕后玩家
可以从任何浮岛直接退出地图。
现在牛牛手中有着K块灵石他想知道自己今天采集结束后最多能拥有多少块灵石。牛牛只能在周末玩一小时游戏他希望你能编写一个程序帮他及时算出来。
输入
第一行两个正整数N, K分别表示浮岛的数量和牛牛手中初始的灵石数量。 接下来N行每行两个正整数ki, mi第i行的正整数ki表示第i个浮岛上今日刷新的灵石数量,mi表示传送到第i个浮岛所需的灵石数量。
输出
一个正整数表示牛牛今天采集后最多能拥有的灵石数量。
样例输入 Copy
【样例 1 输入】
3 5
4 3
4 3
4 3
【样例 2 输入】
2 1
5 2
8 2
【样例 3 输入】
2 6
2 3
4 3样例输出 Copy
【样例 1 输出】
8
【样例 2 输出】
1
【样例 3 输出】
7提示
【数据范围】 对于 30% 的数据满足 ki mi 对于 100% 的数据满足0 N, K ≤ 105, 0 ki, mi ≤ 109 保证答案在int范围内。
#include bits/stdc.h
#pragma GCC optimize(2)
using namespace std;
priority_queue pairint,int,vectorpair int,int , greater pairint,int q;
const int N 1e5 10;
int k[N], m[N];
int main()
{int n,K;cin n K;while(n--){int x,y;scanf(%d%d,x,y);if(x y) q.push(make_pair(y,x));}while(q.size()!0){auto t q.top();int y t.first;int x t.second;if(K y){K x - y;q.pop();}else{break;}}cout K endl;return 0;
}
I跳跃的排列
题目描述
小 B 很喜欢排列这次他有一个长为n的排列 a1, a2, ⋯ , an。由于他音游玩多了所以他想让排列也跳跃起来。他定义一次排列的跳跃为
令 bi 表示最大的j (i ≤ j ≤ n)满足 aj ≥ ai则bi aj。最后对于所有i 1 ∼ n将 ai赋值为bi。
他想重复上述操作若干次。若操作k次和操作k 1次序列保持不变那么跳跃停止跳跃次数为k。他想知道排列会跳跃多少次请你来帮他计算一下。
输入
第一行 输入一个数n。第二行输入n个数第i个数表示ai。
输出
输出排列的跳跃次数。
样例输入 Copy
【样例 1 输入】
4
4 1 3 2
【样例 2 输入】
10
1 9 2 6 8 7 4 3 5 10
【样例 3 输入】
8
8 7 6 5 4 3 2 1
样例输出 Copy
【样例 1 输出】
1
【样例 2 输出】
1
【样例 3 输出】
0
提示
【样例 1 说明】 经过1轮操作后序列变成4 2 3 2经过2轮操作后序列仍然是4 2 3 2因此排 列跳跃了1次。 【样例 2 说明】 经过1轮操作后所有数都变成了10经过2轮操作后序列仍然全都是10因此 排列跳跃了1次。 【样例 3 说明】 经过1轮操作后序列仍然是8 7 6 5 4 3 2 1因此排列没有进行跳跃。
【数据范围】 对于奇数编号的数据满足给定的排列形如n, n − 1, ⋯ ,1或1,2, ⋯ , n。
对于30%的数据1 ≤ n ≤ 1000 对于70%的数据1 ≤ n ≤ 105 对于100%的数据1 ≤ n ≤ 106。
#includebits/stdc.h
using namespace std;
const int N 1e6 10;
int a[N], b[N];
int main()
{int n;cin n;for (int i 1; i n; i) scanf(%d, a[i]);b[1] a[1];for (int i 2; i n; i){if (b[i - 1] a[i]) b[i] a[i];else b[i] b[i - 1];}// b数列实时存储当前a数列中的最小值if (a[n] b[n]) puts(0); // j要取最大值看最右端。也就是// 当a里面的数连最小值都不如的时候就没法再替换了故输出0else puts(1);// 反之return 0;
} K:最接近
小明同学最近正在研究一些幂次的特性比如 3^2 9 和 4^3 64。小花是小明的好朋友她总是和小明一起学习由于小花刚刚学习幂次很多计算还不太熟练。她很好奇对于任意给出的正整数 N不超过 N 的最大的 2 的幂次方的数是多少例如如果 N 等于 10那么不超过 10 的最大的 2 的幂次方的整数就是 8如果 N 是 100那么不超过 100 的最大的 2 的幂次方的整数就是 64。小花希望你能帮助她解决这个问题。如果你能解决这个问题就能和小花成为好朋友小花希望朋友越多越好。
输入只有一行一个正整数 N。
输出只有一行一个正整数表示不超过 N 的最大的 2 的幂次方的正整数。
样例1 input 10 output 8
样例2 input 100 output 64
1N1e18;
#include bits/stdc.h
using namespace std;
int main()
{long long n;cin n;long long L 1, R 63;while (L R){long long mid (L R) 1;long long ans pow(2, mid);if (ans n) R mid;else if (ans n){if (pow(2, mid 1) n){cout ans;break;}L mid 1;}else{cout ans;break;}}return 0;
}