欢迎来到起遇信息学
起遇信息学正处于上线筹建阶段,以下功能已全部开放免费体验: ✅ 完整题库浏览与代码提交评测(C / C++ / Python / Java 等) ✅ 入门到进阶的系列课程试读、作业与考试 ✅ AI 提示、AI 作业分析等智能助教功能 ✅ 赛事模拟与个人能力报告 ✅ 邮箱注册开放 ⏳ 付费课程订阅与微信/支付宝支付通道 ⏳ 手机号登录,微信扫码登录、微信公众号绑定 使用中如遇任何问题,欢迎通过页面底部 **"联系我们"** 与我们沟通。
A.Replacementhttps://qycode64.com/course/6a47850a69fcccaa3fd46be4/exam/6a521242b7b465946fec30ee/problem/CF135A?lang=zh思路:先输出1,然后升序排序,不输出最后一位(最大的一位)未错#include<bits/stdc++.h>using namespace std;int a[100010];int main(){ int n; cin>>n; for(int i=1;i<=n;i++)cin>>a[i]; sort(a+1,a+1+n); cout<<"1 "; for(int i=1;i<n;i++)cout<<a[i]<<" "; return 0;}B.Increase and Decreasehttps://qycode64.com/course/6a47850a69fcccaa3fd46be4/exam/6a521242b7b465946fec30ee/problem/CF246B思路:统计数字和,若数字和能整除总数,所有数都能相等,若不能,则会有一个数与其他数不相等;证明:总数字和=x,总数=yif(x%y0)所有数=x/yelse 例:1个数 :x- 向下取整(x/y)*y,其它数:向下取整(x/y)未错#include<bits/stdc++.h>using namespace std;int main(){ int n; cin>>n; long long sum=0; for(int i=0;i<n;i++){ int x; cin>>x; sum=sum+x; } if(sum%n0)cout<<n; else cout<<n-1; return 0;}C.Just Eat It!https://qycode64.com/course/6a47850a69fcccaa3fd46be4/exam/6a521242b7b465946fec30ee/problem/CF1285B?lang=zh思路:因为Adel 不能选择l=1,r=n,所以分成0-(n-2)和1-(n-1)两条线进行区间和计算,计算两个最大值,与 Yasser 算出的和进行对比。未错#include<bits/stdc++.h>using namespace std;int main(){ int t; cin>>t; while(t--){ int n; cin>>n; long long a[n]; long long zx=0; for(int i=0;i<n;i++){ cin>>a[i]; zx=zx+a[i]; } long long x=-10000000001,y=-10000000001; for(int i=0;i<n-1;i++){ y=max(y+a[i], a[i]); x=max(x, y); } long long o=x; x=-10000000001; y=-10000000001; for(int i=1;i<n;i++){ y=max(y+a[i],a[i]); x=max(x,y); } long long p=x; if(zx>o&&zx>p)cout<<"YES\n"; else cout<<"NO\n"; } return 0;}D.Boxershttps://qycode64.com/course/6a47850a69fcccaa3fd46be4/exam/6a521242b7b465946fec30ee/problem/CF1203E?lang=zh思路:拳击手的体重尽量减小,往左移动若左边的体重没了再向右移或不动(取决于人数是否>1)未错#include<bits/stdc++.h>using namespace std;int c[150005],zx[150005];int main(){ int n,a=0; cin>>n; for(int i=0;i<n;i++){ int x; cin>>x; c[x]++; } for(int i=1;i<=150001;i++){ while(c[i]>0){ if(i>1&&zx[i-1]==0){ zx[i-1]=1; a++; c[i]--; } else if(zx[i]==0){ zx[i]=1; a++; c[i]--; } else if(zx[i+1]0){ zx[i+1]=1; a++; c[i]--; } else break; } } cout<<a; return 0;}E.Fight with Monstershttps://qycode64.com/course/6a47850a69fcccaa3fd46be4/exam/6a521242b7b465946fec30ee/problem/CF1296D?lang=zh思路:多回合后怪物血量:(h-1)%(a+b)+1;我单杀怪物用 向上取整(多回合后怪物血量/a)-1(白嫖的第一下) 带入代码未错#include<bits/stdc++.h>using namespace std;long long c[200010];int main(){ int n,a,b,k; cin>>n>>a>>b>>k; for(int i=1;i<=n;i++){ int u; cin>>u; int o=u%(a+b); if(o0)c[i]=(a+b-1)/a; else c[i]=(o-1)/a; } sort(c+1,c+1+n); int ans=0; for(int j=1;j<=n;j++){ if(k<c[j]) break; k=k-c[j]; ans++; } cout<<ans; return 0;}F.Questshttps://qycode64.com/course/6a47850a69fcccaa3fd46be4/exam/6a521242b7b465946fec30ee/problem/CF1760F思路:先特判两种特殊情况,再建前缀和,用二分遍历k,找到最大的k/暴力枚举k;未错#include<bits/stdc++.h>using namespace std;long long a[200005], s[200005];int main(){ int t; cin>>t; while(t--){ int n,d; long long c; cin>>n>>c>>d; for(int i=1;i<=n;i++) cin>>a[i]; sort(a+1, a+n+1, greater()); s[0]=0; for(int i=1;i<=n;i++) s[i]=s[i-1]+a[i]; if(a[1]*d<c){ cout<<"Impossible\n"; continue; } if(s[min(n,d)]>=c){ cout<<"Infinity\n"; continue; } int ans=0; for(int k=0;k<=d;k++){ int x=k+1; long long g=(d/x)*s[min(n,x)]+s[min(n,d%x)]; if(g>=c)ans=k; } cout<<ans<<"\n"; } return 0;}
0 条评论
目前还没有评论...
Be the first to comment!