Codeforces Round #365 (Div. 2)

A. Mishka and Game

题意: 掷n次筛子,每次数字打的赢,问最后谁赢。
思路:简单模拟。

AC代码:

#include <bits/stdc++.h>
#define mod  1000000007
#define ll long long
using namespace std;
int n,m;

int main(){
//        freopen("1.in","r",stdin);
        int n;
        scanf("%d",&n);
        int a=0,b=0;
        for(int i=1;i<=n;i++) {
                int x,y; scanf("%d%d",&x,&y);
                if(x==y) continue;
                if(x>y) a++;
                else b++;
        }
        if(a == b) printf("Friendship is magic!^^\n");
        else if(a>b) printf("Mishka\n");
        else printf("Chris\n");
        return 0;
}

B. Mishka and trip
题意:n个城市,每个城市都有一个值,一开始1-2-3—n,n和1相连,相连的路上的值为相连两个点的值得积,k次操作,每次操作是把x其他所有的点和x相连,求最后的总的值。
思路:当时没写出来,看了一眼别人的代码,懂了。具体看代码。

AC代码:

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <iostream>
#include <map>
#include <cmath>
#include <string>
#include <stack>
#include <queue>
#include <vector>
#include <set>
const int  mod = 1e9+7;
#define ll long long
#define llu unsigned long long 
using namespace std;
map<string,int>mp;
const int maxn = 100550+10;
const double ep = 2.2360679775;
int v[maxn],a[maxn];

int main(){
    ios::sync_with_stdio(false);
    int n,k;
    cin>>n>>k;
    ll s = 0,sum=0;
    for(int i=1;i<=n;i++) {
        cin>>a[i];
        sum += a[i];
    }
    for(int i=2;i<=n;i++) {
        s+=(a[i]*a[i-1]);
    }
    s += a[1]*a[n];
    for(int i=1;i<=k;i++) {
        int x; cin>>x;
        sum -= a[x];
        v[x] = 1;
        s += (sum*a[x]);
        int l,r;
        if(x==1) {
             l = n;
             r = 2;
        }
        else if(x==n) {
            l = n-1;
            r = 1; 
        }else{
            l = x-1;
            r = x+1;
        }
        if(!v[l]) s -= (a[x]*a[l]);
        if(!v[r]) s -= (a[x]*a[r]);
    }
    cout<<s<<endl;
    return 0;
}

第三题,自己太菜了还没有搞懂,
其他题更不会了,
真是太菜了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值