重金悬赏
谁在7月7日18时至7月8日9时使用电信IP登录HelloWorld网站,请私信发给我登陆账号。
满足条件者奖金:1季B站大会员
最终解释权归MKWMA所有
谁在7月7日18时至7月8日9时使用电信IP登录HelloWorld网站,请私信发给我登陆账号。
满足条件者奖金:1季B站大会员
最终解释权归MKWMA所有
(小贾不哭,我下次改)
首先我们观察样例,不难发现,它是一个大数一个小数穿插的。所以……
直接排序+n/2交叉输出就ok了
(60分)
(100)
附上核心代码:
sort(a,a+n)//sort是本程序中最难的,认真学
完工!(我知道今天的打卡题巨简单)
我ctal+a全选多加了个a
http://go.helloworldroom.com:50080/submission/70711
#include<iostream>
#include<algorithm>
using namespace std;
struct friends{
int w,c,d;
int tot;
int ordering;
};
bool cmp(friends x,friends y){
return x.w>y.w;
}
bool cmp2(friends x,friends y){
return x.tot>y.tot;
}
int main(){
int n,k;
cin>>n>>k;
friends a[n];
int e[10];
for(int i=0;i<n;i++){
a[i].ordering=i+1;
cin>>e[i];
}
for(int i=0;i<n;i++){
cin>>a[i].w;
a[i].tot+=a[i].w;
}
sort(a,a+n,cmp);
for(int i=0;i<n;i++){
a[i].d=i+1;
a[i].c=(a[i].d-1)%10+1;
}
for(int i=0;i<n;i++){
a[i].tot+=e[a[i].c];
}a
sort(a,a+n,cmp2);
for(int i=0;i<k;i++){
cout<<a[i].ordering<<" ";
}
return 0;
}
此处省略无数芬芳
#include<iostream>
#include<cstring>
using namespace std;
int dp[1025][1025];
int item[10001];
int w[10001],v[10001];
int findWhat(int i,int j){
if(i>=0){
if(dp[i][j]==dp[i-1][j]){
item[i]=0;
findWhat(i-1,j);
}else if(j-w[i]>=0&&dp[i-1][j-w[i]]+v[i]==dp[i][j]){
item[i]=1;
findWhat(i-1,j-w[i]);
}
}
}
int main(){
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>w[i]>>v[i];
}
memset(dp,0,sizeof(dp));
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(j<w[i]){
dp[i][j]=dp[i-1][j];
}else{
dp[i][j]=max(dp[i-1][j],dp[i-1][j-w[i]]+v[i]);
}
}
}
cout<<dp[n][m]<<endl;
findWhat(n,m);
for(int i=1;i<=n;i++){
if(item[i]==1){
cout<<i<<' ';
}
}
return 0;
}
\begin{equation} \frac{-b + \sqrt{b^2 - 4ac}}{2a} \end{equation}
\begin{equation} \frac{-b + \sqrt{b^2 - 4ac}{2a}}{x-y^9-b}+9ax \end{equation}