暑期多校 第一场

A:

描述:

代码:

 1 #include <iostream>
 2 #include <stdio.h>
 3 #include <math.h>
 4 #include <string.h>
 5 using namespace std;
 6
 7 int k,p;
 8 int a[104];
 9 //void solve(){
10 //    int ans=0;
11 //    for(int i=1;i<=k;i++){
12 //        ans=0;
13 //        for(int j=1;j<=p-1;j++){
14 //            ans+=(int)pow(j,i);
15 //        }
16 //        a[i]=(ans%p+p)%p;
17 //    }
18 //    for(int i=1;i<=k;i++){
19 //        cout<<a[i]<<" ";
20 //    }
21 //    cout<<endl;
22 //}
23 int main()
24 {
25     while(~scanf("%d%d",&k,&p)){
26 //        solve();
27          int s=k/(p-1);
28          if(s%2==1) printf("YES\n");else printf("NO\n");
29     }
30 }

B:

描述:

代码:

C:

D:

描述:

代码:

 1 #include <iostream>
 2 #include <string.h>
 3 #include <stdio.h>
 4 #include <algorithm>
 5 #define LL long long
 6 using namespace std;
 7
 8 int N,M;
 9 struct Node{
10     LL l,t;
11     bool operator<(const Node &X)const{
12         if (l==X.l) return t>X.t;
13         else return l>X.l;
14     }
15     void print(){
16         cout<<"l="<<l<<","<<"t="<<t<<endl;
17     }
18 }P1[100100],P2[100100];
19 int vis[105];
20 int main(){
21     while(~scanf("%d%d",&N,&M)){
22         LL l,t;
23         for(int i=0;i<N;i++){
24             scanf("%I64d%I64d",&l,&t);
25             P1[i]=(Node){l,t};
26         }
27         for(int i=0;i<M;i++){
28             scanf("%I64d%I64d",&l,&t);
29             P2[i]=(Node){l,t};
30         }
31         sort(P1,P1+N);
32         sort(P2,P2+M);
33         memset(vis,0,sizeof(vis));
34         LL score=0,num=0;
35         int i=0,j=0;
36         for(;i<M;i++){
37             while(j<N&&P1[j].l>=P2[i].l){
38                 vis[P1[j].t]++;
39                 j++;
40             }
41             for(int t=P2[i].t;t<=100;t++){
42                 if (vis[t]){
43                     num++;
44                     vis[t]--;
45                     score+=500*P2[i].l+2*P2[i].t;
46                     break;
47                 }
48             }
49         }
50         printf("%I64d %I64d\n",num,score);
51     }
52     return 0;
53 }

E:

F:

G:

H:

I:

描述:

代码:

 1 #include <iostream>
 2 #include <string.h>
 3 #include <stdio.h>
 4 #include <algorithm>
 5 #define Mod 1000000009
 6 #define LL long long
 7 using namespace std;
 8
 9 int N,M;
10 LL F[100100];
11 void builtF(){
12     F[0]=1;
13     for(int i=1;i<=100000;i++){
14         F[i]=(F[i-1]*i)%Mod;
15     }
16     return ;
17 }
18 LL QuickMod(LL a,LL p){
19     LL ans=1;
20     while(p){
21         if (p&1){
22            ans=(ans*a)%Mod;
23            p--;
24         }
25         p>>=1;
26         a=(a*a)%Mod;
27     }
28     return ans;
29 }
30 int main(){
31     builtF();
32     while(~scanf("%d%d",&N,&M)){
33         int l1=0,l2,r1=0,r2;
34         for(int i=0;i<N;i++){
35             int x;
36             scanf("%d",&x);
37             if (l1>=x) l2=l1-x;
38             else if (r1>=x) {
39                 if (l1%2==x%2) l2=0;else l2=1;
40             }else l2=x-r1;
41             if (r1+x<=M) r2=r1+x;
42             else if (l1+x<=M) {
43                 if ((l1+x)%2==M%2) r2=M;else r2=M-1;
44             }else r2=2*M-(l1+x);
45             l1=l2,r1=r2;
46         }
47         LL ans=0;
48         for(int i=l1;i<=r1;i+=2){
49             ans+=((F[M]%Mod)*(QuickMod(F[i]*F[M-i]%Mod,Mod-2)%Mod))%Mod;
50         }
51         printf("%I64d\n",ans%Mod);
52     }
53     return 0;
54 }

J:

描述:

代码:

 1 #include <iostream>
 2 #include <string.h>
 3 #include <stdio.h>
 4 #include <algorithm>
 5 #define Mod 1000000009
 6 #define LL long long
 7 using namespace std;
 8
 9 double T[30];
10 double p,ans,q;
11 int main(){
12     while(~scanf("%lf",&p)){
13         q=1-p;
14         ans=0;
15         T[0]=1/p;T[1]=T[0]/p;T[2]=T[1]/p;
16         ans+=T[0]+T[1]+T[2];
17         for(int i=3;i<20;i++){
18             T[i]=(T[i-1]-T[i-3]*q)/p;
19             ans+=T[i];
20         }
21         ans=ans*2-T[19];
22         printf("%.6lf\n",ans);
23     }
24     return 0;
25 }

K:

暑期多校 第一场,布布扣,bubuko.com

时间: 2024-10-05 05:32:09

暑期多校 第一场的相关文章

2014多校第一场A题 || HDU 4861 Couple doubi

题目链接 题意 : 有K个球,给你一个数P,可以求出K个值,(i=1,2,...,k) : 1^i+2^i+...+(p-1)^i (mod p).然后女朋友先取,再xp取,都希望赢,如果女朋友能赢输出YES,否则输出NO 思路 :这个题,在纸上算算差不多就出来结果了,因为要赢,所以一开始必定拿大的,根据规律可以发现最后的那个取余结果不是0就是某个数,所以就看那个数有奇数个还是偶数个即可. 官方题解: 1 #include <stdio.h> 2 #include <string.h&g

2014多校第一场 I 题 || HDU 4869 Turn the pokers(费马小定理+快速幂模)

题目链接 题意 : m张牌,可以翻n次,每次翻xi张牌,问最后能得到多少种形态. 思路 :0定义为反面,1定义为正面,(一开始都是反), 对于每次翻牌操作,我们定义两个边界lb,rb,代表每次中1最少时最少的个数,rb代表1最多时的个数.一张牌翻两次和两张牌翻一次 得到的奇偶性相同,所以结果中lb和最多的rb的奇偶性相同.如果找到了lb和rb,那么,介于这两个数之间且与这两个数奇偶性相同的数均可取到,然后在这个区间内求组合数相加(若lb=3,rb=7,则3,5,7这些情况都能取到,也就是说最后的

2014多校第一场D题 || HDU 4864 Task (贪心)

题目链接 题意 : 用N台机器,M个任务,每台机器都有一个最大工作时间和等级,每个任务有一个需要工作时间和一个等级.如果机器完成一个任务要求是:机器的工作时间要大于等于任务的时间,机器的等级要大于等于任务的等级.一台机器只能完成一个任务,一个任务只能被一台机器完成.每个机器完成一个任务公司能够获得500*xi+2*yi (此处xy都是指被完成的任务的).输出所有机器能完成的最多任务数,和最大盈利. 思路 :贪心,自己做的时候想了各种排序都不对,没有考虑到500*xi+2*yi 这个公式的重要性.

2014多校第一场J题 || HDU 4870 Rating(DP || 高斯消元)

题目链接 题意 :小女孩注册了两个比赛的帐号,初始分值都为0,每做一次比赛如果排名在前两百名,rating涨50,否则降100,告诉你她每次比赛在前两百名的概率p,如果她每次做题都用两个账号中分数低的那个去做,问她最终有一个账号达到1000分需要做的比赛的次数的期望值. 思路 :可以直接用公式推出来用DP做,也可以列出210个方程组用高斯消元去做. (1)DP1:离散化.因为50,100,1000都是50的倍数,所以就看作1,2,20.这样做起来比较方便. 定义dp[i]为从 i 分数到达i+1

2014多校第一场 E 题 || HDU 4865 Peter&#39;s Hobby (DP)

题目链接 题意 : 给你两个表格,第一个表格是三种天气下出现四种湿度的可能性.第二个表格是,昨天出现的三种天气下,今天出现三种天气的可能性.然后给你这几天的湿度,告诉你第一天出现三种天气的可能性,让你求出最可能出现的天气序列 . 思路 : 定义第 i 天叶子湿度为hum[i].第 i 天,天气为 j 的最大概率为dp[i][j].wealea[i][j]表示天气为 i 叶子为j的概率,weawea[i][j]表示今天天气为 i 明天天气为j的概率,st[i]表示第一天天气为i的概率.pre[i]

多校第一场 费马小定理+模拟+组合数学

A题:Couple doubi 链接:http://acm.hdu.edu.cn/showproblem.php?pid=4861 这题逗逼了,刚开始根本就没什么思路,刚开始看题的时候有点像费马小定理,但是这个定理我只知道,然后没用过.看了下定义,有点不一样的是反着的,然后反着的我又不会转化,尼玛,就这样错过了最好的解题方法.然后队友又理解错题意了.WA了多发,然后我重新看了下题意,然后队友才发觉理解错题意了,然后找了规律才A. 代码比较短,就不贴了,真的写吧. if(k/(p-1)&1) pu

HDU 5288 OO&#39;s sequence (2015多校第一场 二分查找)

OO's Sequence Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) Total Submission(s): 955    Accepted Submission(s): 358 Problem Description OO has got a array A of size n ,defined a function f(l,r) represent the nu

杭电2018多校第一场(2018 Multi-University Training Contest 1) 1001.Maximum Multiple (HDU6298)-数学思维题(脑子是个好东西,可惜我没有)

暑假杭电多校第一场,这一场是贪心场,很多贪心的题目,但是自己太菜,姿势挫死了,把自己都写吐了... 2018 Multi-University Training Contest 1 HDU6298.Maximum Multiple 题目意思就是给你一个n,找出来三个数x,y,z, 使得n=x+y+z,而且x,y,z都是n的因数,并且x*y*z为最大值,让你输出来x*y*z的最大值.如果没有满足条件的情况就输出-1. 由1=1/2+1/3+1/6=1/3+1/3+1/3=1/2+1/4+1/4,所

hdu 5294 Tricks Device(2015多校第一场第7题)最大流+最短路

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5294 题意:给你n个墓室,m条路径,一个人在1号墓室(起点),另一个人在n号墓室(终点),起点的那个人只有通过最短路径才能追上终点的那个人,而终点的那个人能切断任意路径. 第一问--终点那人要使起点那人不能追上的情况下可以切的最少的路径数,输出最少的路径数 第二问--起点那人能追上终点那人的情况下,终点那人能切断的最多的路径数,输出最多的路径数 思路:要使起点那人无法追上,只要使他的最短路径不存在就