竞赛
考级
输入田忌和齐王各自的马的能力值。 将两者的马按能力值降序排序。 使用贪心策略,从最强的马开始比较,如果田忌的马能战胜齐王的马,就增加奖金并移动到下一场比赛。 最终输出田忌最多可以获得的奖金数。
AC君
法兰西玫瑰
回来看看
#include<bits/stdc++.h> using namespace std; const int N=2050; int ac[N],wa[N]; int main(){ long long n; cin>>n; for(int i=1;i<=n;++i){ cin>>ac[i]; } for(int i=1;i<=n;++i){ cin>>wa[i]; } sort(ac+1,ac+n+1);//sort排序 sort(wa+1,wa+n+1);//sort排序 int i=1; int j=1; int win=0; while (i<=n&&j<=n){ if(ac[i]>wa[j]){ ++win; ++j; } ++i; } cout<<win*200-(n-win)*200<<"\n"; return 0; }
AC神
算法思路解析 1. 排序处理:首先将双方的马匹按速度升序排序,这样可以方便地比较最快和最慢的马 2. 贪心策略: * 当田忌最快的马比齐王最快的马快时,直接比赛,田忌赢200两 * 当田忌最快的马比齐王最快的马慢时,用田忌最慢的马消耗齐王最快的马,最小化损失 * 当双方最快的马速度相同时,比较最慢的马: * 如果田忌最慢的马更快,就用最慢的马比赛赢200两 * 否则用田忌最慢的马消耗齐王最快的马 3. 双指针技巧:使用左右指针分别跟踪当前最快和最慢的马,逐步缩小比较范围 复杂度分析 * 时间复杂度:O(nlogn),主要由排序操作决定 * 空间复杂度:O(n),用于存储马匹速度 这个算法通过贪心策略在每一步做出局部最优选择,从而保证全局最优解。对于N≤2000的数据规模,该算法完全可以在1秒内完成计算。
飞的智动
回到题目 先找田鸡有没有比鸡王所有马小的马,如果有就和鸡王的能力值最高1换1,没有就和比它能力值小的1换1.
༺ཌༀ小柴-贪醟 人机领袖ༀད༻
#include <bits/stdc++.h> #include<iostream> using namespace std; int a[30100], b[30100]; int main(){ int n; cin>>n; for(int i=1;i<=n;i++){ cin>>a[i]; } for(int i=1;i<=n;i++){ cin>>b[i]; } sort(a+1,a+n+1); sort(b+1,b+n+1); int w=0; int l=0; int i=1,j=1; while(i<=n){ if(a[i]>b[j]){ i++; j++; w++; } else{ i++; l++; } } cout<<w200-l200; }
侯天宇
X02糕愣南渗
#include <iostream> #include <algorithm> using namespace std; int n; int a[101],b[101]; int main() { cin>>n; for(int i=0;i<n;i++) cin>>a[i]; for(int j=0;j<n;j++) cin>>b[j]; sort(a,a+n); sort(b,b+n); int mon=0,cnt=0; for(int i=0;i<n;i++){ if(a[i]>b[cnt]){ mon+=200; cnt++; } } cnt=0; for(int i=0;i<n;i++){ if(a[i]<b[cnt]){ mon-=200; } else cnt++; } cout<<mon; return 0; }
耐高总冠军 张文杰
༺ཌༀ元气满满ༀད༻
#include<bits/stdc++.h> using namespace std; int a[101],b[101],sum; int main(){ int n; cin>>n; int s1= 0,s2 = 0; for(int i = 1;i <= n;i++){ cin>>a[i]; } for(int i = 1;i <=n;i++){ cin>>b[i]; } sort(a+1,a + n+1); sort(b+1,b + n+1); int l1=1,l2=1; while(l1<=n&&l2<=n){ }
C++AC
栗子(jsdhhdmax)
#include<bits/stdc++.h> using namespace std; bool cmp(int x, int y) { return x > y; } int main() { int n; cin >> n; int a[n + 1], b[n + 1]; for (int i = 1; i <= n; i++) { scanf("%d", &a[i]); } for (int i = 1; i <= n; i++) { scanf("%d", &b[i]); } sort(a + 1, a + n + 1); sort(b + 1, b + n + 1); int cnt = 1, sum = 0; for (int i = 1; i <= n; i++) { if (a[i] > b[cnt]) { sum++; cnt++; } } cnt = 1; for (int i = 1; i <= n; i++) { if (a[i] < b[cnt]) { sum--; } else cnt++; } cout << sum * 200 << endl; return 0; }
😶
#include<bits/stdc++.h> using namespace std; int n,a,b,am[1005],bm[1005],az,bz,ans; int main(){ cin>>n; for(int i=0;i<n;i++){ cin>>am[i]; } for(int i=0;i<n;i++){ cin>>bm[i]; } sort(am,am+n); sort(bm,bm+n); while(az<n&&bz<n){ if(am[az]>bm[bz]){ ans+=200; az++,bz++; } else{ ans-=200; az++; } } cout<<ans; }
睿
无敌的鳖佬仔给老爷爷猜猜被
LS_YZY