2021春季每日一题week7 未完结
Posted 辉小歌
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2021春季每日一题week7 未完结相关的知识,希望对你有一定的参考价值。
目录
- 1011. 在 D 天内送达包裹的能力【二分】
- 680. 剪绳子【二分】
- 938. 二叉搜索树的范围和
- 1589. 构建二叉搜索树
- 633. 平方数之和
- 1221. 四平方和【思维+二分】
- 403. 青蛙过河【未完成 DP】
- 1205. 买不到的数目
- 137. 只出现一次的数字 II
- 73. 数组中只出现一次的两个数字
- 690. 员工的重要性【DFS】
- 53. 最小的k个数
- 554. 砖墙【未完成】
- 1540. 主导颜色
1011. 在 D 天内送达包裹的能力【二分】
class Solution
public:
bool check(vector<int> ve,int x,int w)
int cnt=1,sum=0;
for(int i=0;i<ve.size();i++)
if(ve[i]>x) return false;
sum+=ve[i];
if(sum>x) cnt++,sum=ve[i];
return cnt<=w;
int shipWithinDays(vector<int>& weights, int days)
int l=0,r=1e9;
while(l<r)
int mid=l+r>>1;
if(check(weights,mid,days)) r=mid;
else l=mid+1;
return l;
;
680. 剪绳子【二分】
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
double a[N];
int n,m;
bool check(double mid)
int cnt=0;
for(int i=0;i<n;i++) cnt+=a[i]/mid;
return cnt>=m;
int main(void)
cin>>n>>m;
for(int i=0;i<n;i++) cin>>a[i];
double l=0,r=1e9;
while(r-l>1e-4)
double mid=(l+r)/2;
if(check(mid)) l=mid;
else r=mid;
printf("%.2lf",l);
return 0;
938. 二叉搜索树的范围和
/**
* Definition for a binary tree node.
* struct TreeNode
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode() : val(0), left(nullptr), right(nullptr)
* TreeNode(int x) : val(x), left(nullptr), right(nullptr)
* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right)
* ;
*/
class Solution
public:
int sum=0;
void dfs(TreeNode* root, int l, int r)
if(root->val>=l&&root->val<=r) sum+=root->val;
if(root->left) dfs(root->left,l,r);
if(root->right) dfs(root->right,l,r);
int rangeSumBST(TreeNode* root, int low, int high)
dfs(root,low,high);
return sum;
;
1589. 构建二叉搜索树
#include<bits/stdc++.h>
using namespace std;
const int N=1e3+10;
unordered_map<int,int>l,r;
int n,a[N],idx,ans[N];
void dfs(int u)
if(l[u]!=-1) dfs(l[u]);
ans[u]=a[idx++];
if(r[u]!=-1) dfs(r[u]);
void print()
queue<int>q; q.push(0);
vector<int>ve;
while(q.size())
int t=q.front(); q.pop();
ve.push_back(ans[t]);
if(l[t]!=-1) q.push(l[t]);
if(r[t]!=-1) q.push(r[t]);
for(int i=0;i<ve.size();i++)
if(i) cout<<" ";
cout<<ve[i];
int main(void)
cin>>n;
for(int i=0;i<n;i++)
int id1,id2; cin>>id1>>id2;
l[i]=id1,r[i]=id2;
for(int i=0;i<n;i++) cin>>a[i];
sort(a,a+n);
dfs(0);
print();
return 0;
633. 平方数之和
class Solution
public:
bool judgeSquareSum(int c)
if(!c) return true;
for(int i=1;i<=sqrt(c);i++)
int sum=c-i*i;
int temp=sqrt(sum);
if(temp*temp==sum) return true;
return false;
;
1221. 四平方和【思维+二分】
#include<cstring>
#include<cstdio>
#include<iostream>
#include<cmath>
#include<algorithm>
using namespace std;
const int N=1e7+10;
struct node
int x,y,s;
ve[N];
int n;
bool cmp(node a,node b)
if(a.s==b.s)
if(a.x==b.x) return a.y<b.y;
return a.x<b.x;
return a.s<b.s;
int main(void)
cin>>n;
int k=0;
for(int i=0;i*i<=n;i++)
for(int j=i;j*j+i*i<=n;j++)
ve[k++]=i,j,i*i+j*j;
sort(ve,ve+k,cmp);
for(int i=0;i*i<=n;i++)
for(int j=i;j*j+i*i<=n;j++)
int temp=n-i*i-j*j;
int l=0,r=k-1;
while(l<r)
int mid=(l+r)/2;
if(ve[mid].s>=temp) r=mid;
else l=mid+1;
if(ve[l].s==temp)
printf("%d %d %d %d\\n",i,j,ve[l].x,ve[l].y);
return 0;
return 0;
403. 青蛙过河【未完成 DP】
1205. 买不到的数目
#include<bits/stdc++.h>
using namespace std;
int a,b;
int main(void)
cin>>a>>b;
cout<<(a-1)*(b-1)-1;
return 0;
137. 只出现一次的数字 II
class Solution
public:
int singleNumber(vector<int>& nums)
map<int,int>mp;
for(int i=0;i<nums.size();i++) mp[nums[i]]++;
int ans=0;
for(auto i=mp.begin();i!=mp.end();i++)
if(i->second==1) ans=i->first;
return ans;
;
73. 数组中只出现一次的两个数字
class Solution
public:
vector<int> findNumsAppearOnce(vector<int>& nums)
vector<int>ans;
map<int,int>mp;
for(int i=0;i<nums.size();i++) mp[nums[i]]++;
for(auto i=mp.begin();i!=mp.end();i++)
if(i->second==1) ans.push_back(i->first);
return ans;
;
690. 员工的重要性【DFS】
/*
// Definition for Employee.
class Employee
public:
int id;
int importance;
vector<int> subordinates;
;
*/
class Solution
public:
map<int,int>mp;
int dfs(int id,vector<Employee*> employees)
int u=mp[id];
int sum=employees[u]->importance;
vector<int>ve=employees[u]->subordinates;
for(int i=0;i<ve.size();i++)
sum+=dfs(ve[i],employees);
return sum;
int getImportance(vector<Employee*> employees, int id)
for(int i=0;i<employees.size();i++)
int k=employees[i]->id;
mp[k]=i;
return dfs(id,employees);
;
53. 最小的k个数
class Solution
public:
vector<int> getLeastNumbers_Solution(vector<int> input, int k)
sort(input.begin(),input.end());
vector<int> ans;
for(int i=0;i<k;i++) ans.push_back(input[i]);
return ans;
;
554. 砖墙【未完成】
1540. 主导颜色
#include<bits/stdc++.h>
using namespace std;
int x,n,m;
stack<int>st;
int main(void)
cin>>m>>n;
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
int x; cin>>x;
if(st.empty()) st.push(x);
else if(st.top()!=x) st.pop();
else if(st.top()==x) st.push(x);
cout<<st.top();
return 0;
以上是关于2021春季每日一题week7 未完结的主要内容,如果未能解决你的问题,请参考以下文章