zoukankan      html  css  js  c++  java
  • 【杭电多校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
    ",d);       
    }
  • 相关阅读:
    OOAD-2 UML建模、类、接口、类图的详细介绍
    OOAD-1 GOF中的23种设计模式的分类和功能
    java核心技术第四章疑问点
    数据结构中的遇到的一些小知识整理
    springboot中一次坑爹的打包体验
    mybatis中@param的使用与否
    mybatis 防止sql注入
    java窗口
    java异常处理
    第三次上级作业
  • 原文地址:https://www.cnblogs.com/jackwang-sparrow/p/13408222.html
Copyright © 2011-2022 走看看