A题.Berland Poker

读懂题意即可
代码:

#include <bits/stdc++.h>
#define ll long long
using namespace std;int main()
{ll t,n,m,k;scanf("%lld",&t);while(t--){scanf("%lld %lld %lld",&n,&m,&k);ll op=n/k;if(m<=op){printf("%lld\n",m);continue;}else{ll ans=op;m-=op;ll u=k-1;if(m%u==0){printf("%lld\n",ans-m/u);}else{ans=ans-(m/u+1);printf("%lld\n",ans);}}}return 0;
}

B题.New Theatre Square

只能选1 x 1 或 1 x 2的,如果1x1的价格的两倍小于1x2的,那么就全部用1x1的,否则能用1x2的就用1x2的
代码:

#include <bits/stdc++.h>
#define ll long long
using namespace std;char s[105][10005];
int main()
{ll t,n,m,k,x,y;scanf("%lld",&t);while(t--){scanf("%lld %lld %lld %lld",&n,&m,&x,&y);for(int i=0;i<n;i++){scanf("%s",s[i]);}if(2*x<=y){ll cnt=0;for(int i=0;i<n;i++){for(int j=0;j<m;j++){if(s[i][j]=='.'){cnt++;}}}printf("%lld\n",cnt*x);}else{ll sx=0,sy=0;for(int i=0;i<n;i++){int j=0;while(j<m){if(j<m-1){if(s[i][j]=='.'&&s[i][j+1]=='.'){sy++;j+=2;continue;}if(s[i][j]=='.'&&s[i][j+1]!='.'){sx++;j++;continue;}j++;}else{if(s[i][j]=='.'){sx++;j++;continue;}j++;}}}printf("%lld\n",sx*x+sy*y);}}return 0;
}

C题.Mixing Water

题意:有两种水,一种热水温度为h,一种凉水温度为c,只能按照一杯热水、一杯凉水、一杯热水、一杯凉水······的顺序添加到同一个桶中,问最少需添加几次,使得桶中水的平均温度最接近t
思路:因为精度问题WA了两次很难受,这题推一个式子即可,当添加次数为偶数时,桶内温度一定为(h+c)/2
设当添加次数为j,且j为奇数时,可得到这样一个式子:(((j-1)/2)*(h+c)+h)/j=t
这样可以把 j 解出来,j可能是个浮点数,只是个模糊数值吧,把j附近的整数枚举一遍求出最终的答案
代码:

#include <bits/stdc++.h>
#define ll long long
using namespace std;char s[105][10005];
int main()
{ll t,h,c,f;scanf("%lld",&t);while(t--){scanf("%lld %lld %lld",&h,&c,&f);if(h<=f){printf("1\n");continue;}double hh=h*1.0;double cc=c*1.0;double ff=f*1.0;//double all=0;double op=(hh+cc)/2.0;if(ff<=op){printf("2\n");continue;}double ans=(hh-cc)/(ff*2.0-hh-cc);double opc=ff-op;ll df=ans;ll pos;double minn=99999999.0;for(ll i=df-3;i<=df+3;i++){if(i<=0){continue;}if(i%2==0){double uu=ff-op;if(uu<=minn){pos=i;minn=uu;}}else{double ee=(((i-1)/2)*(h+c)*1.0+h*1.0)/(i*1.0);double uu=fabs(ee-ff);if(uu<minn){pos=i;minn=uu;}}}if(pos%2==0){printf("2\n");}else{printf("%lld\n",pos);}}return 0;
}

待更新·································先打lol去了

D题.Yet Another Yet Another Task

又是最后剩下半个小时,写了个假DP WA了好几次,唉。。。。
题意:求一段区间,使该区间去掉一个最大值后的区间和值最大,问区间和最大值是多少
思路:因为ai<=30,直接从0到30枚举最大值,对每次最大值求最大子段和
代码:

#include <bits/stdc++.h>
#define ll long long
using namespace std;ll a[200005],d[200005];
int main()
{ll n;scanf("%lld",&n);for(int i=1;i<=n;i++){scanf("%lld",&a[i]);}ll ans=-9999999999999;for(int i=0;i<=30;i++){ll maxx=-9999999999999;for(int j=1;j<=n;j++){if(a[j]>i){d[j]=0;}else{d[j]=max(d[j-1]+a[j],(ll)0);maxx=max(maxx,d[j]);}}ans=max(ans,maxx-i);}printf("%lld\n",ans);return 0;
}

E题.Modular Stability

题意:给你一个n和k,要求在1~n内取k个数,对于任何正数x,x%这k个数任何排列方式后的值相同,问有多少种取法
思路:仿照样例1打个表,差不多就知道是咋回事了
再用组合数和逆元求出最终结果
代码:

#include <bits/stdc++.h>
#define ll long long
using namespace std;ll mod=998244353,bb=1;
void init(ll r)
{for(ll i=r;i>=1;i--){bb=bb*i%mod;}
}
ll apow(ll a,ll b)
{ll s=1;while(b){if(b&1){s=s*a%mod;}a=a*a%mod;b>>=1;}return s%mod;
}
ll C(ll n,ll r)
{ll aa=1;//cout<<n<<" "<<r<<endl;for(ll i=n;i>=n-r+1;i--){aa=aa*i%mod;}return aa*apow(bb,mod-2)%mod;
}
int main()
{ll n,k;cin>>n>>k;if(n==k){cout<<"1"<<endl;return 0;}if(n<k){cout<<"0"<<endl;return 0;}if(k==1){cout<<n<<endl;return 0;}init(k-1);ll ans=0;for(ll i=1;i<=n;i++){if(i+k>n){break;}ll maxx=n/i;if(maxx<k){continue;}ans=(ans%mod+C(maxx-1,k-1)%mod)%mod;}cout<<ans<<endl;return 0;
}

Codeforces edu 88(A~E)相关推荐

  1. [Codeforces 940E]Cashback(dp+set)

    题目链接:http://codeforces.com/problemset/problem/940/E 思路:划分任意长度,每c长度区间可去除一个最小值,所以划分方法就是单独自己一个或者长度为c的区间 ...

  2. Codeforces Round #626(Div.2) 解题报告

    Codeforces Round #626 (Div. 2, based on Moscow Open Olympiad in Informatics) [前言] 最近沉迷只狼,好久没有打CF了,水平 ...

  3. 2018.12.08 codeforces 939E. Maximize!(二分答案)

    传送门 二分答案好题. 题意简述:要求支持动态在一个数列队尾加入一个新的数(保证数列单增),查询所有子数列的 最大值减平均值 的最大值. 然而网上一堆高人是用三分做的. 我们先考虑当前的答案有可能由什 ...

  4. codeforces contest 1140(D~G)

    前言 A~C不想写博客了,就不写了,后面的题还是要推一推的,所以写一下 CF 1140 D 题目大意: 给出一个正多边形,顶点按顺序标号为111~nnn,一个三角划分的权值是每个三角形三个顶点的编号乘 ...

  5. Codeforces 365C - Matrix(hash + yy)

    题意:给定你一个数串s,再给你一个 a ,问你在矩阵d(第i,j个元素为si*sj)有多少个小矩形的和为a 解题思路:可知  a = (s[x] + s[x+1] + ....s[y])* (s[p] ...

  6. codeforces Restore Cube(暴力枚举)

    1 /* 2 题意:给出立方体的每个顶点的坐标(是由源坐标三个数某几个数被交换之后得到的!), 3 问是否可以还原出一个立方体的坐标,注意这一句话: 4 The numbers in the i-th ...

  7. CodeForces - 940E Cashback (DP+思维模型)

    题意:给你长度为n的数列,一段序列的价值是,所有数的总和-最小的len/c的数的和,求如何分割数列,使得答案总和最小. 分析:一开始看到向下取整不外乎两种情况:一是用计算机处理,那么表明用暴力,emm ...

  8. codeforces 940E. Cashback(线性dp)

    传送门 题意:给出一个nnn个数的序列,要求将序列分成若干段,对于一段长度为kkk的自动删去最小的⌊kc⌋\left \lfloor \frac{k}{c} \right \rfloor⌊ck​⌋个数 ...

  9. Codeforces Round #666(Div. 2)E. Monster Invaders(DP)

    E. Monster Invaders 题意: 游戏里有nnn个关卡,你初始在第一关,第iii关有tit_iti​个小怪,每关都有且仅有一个boss. 小怪的hp为1,boss的hp为2. 你有三种攻 ...

  10. Codeforces 1089D Eels (看题解)

    Eels 感觉想不出来这种东西.. 题解讲的很清楚啦. 我好lj啊. https://codeforces.com/blog/entry/64331 #include<bits/stdc++.h ...

最新文章

  1. C语言经典例98-将字符转为大写字母并写入文件
  2. php安装openssl 扩展
  3. BZOJ3498 : PA2009 Cakes
  4. java如何避免注释重复_Java 8中的可重复注释
  5. 什么标签用于在表单中构建复选框_基础表单标签及属性
  6. Python推导式comprehension:列表推导式、集合推导式、字典推导式
  7. MyBatis拦截器原理探究MyBatis拦截器原理探究 1
  8. kubernetes 应用快速入门
  9. va_start和va_end的使用及原理
  10. 移动前端自适应解决方案和比较
  11. 禁用行、列、单元格单元格编辑
  12. 问题 A: 【一本通提高组合数学】Bullcow 牡牛和牝牛
  13. abaqus 关联 子程序_Abaqus2016版本关联子程序教程
  14. Aspack壳手动脱壳
  15. java 自定义表达式_自定义 Java Lambda
  16. 自己动手搭网站(六):javaweb搭建一个简单的个人博客系统
  17. 使用Hyper-V集群和存储功能以达到HA
  18. 【论文阅读】Interpretable Visual Reasoning via Probabilistic Formulation under Natural Supervision
  19. 前端实现文本框在光标后插入图片
  20. oracle查看时间戳函数,oracle数据库实现获取时间戳的无参函数

热门文章

  1. 浅析Linux系统入侵排查与应急响应技术
  2. 程序员常用的软件(附下载地址)
  3. 大数据时代下的人工智能医疗
  4. c语言中除号用百分号,【期末复习】人教版六年级数学(下册)知识要点
  5. java 纯真ip数据库_纯真IP数据库格式读取方法(JAVA/PHP/Python)
  6. FGSM实例:利用fgsm攻击RMB识别模型
  7. 软件开发的一些感想(五年工作总结版)
  8. webrtc系列3——对于stun和turn的理解
  9. 2021-2027全球与中国下一代测序数据分析市场现状及未来发展趋势
  10. Java 小游戏(骑士大战魔王)