zoukankan      html  css  js  c++  java
  • 2019/10/13 TZOJ

    水题虽不好,但是很爽

    渴望未来某天能把剩下的题补了,先做个记录。

    Hard Disk Drive

    http://acm.hdu.edu.cn/showproblem.php?pid=4788

    单位转化,转一级就转了1000/1024,用pow就ok,答案要百分比就再转化一下。

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 int main()
     4 {
     5     int t;scanf("%d",&t);
     6     for(int kk=1;kk<=t;kk++)
     7     {
     8         int n;
     9         char lev[5];
    10         scanf("%d%s",&n,lev);
    11         printf("Case #%d: ",kk);
    12         double ans=1000/1024.0;
    13         if(lev[1]=='B') ans=0;
    14         else if(lev[1]=='K') ans=100-ans*100;
    15         else if(lev[1]=='M') ans=100-pow(ans,2)*100;
    16         else if(lev[1]=='G') ans=100-pow(ans,3)*100;
    17         else if(lev[1]=='T') ans=100-pow(ans,4)*100;
    18         else if(lev[1]=='P') ans=100-pow(ans,5)*100;
    19         else if(lev[1]=='E') ans=100-pow(ans,6)*100;
    20         else if(lev[1]=='Z') ans=100-pow(ans,7)*100;
    21         else if(lev[1]=='Y') ans=100-pow(ans,8)*100;
    22         printf("%.2f%%
    ",ans);
    23     }
    24 }
    View Code

    Just random

    http://acm.hdu.edu.cn/showproblem.php?pid=4790

    首先知道a+c是最小的b+d是最大的,所以满足条件的且在此区间内的数是有限的,只要求这些满足条件的数的总个数就可以。做矩阵第一行从a+c到a+d,第一列a+c到b+c;最后一行b+c到b+d,最后一列a+d到b+d,以同一列为同一大小数字来稍微偏一下这个矩阵。大概是左三角中矩形右三角的状态。

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 typedef long long ll;
     4 ll __gcd(ll a,ll b)
     5 {
     6     return b==0?a:__gcd(b,a%b);
     7 }
     8 int main()
     9 {
    10     int t;scanf("%d",&t);
    11     for(int kk=1;kk<=t;kk++)
    12     {
    13         ll a,b,c,d,p,m;scanf("%lld%lld%lld%lld%lld%lld",&a,&b,&c,&d,&p,&m);
    14         ll ans=0,posi=(b-a+1)*(d-c+1);
    15         if((b-a)>(d-c)) swap(a,c),swap(b,d);
    16         ll t1,t2,add1,add2,cnt1,cnt2;
    17         t1=(a+c)%p;
    18         add1=(m-t1+p)%p;
    19         cnt1=(a+c+add1-m)/p;
    20         t2=(b+c-1)%p;
    21         add2=(t2-m+p)%p;
    22         cnt2=(b+c-1-add2-m)/p;
    23         ans+=(cnt2-cnt1+1)*(1+add1)+(cnt2-cnt1+1)*(cnt2-cnt1)/2*p;
    24 
    25         t1=(b+c)%p;
    26         add1=(m-t1+p)%p;
    27         cnt1=(b+c+add1-m)/p;
    28         t2=(a+d)%p;
    29         add2=(t2-m+p)%p;
    30         cnt2=(a+d-add2-m)/p;
    31         ans+=(cnt2-cnt1+1)*(b-a+1);
    32 
    33         t1=(a+d+1)%p;
    34         add1=(m-t1+p)%p;
    35         cnt1=(a+d+1+add1-m)/p;
    36         t2=(b+d)%p;
    37         add2=(t2-m+p)%p;
    38         cnt2=(b+d-add2-m)/p;
    39         ans+=(cnt2-cnt1+1)*(1+add2)+(cnt2-cnt1+1)*(cnt2-cnt1)/2*p;
    40 
    41         ll gc=__gcd(ans,posi);
    42         printf("Case #%d: %lld/%lld
    ",kk,ans/gc,posi/gc);
    43     }
    44 }
    View Code

    Zhuge Liang's Password

    http://acm.hdu.edu.cn/showproblem.php?pid=4772

    失去理智就是莽啊,一度脑子转不过来!然后就写下了下面这个答案。找到理智了,自己脑补写的转三遍不如人家写的转一遍。

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 #define N 100005
     4 inline int read(){
     5     int s=0,w=1;
     6     char ch=getchar();
     7     while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();}
     8     while(ch>='0'&&ch<='9'){s=s*10+ch-'0';ch=getchar();}
     9     return s*w;
    10 }
    11 int ma1[35][35],ma2[35][35];
    12 int main()
    13 {
    14     int n;
    15     while(scanf("%d",&n),n)
    16     {
    17         int maxn=0,ans=0;
    18         for(int i=1;i<=n;i++)
    19             for(int j=1;j<=n;j++)
    20                 ma1[i][j]=read();
    21         for(int i=1;i<=n;i++)
    22             for(int j=1;j<=n;j++)
    23             {
    24                 scanf("%d",&ma2[i][j]);
    25                 if(ma2[i][j]==ma1[i][j]) ans++;
    26             }
    27         maxn=max(maxn,ans);
    28         ans=0;
    29         for(int i=1;i<=n;i++)
    30             for(int j=1;j<=n;j++)
    31                 if(ma1[i][j]==ma2[j][n-i+1]) ans++;
    32         maxn=max(maxn,ans);
    33         ans=0;
    34         for(int i=1;i<=n;i++)
    35             for(int j=1;j<=n;j++)
    36                 if(ma1[i][j]==ma2[n-i+1][n-j+1]) ans++;
    37         maxn=max(maxn,ans);
    38         ans=0;
    39         for(int i=1;i<=n;i++)
    40             for(int j=1;j<=n;j++)
    41                 if(ma2[i][j]==ma1[j][n-i+1]) ans++;
    42         maxn=max(maxn,ans);
    43         printf("%d
    ",maxn);
    44     }
    45 }
    View Code
    void turn()
    {
        for(int i=1;i<=n;i++)
            for(int j=1;j<=n;j++)
                temp[i][j]=ma2[j][n-i+1];
        for(int i=1;i<=n;i++)
            for(int j=1;j<=n;j++)
                ma2[i][j]=temp[i][j];
    }
    

    Hard code

    http://acm.hdu.edu.cn/showproblem.php?pid=4813

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 typedef long long ll;
     4 inline int read(){
     5     int s=0,w=1;
     6     char ch=getchar();
     7     while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();}
     8     while(ch>='0'&&ch<='9'){s=s*10+ch-'0';ch=getchar();}
     9     return s*w;
    10 }
    11 char str[1005];
    12 int main()
    13 {
    14     int t;scanf("%d",&t);
    15     while(t--)
    16     {
    17         int n,m;scanf("%d%d",&n,&m);
    18         scanf("%s",str);
    19         int len=n*m,k=0;
    20         for(int i=0;i<n;i++)
    21         {
    22             for(int j=0;j<m;j++)
    23                 printf("%c",str[k++]);
    24             printf("
    ");
    25         }
    26     }
    27 }
    View Code
  • 相关阅读:
    爬虫工具包
    用于模型选择的AIC与BIC
    4.数据结构---堆
    海量数据查询
    机器学习---算法汇总目录
    RNN/LSTM/GRU/seq2seq公式推导
    Dropout正则化和其他方法减少神经网络中的过拟合
    查看动态链接库中函数参数类型
    ANSI、ASCII、GB2312、GBK
    Unicode(UTF-8, UTF-16)令人混淆的概念
  • 原文地址:https://www.cnblogs.com/Aaaamber/p/11726097.html
Copyright © 2011-2022 走看看