【杭电多校4】2020 Multi-University Training Contest 4

 

Blow up the Enemy

 

 

#include <bits/stdc++.h>
#define rep(i,a,b) for(int i=a;i<b;i++)
#define T ll t ;scanf("%lld",&t);while(t--)
using namespace std ;
typedef long long ll;
typedef unsigned long long ull;
const ll maxn=1e5+10;
struct node
{
    ll attack,changetime;//attach表示攻击力,changetime表示换弹时间,killtime表示最终把爸爸杀死的时间
    ll killtime;
}gun[maxn];
bool cmp(node a,node b)//杀死的时间越短,则表示该武器的胜率越高
{
    return a.killtime<b.killtime;
}
int main()
{
    T
    {
        ll n;
        scanf("%lld",&n);
        for(ll i=0;i<n;i++)
        {
            scanf("%lld%lld",&gun[i].attack,&gun[i].changetime);
            ll cnt=0;
            cnt=100/gun[i].attack;
            if(100%gun[i].attack!=0)
                cnt++;
            gun[i].killtime=(cnt-1)*gun[i].changetime;//减1的原因在于你最后把背包杀死后,并不需要再换弹
        }
        sort(gun,gun+n,cmp);//按照杀死时间进行升序排序
        double s=0;
        ll cnt_same=0;
        for(ll i=0;i<n;i++)
        {
            if(gun[0].killtime==gun[i].killtime)//相同胜率且胜率最高的武器每次加0.5,否则加1
                s+=0.5;
                else
                    s+=1;
        }
        cout<<s/n<<endl;
    }
}

 

 

 

Equal Sentences

(找规律)

 类似斐波那契,存入所有字符串,暴力搜索一遍,如果前一个字符串和当前的这个字符串相同,那么就把之前所累加的数赋值给当前这个数,存在f数组里面;若前后两个字符串不相同,则为f[i]=(f[i-1]+f[i-2]+1)并且每次取模。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll maxn=1e5+10;
const ll mod=1e9+7;
string s[maxn];
ll f[maxn];
ll n;
#define IO ios::sync_with_stdio(false), cin.tie(0)
#define T int t ;cin >> t;while(t--)
int main()
{
    T
    {
        cin>>n;
        memset(f,0,sizeof f);
        for(ll i=1;i<=n;i++)
        {
            cin>>s[i];
        }
        for(ll i=2;i<=n;i++)
        {
            if(s[i]==s[i-1])
                f[i]=f[i-1];
            else
                f[i]=(f[i-1]+f[i-2]+1)%mod;
        }
        cout<<f[n]+1<<endl;
    }
}

 

Kindergarten Physics

 (签到题)

仅输出变量d即可

这里注意一个地方"%*d",即跳过该变量,忽略这个变量

#include<bits/stdc++.h>
using namespace std;
int mian()
{
      int a,b,d,t;
      scanf("%*d%*d%d%*d",&d );
      printf("%d\n",d);       
}

 

posted @ 2020-08-01 20:51  Drophair  阅读(224)  评论(0编辑  收藏  举报