解题思路:把每个竹子被砍一次后剩余的高度存储起来(计数,总共的数量(除了1)),然后拿出来比较(相邻的),如果相同(除1外),则计的数减一。
注意事项:输入如果是1的话也要放进去,不然比较的时候会直接跳过1。
参考代码:
#include<iostream> #include<cstring> #include<math.h> #include<unordered_map> #include<map> #include<vector> #include<queue> #include<algorithm> #define int long long using namespace std; const int N=2e5+100; int n,cnt; vector<int>nums1[N]; unordered_map<int,int>map1; void solve(){ cin>>n; int a; for(int i=0;i<n;i++){ scanf("%lld",&a); while(a>1){ nums1[i].push_back(a); a=(int)sqrt((int)(a/2)+1);//每个都化为1找到相同的。 cnt++; } nums1[i].push_back(a); } for(int i=1;i<n;i++){ for(int j=0;j<(int)nums1[i-1].size();j++){ for(int k=0;k<(int)nums1[i].size();k++){ if(nums1[i-1][j]==nums1[i][k]&&nums1[i][k]!=1) cnt--; } } } cout<<cnt<<endl; } signed main(){ int t=1; //cin>>t; while(t--){ solve(); } }
0.0分
15 人评分
C语言程序设计教程(第三版)课后习题10.3 (C语言代码)浏览:1909 |
图形输出 (C语言代码)浏览:1377 |
C语言程序设计教程(第三版)课后习题9.6 (C语言代码)浏览:580 |
C语言程序设计教程(第三版)课后习题10.3 (C语言代码)浏览:509 |
The 3n + 1 problem (C语言代码)浏览:502 |
企业奖金发放 (C语言代码)浏览:2316 |
图形输出 (C语言代码)浏览:939 |
1231题解(注意理解“输入多个测试实例”)浏览:785 |
【偶数求和】 (C语言代码)浏览:432 |
蛇行矩阵 (Java代码)浏览:661 |