250 条题解
- 
  5不退 LV 8 @ 2018-05-15 23:51:04 不知道这个题为什么难度6…… 
 可能有两个坑:
 1.苹果只能摘高度小于它的陶陶,高度和它相等的不能摘。
 2.高度为0的陶陶不能摘。
 但其实讲道理认真读题的话这两点都可以规避……
 方法就是纯模拟,没什么好说的……直接上代码,应该说比较简洁……#include<iostream> #include<algorithm> using namespace std; int n,m,ans; int a[2005],t[2005]; bool bj[2005]; int main() { cin>>n>>m; ans=m; for(int i=1;i<=n;++i) cin>>a[i]; for(int i=1;i<=m;++i) cin>>t[i]; sort(t+1,t+m+1); for(int i=1;i<=n;++i) for(int j=m;j>=1;--j) if((a[i]>t[j])&&(bj[j]==0)&&(t[j]!=0)) { bj[j]=1; ans--; break; } cout<<ans; return 0; }
- 
  3@ 2018-02-05 22:38:44水。。。。 #include<iostream> #include<algorithm> #include<cstdio> using namespace std; const int maxn=2005; int a[maxn]; int b[maxn]; bool al[maxn]; int low=-1; int ans; int k; int main(){ int n,m; cin>>n>>m; for(int i=1;i<=n;i++)cin>>a[i]; for(int i=1;i<=m;i++)cin>>b[i]; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ if(b[j]!=0 && a[i]>b[j] && low<b[j] && al[j]==false){ low=b[j]; k=j; } } if(low!=-1)ans++; al[k]=true; low=-1; } cout<<m-ans; return 0; }
- 
  2@ 2018-11-06 09:37:16既然n和m都是2000,而最大高度是300,那么为什么要让复杂度变成2000乘2000呢,反手就是一份300乘2000的。 #include<bits/stdc++.h> using namespace std; int n,m; int a[2010]; int b[300]; int main(){ scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) scanf("%d",&a[i]); for(int i=1;i<=m;i++){ int x; scanf("%d",&x); b[x]++; } sort(a+1,a+n+1); for(int i=1;i<=n;i++){ for(int j=a[i]-1;j>=1;j--){ if(b[j]){ b[j]--; m--; break; } } } printf("%d",m); return 0; }
- 
  2@ 2018-01-09 12:20:01var 
 a,b:array[1..2000]of integer;
 s,n,m,i,j,t:longint;
 begin
 read(n,m);
 s:=m;
 for i:=1 to n do
 readln(a[i]);
 for i:=1 to m do
 readln(b[i]);
 for i:=1 to n-1 do
 for j:=i+1 to n do
 if b[i]<b[j]then begin
 t:=b[i];
 b[i]:=b[j];
 b[j]:=t;
 end;
 for i:=1 to n do
 for j:=1 to m do
 if (a[i]>b[j])and(b[j]<>0) then
 begin
 s:=s-1;
 b[j]:=0;
 break;
 end;
 writeln(s);
 end.
- 
  2@ 2017-07-06 13:23:05纯粹模拟。题目最后要考虑到不能摘的,位置为0的陶陶。 
 读程序注释:harvester(收割者)是苹果,fruit(果实)是可怜的陶陶。
 就是这样。恩恩。程序没有任何技术含量。#include <bits/stdc++.h> using namespace std; int main() { int fruit_height[301]; memset(fruit_height,0,sizeof(fruit_height)); int harvester, fruit; cin>>harvester>>fruit; int i,j; int harvester_height[harvester]; for(i=0;i<harvester;i++) { cin>>j; harvester_height[i]=j; } for(i=0;i<fruit;i++) { cin>>j; fruit_height[j]+=1; } for(i=0;i<harvester;i++) { for(j=harvester_height[i]-1;j>0;j--) { if(fruit_height[j]>0) { fruit_height[j]--; fruit--; goto end; } } end: continue; } cout<<fruit<<endl; }
- 
  1@ 2022-04-07 20:26:39给大家公布一下我自己写的代码(不参考任何人,易理解,不调用除iostream以外的头文件) #include <iostream> using namespace std; int sa,st,y[2],apple[2010],Taotao[2010]; int big(int a,int b[2010],int c){ if(a>300){ return -1; } int d = -1,e=0; for(int i=0;i<c;i++){ if(b[i] <a){ if(b[i]>d and b[i] != 0){ d=b[i]; e=i; } } } if (d!=-1){ b[e] = 700; } return d; } int main(int argc, char** argv) { cin>>y[0]>>y[1]; sa=y[0]; st=y[1]; for(int i=0;i<y[0];i++) { cin>>apple[i]; } for(int i=0;i<y[1];i++) { cin>>Taotao[i]; } int r; for(int i=0;sa!=0;i++){ r=big(apple[i],Taotao,y[1]); if (r==-1){ sa--; } else{ sa--;st--; } } cout<<st; return 0; }有帮助的扣个1 
- 
  1@ 2020-10-14 14:35:29#include <cmath> #include <cstdio> #include <cstdlib> #include <cstring> #include <algorithm> using namespace std; namespace dts { int n,m,ans,a[2000],t[2000]; int cmp(int x,int y) { return x<y; } void main() { scanf("%d%d",&n,&m); for (int i=0;i<n;i++) scanf("%d",&a[i]); for (int i=0;i<m;i++) scanf("%d",&t[i]); sort(&a[0],&a[n],cmp); sort(&t[0],&t[m],cmp); ans=0; for (int i=0,j=0;i<n&&j<m;) { while (t[j]==0&&j<m) j++; if (j==m) break; while (a[i]<=t[j]) i++; if (i<n) i++,j++,ans++; } printf("%d\n",m-ans); } } int main() { dts::main(); }
- 
  1@ 2020-03-19 15:03:53抄@不退 的😝 #include<iostream> #include<algorithm> using namespace std; int n,m,ans; int a[2005],t[2005]; bool bj[2005]; int main() { cin>>n>>m; ans=m; for(int i=1;i<=n;++i) cin>>a[i]; for(int i=1;i<=m;++i) cin>>t[i]; sort(t+1,t+m+1); for(int i=1;i<=n;++i) for(int j=m;j>=1;--j) if((a[i]>t[j])&&(bj[j]==0)&&(t[j]!=0)) { bj[j]=1; ans--; break; } cout<<ans; return 0; }补充一下:测试点全a 
- 
  1@ 2020-03-17 21:23:52#include<iostream> #include<algorithm> using namespace std; int apple[2005]; int taotao[2005]; int visited[2005]; int main() { int n, m; cin >> n >> m; int cnt = m; for(int i = 0 ; i < n ; ++i) { cin >> apple[i]; } for(int i = 0 ; i < m ; ++i) { cin >> taotao[i]; } sort(taotao, taotao + m); //将淘淘排序 for(int i = 0 ; i < n ; ++i) { for(int j = m - 1 ; j >= 0 ; --j) { if(!visited[j] && apple[i] > taotao[j] && taotao[j] != 0) { //如果没有被摘,且能摘到,且不为0 visited[j] = 1; cnt--; break; } } } cout << cnt << endl; return 0; }
- 
  1@ 2019-10-27 11:28:06和你们的很像,但真是我自己写的: 
 #include <iostream>
 #include <algorithm>
 using namespace std;
 int n,m,ans,apple[100000],t[100000];
 bool f[10000];
 int main()
 {
 cin>>n>>m;
 ans=m;
 for(int i=1;i<=n;i++)cin>>apple[i];
 for(int i=1;i<=m;i++)cin>>t[i];
 sort(t+2,t+m+1);
 for(int i=1;i<=n;i++)
 {
 for(int j=m;j>=1;j--)
 {
 if(apple[i]>t[j] && t[j]!=0 && f[j]==false)
 {
 f[j]=true;
 ans--;
 break;
 }
 }
 }
 cout<<ans<<endl;
 return 0;
 }
- 
  1@ 2019-07-24 20:38:31来一个简洁的 
 #include <iostream>
 using namespace std;
 int main()
 {
 int n,m,tt[2000],pg[2000],i,j,e,a;
 cin>>n>>m;
 a=m;
 for(i=0;i<2000;i++) tt[i]=0;
 for(i=0;i<n;i++) cin>>pg[i];
 for(i=0;i<m;i++) cin>>tt[i];
 for(i=0;i<m-1;i++) for(j=i+1;j<m;j++) if(tt[i]<tt[j])
 {e=tt[i];tt[i]=tt[j];tt[j]=e;}
 for(i=0;i<n;i++)
 for(j=0;j<m;j++)
 if(pg[i]>tt[j]&&tt[j]!=0) {a--;tt[j]=0;break;}
 cout<<a;
 return 0;
 }
- 
  1@ 2009-10-18 14:25:41编译通过... 
 ├ 测试数据 01:答案正确... 0ms
 ├ 测试数据 02:答案正确... 0ms
 ├ 测试数据 03:答案正确... 0ms
 ├ 测试数据 04:答案正确... 0ms
 ├ 测试数据 05:答案正确... 0ms
 ├ 测试数据 06:答案正确... 0ms
 ├ 测试数据 07:答案正确... 0ms
 ├ 测试数据 08:答案正确... 0ms
 ├ 测试数据 09:答案正确... 0ms
 ├ 测试数据 10:答案正确... 0ms
 ---|---|---|---|---|---|---|---|-
 Accepted 有效得分:100 有效耗时:0ms因为高度最大为300 开一个数组 a[i]表示高度为i的苹果有a[i]个 
 对每个苹果 从j=(能摘到的最大高度-1)开始向下找到a[j]>0 然后dec(j) dec(m)
 最后输出m即可
 ps:烂陶陶不用管 读入时加个 >0 的判断就行 如果有烂的也都算在m里了所以只要把能摘下来的都dec掉剩的m就是答案源程序: 
 var
 n,m,i,j,x:longint;
 a:array[1..300]of longint;
 b:array[1..2000]of longint;
 begin
 readln(n,m);
 for i:=1 to n do readln(b[i]);
 for i:=1 to m do
 begin
 readln(x);
 if x>0 then inc(a[x]);
 end;
 for i:=1 to n do
 for j:=b[i]-1 downto 1 do
 if a[j]>0 then begin
 dec(a[j]);
 dec(m);
 break;
 end;
 writeln(m);
 end.
- 
  0@ 2025-05-22 19:30:22挺简单的 
 #include<bits/stdc++.h>
 using namespace std;
 bool cmp(int &a,int &b){
 return a>b;
 }
 int main(){
 int n,m;
 cin>>n>>m;
 int sum=m;
 int a[100011],b[142542];
 for(int i=1;i<=n;i++) cin>>a[i];
 for(int i=1;i<=m;i++) cin>>b[i];
 for(int i=1;i<=n;i++){
 sort(b+1,b+1+m,cmp);
 for(int j=1;j<=m;j++){
 if(a[i]>b[j]&&b[j]!=0){
 sum--;
 b[j]=0;
 break;
 }
 }
 }cout<<sum;
 return 0;
 }
- 
  0@ 2023-07-21 17:13:08#include <iostream> #include <bits/stdc++.h> using namespace std; int N[10000], M[10000]; int main() { int n, m, i = 0, d = 0, count = 0; cin >> n >> m; int x = n, y = m; while (x--) { cin >> N[i]; i++; } while (y--) { cin >> M[d]; d++; } sort(M, M + m); reverse(M, M + m); for (i = 0; i < n; i++) { for (d = 0; d < m; d++) { if (N[i] > M[d] && M[d] != 0) { M[d] = 0; count++; break; } } } cout << m - count; return 0; }
- 
  0@ 2021-10-29 19:40:07#include<iostream> 
 #include<algorithm>
 constexpr auto MAX = 2000;
 using namespace std;
 int t[MAX];
 int p[MAX];
 int sum[MAX];
 int main()
 {
 int n, m;
 cin >> n >> m;
 int count = m;
 for (int i = 0; i < n; i++)
 {
 cin >> p[i];
 }
 for (int i = 0; i < m; i++)
 {
 cin >> t[i];
 }
 sort(t, t + m);
 for (int i = 0; i < n; i++)
 {
 for (int j = m - 1; j >= 0; j--)
 {
 if ((sum[j] == 0) && (t[j] != 0) && (p[i] > t[j]))
 {
 count--;
 sum[j] = 1;
 break;
 }
 }
 }
 cout << count;
 return 0;
 }
- 
  0@ 2020-06-22 22:15:42用了一下优先队列 AC 
 ```cpp
 #include<queue>
 #include<iostream>
 using namespace std;int main(void) { 
 priority_queue<int, vector<int>, less<int> > apple, tt;
 int apNum, tNum;
 scanf("%d %d", &apNum, &tNum);
 getchar();
 int t;
 for (int i = 0; i < apNum; i++) {
 scanf("%d", &t);
 getchar();
 apple.push(t);
 }
 for (int i = 0; i < tNum; i++) {
 scanf("%d", &t);
 getchar();
 tt.push(t);
 }
 int left = tNum;
 int a = 0;
 while (! tt.empty()) {
 t = tt.top();
 tt.pop();
 if (t == 0) {
 left--;
 break;
 }
 a = apple.top();
 if (a > t) {
 apple.pop();
 left--;
 }
 }
 printf("%d\n", left+1);
 }
 ```
- 
  0@ 2018-07-15 09:36:01#include<iostream> 
 #include<algorithm>
 using namespace std;
 int n,m,ans;
 int a[2005],t[2005];
 bool bj[2005];
 int main()
 {
 cin>>n>>m;
 ans=m;
 for(int i=1;i<=n;++i)
 cin>>a[i];
 for(int i=1;i<=m;++i)
 cin>>t[i];
 sort(t+1,t+m+1);
 for(int i=1;i<=n;++i)
 for(int j=m;j>=1;--j)
 if((a[i]>t[j])&&(bj[j]==0)&&(t[j]!=0))
 {
 bj[j]=1;
 ans--;
 break;
 }
 cout<<ans;
 return 0;
 }
- 
  0@ 2018-05-12 19:47:53#include <iostream> 
 using namespace std;
 int zz[2100],tt[2100];
 int main(int argc, char** argv)
 {
 int n,m,key;
 int max=0;
 int a=0;
 cin>>n>>m;
 int m1=m;
 for(int i0=0;i0<n;i0++)
 {
 cin>>zz[i0];
 }
 for(int i1=0;i1<m;i1++)
 {
 cin>>tt[i1];
 }
 for(int i=0;i<n;i++)
 {
 max=0;
 a=0;
 key=0;
 for(int j=0;j<m;j++)
 {
 if(zz[i]>tt[j]&&tt[j]>max)
 {
 a=j;
 max=tt[j];
 key=1;
 }
 }
 if(key==1)
 {
 tt[a]=0;
 m1--;
 }
 }
 cout<<m1;
 return 0;
 }
- 
  0@ 2017-11-11 09:13:15#include<bits/stdc++.h> using namespace std; int n,m; vector<int>taotao; vector<int>apple; int main() { cin >> n >> m; for (int i = 0, ans; i < n; i++) { cin >> ans; apple.push_back(ans); } for (int i = 0, ans; i < m; i++) { cin >> ans; taotao.push_back(ans); } sort(apple.begin(), apple.end()); sort(taotao.begin(), taotao.end(),greater<int>()); for(int i=0;i<n;i++) for (auto j = taotao.begin(); j != taotao.end(); j++) { if (apple.at(i) > *j&&*j != 0) { taotao.erase(j); break; } } cout << taotao.size(); return 0; }从一年前做到今天的题目啊,算法很水,但一定要记住,高度为0的陶陶不能摘,不能摘,不能摘(9个点)还有苹果的高度一定要**大于**陶陶的高度 
- 
  0@ 2017-10-18 22:11:29#include <bits/stdc++.h> using namespace std; int main() 
 {
 int fruit_height[301];
 memset(fruit_height,0,sizeof(fruit_height));
 int harvester, fruit;
 cin>>harvester>>fruit;
 int i,j;
 int harvester_height[harvester];
 for(i=0;i<harvester;i++)
 {
 cin>>j;
 harvester_height[i]=j;
 }
 for(i=0;i<fruit;i++)
 {
 cin>>j;
 fruit_height[j]+=1;
 }
 for(i=0;i<harvester;i++)
 {
 for(j=harvester_height[i]-1;j>0;j--)
 {
 if(fruit_height[j]>0)
 {
 fruit_height[j]--;
 fruit--;
 goto end;
 }
 }
 end:
 continue;
 }
 cout<<fruit<<endl;
 }