[20160320] 刚刚会用的GitHub / WarTime-Project On GitHub / BestCoder Round #76

来源:互联网 发布:音乐cd刻录软件 编辑:程序博客网 时间:2024/06/16 04:03

GitHub!我来了!!!

对大名鼎鼎的GitHub早有耳闻,但是一直没时间,也主要是没那个需求,所以就一直没去学。昨天经过各种搜索学会了最基本的使用方法。其实要不是最近走路的时间多了估计我也不会这么积极的学Git...

于是我Sign in了许久之前注册的账号,逛了一圈还发现了AlphaGO的代码(惊),https://github.com/alphagov/whitehall,貌似很高大上= = 小心地fork了一下看看...好吧,不是很懂...

在建立了一个练手的项目之后,熟悉了大部分用法,于是删掉了这个临时的项目,不过在PublicActivity里面居然还能看见...

于是!我把从前在各种平台上都没能进行的项目企划: WarTime-Project 搬到了GitHub上来。和我一起完成这个项目的还有几个C++/Java初学者,大家在一起,也算互相学习了。

WarTime-Project On GitHub 地址:https://github.com/Kiritow/WarTime-Project,欢迎前来监督项目进程,欢迎Fork~


BestCoder Round #76

昨晚上的BC据说是“世界上最强大的国家”出的题目,然而并没有什么卵用...

只做出了一道题,剩下的一个多小时一直在想最后一道题(1004),但是一直超时后来也不是特别明白...

DZY Loves Balls

 
 Accepts: 659
 
 Submissions: 1393
 Time Limit: 4000/2000 MS (Java/Others)
 
 Memory Limit: 262144/262144 K (Java/Others)
问题描述
DZY喜欢玩球。他有nn个球,装进一个大盒子里。每个球上面都写着一个整数。有一天他打算从盒子中挑两个球出来。他先均匀随机地从盒子中挑出一个球,记为AA。他不把AA放回盒子,然后再从盒子中均匀随机地挑出一个球,记为BB。如果AA上的数字严格大于BB上的数字,那么他就会感到愉悦。现在告诉你每个球上的数字,请你求出他感到愉悦的概率是多少。
输入描述
第一行tt,表示有tt组数据。接下来tt组数据。每组数据中,第一行包含一个整数nn,第二行包含nn个用空格隔开的正整数a_iai,表示球上的数字。(1\le t\le 300, 2\le n \le 300,1\le a_i \le 3001t300,2n300,1ai300)
输出描述
对于每个数据,输出一个实数答案,保留6位小数。
输入样例
231 2 33100 100 100
输出样例
0.5000000.000000

#include <cstdio>#include <cstdlib>#include <cstring>using namespace std;int data[400];int main(){    int t;    scanf("%d",&t);    for(int turn=0;turn<t;turn++)    {        int n;        scanf("%d",&n);        memset(data,0,sizeof(int)*400);        int tmp;        for(int i=0;i<n;i++)        {            scanf("%d",&tmp);            data[tmp]++;        }        int cnt=0;        for(int i=0;i<400;i++)        {            if(data[i]>0)            {                int ans=0;                for(int j=0;j<i;j++)                {                    if(data[j]>0) ans+=data[j];                }                cnt+=ans*data[i];            }        }        printf("%.6f\n",(double)cnt/(n*(n-1)));    }    return 0;}

至于1002在网上找到了一个代码...

题目如下:

DZY Loves Partition

 
 Accepts: 154
 
 Submissions: 843
 Time Limit: 4000/2000 MS (Java/Others)
 
 Memory Limit: 262144/262144 K (Java/Others)
问题描述
DZY喜欢拆分数字。他想知道能否把nn拆成恰好kk个不重复的正整数之和。思考了一会儿之后他发现这个题太简单,于是他想要最大化这kk个正整数的乘积。你能帮帮他吗?由于答案可能很大,请模10^9+7109+7输出。
输入描述
第一行tt,表示有tt组数据。接下来tt组数据。每组数据包含一行两个正整数n,kn,k。(1\le t\le 50, 2\le n,k \le 10^91t50,2n,k109)
输出描述
对于每个数据,如果不存在拆分方案,输出-11;否则输出最大乘积模10^9 + 7109+7之后的值。
输入样例
43 43 29 3666666 2
输出样例
-1224110888111
Hint
第一组数据没有合法拆分方案。第二组数据方案为3=1+23=1+2,答案为1\times 2 = 21×2=2第三组数据方案为9=2+3+49=2+3+4,答案为2\times 3 \times 4 = 242×3×4=24。注意9=3+3+39=3+3+3是不合法的拆分方案,因为其中包含了重复数字。第四组数据方案为666666=333332+333334666666=333332+333334,答案为333332\times 333334= 111110888888333332×333334=111110888888。注意要对10^9 + 7109+7取模后输出,即110888111110888111

  1. #include <iostream>  
  2. #include <cstdio>  
  3. #include <cstring>  
  4.   
  5. using namespace std;  
  6.   
  7. typedef long long ll;  
  8. const ll MOD = 1e9+7;  
  9. const int maxn = 2000100;  
  10.   
  11. ll t,n,k;  
  12. int num[maxn];  
  13.   
  14. int main()  
  15. {  
  16.     scanf("%I64d",&t);  
  17.     while(t--){  
  18.         scanf("%I64d %I64d",&n,&k);  
  19.         if(k*(k+1)/2 > n){  
  20.             printf("-1\n");  
  21.             continue;  
  22.         }  
  23.         n -= k*(k+1)/2;  
  24.         for(int i=1;i<=k;i++){  
  25.             num[i] = i;  
  26.             num[i] += n/k;  
  27.         }  
  28.         n%=k;  
  29.         for(int i=k;i>=1;i--){  
  30.             if(n==0)  
  31.                 break;  
  32.             num[i]++;  
  33.             n--;  
  34.         }  
  35.         ll sum = 1;  
  36.         for(int i=1;i<=k;i++)  
  37.             sum = sum*num[i]%MOD;  
  38.         printf("%I64d\n",sum);  
  39.     }  
  40.     return 0;  
  41. }  

至于3、4题AC率极低... 在网上几乎找不到解题代码...(心痛)


1 0
原创粉丝点击