NOIP2018(我的代码)

作者:    Jimmy 管理员

标签: C++

创建日期:2024年10月21日 20:30

浏览量:12

第一题 标题统计title

#include <bits/stdc++.h>
using namespace std;
int main(){
    freopen("title.in","r",stdin);
    freopen("title.out","w",stdout);
    string s;
    int n=0;
    while(cin>>s){
        n+=s.length();
    }
    cout<<n;
    return 0;
}

第二题 龙虎斗fight

#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N=1e5;
int c[N+9];
signed main(){
    freopen("fight.in","r",stdin);
    freopen("fight.out","w",stdout);
    int n;
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>c[i];
    }
    int m,p1,s1,s2,tiger=0,dragon=0;
    cin>>m>>p1>>s1>>s2;
    for(int i=1;i<m;i++){
        tiger+=c[i]*(m-i);
    }
    for(int i=m+1;i<=n;i++){
        dragon+=c[i]*(i-m);
    }
    if(p1>m){
        c[p1]+=s1;
        dragon+=s1*(p1-m);
    }else if(p1<m){
        c[p1]+=s1;
        tiger+=s1*(m-p1);
    }
    int p2=1,minn=0x7fffffff;
    for(int i=1;i<=n;i++){
        if(i<m){
            tiger+=s2*(m-i);
            int dis=abs(tiger-dragon);
            if(dis<minn){
                p2=i;
                minn=dis;
            }
            tiger-=s2*(m-i);
        }else if(i>m){
            dragon+=s2*(i-m);
            int dis=abs(tiger-dragon);
            if(dis<minn){
                p2=i;
                minn=dis;
            }
            dragon-=s2*(i-m);
        }else if(i==m){
            int dis=abs(tiger-dragon);
            if(dis<minn){
                p2=i;
                minn=dis;
            }
        }
    }
    cout<<p2;
    return 0;
 }

评论区

竟然没有人发布评论!