题目链接:B、New Theatre Square

题意:

你要把所有“.” 都变成“*”,你可以有两个选择,第一种就是一次铺一个方块(1*1),第二种就是同一行一次铺两个(1*2)。第一种花费x,第二种花费y。问最少花费多少能把所有铺完

题解:

如果y>=2*x,那么就直接找到所有“.”,然后乘于x就行

否则就找俩俩一对就行了

代码:

 1 #include<stdio.h>
2 #include<algorithm>
3 #include<iostream>
4 #include<string>
5 #include<queue>
6 #include<deque>
7 #include<string.h>
8 #include<map>
9 #include <iostream>
10 #include <math.h>
11 #define Mem(a,b) memset(a,b,sizeof(a))
12 const double II = acos(-1);
13 const double PP = (II*1.0)/(180.00);
14 using namespace std;
15 typedef long long ll;
16 const int INF=0x3f3f3f3f;
17 const int maxn=1000+10;
18 char s[maxn][maxn];
19 int main()
20 {
21 int t;
22 scanf("%d",&t);
23 while(t--)
24 {
25 int n,m,x,y;
26 scanf("%d%d%d%d",&n,&m,&x,&y);
27 for(int i=1; i<=n; ++i)
28 scanf("%s",s[i]+1);
29 int sum_white=0,sum=0;
30 for(int i=1; i<=n; ++i)
31 {
32 for(int j=1; j<=m; j++)
33 {
34 if(s[i][j]=='*') continue;
35 if(s[i][j]=='.' && s[i][j+1]=='.')
36 {
37 sum_white+=2;
38 sum+=y;
39 j++;
40 continue;
41 }
42 else
43 {
44 sum_white++;
45 sum+=x;
46 j++;
47 }
48 }
49 }
50 if(2*x<=y)
51 printf("%d\n",sum_white*x);
52 else
53 {
54 printf("%d\n",sum);
55 }
56 }
57 return 0;
58 }

题目链接:C、Mixing Water

题意:

往一个无限深的桶里面倒水,先倒入热水再倒入凉水,热水温度h,凉水温度c。给你一个温度n,问你倒多少次水才可以是水桶内温度最接近n

题解:

如果倒入水的次数是偶数,那么温度一直是 (h+c)/2

如果倒入水次数是奇数,会得到水桶内温度 y=((x+1)*h+c*x)/(2*x+1) (x是倒入凉水次数)

可见如果将x只取奇数(1,3,5,7...)那么这就是一个单调递减函数。所以二分求解就可以了

也可以这样理解,你倒入x杯凉水和x杯热水之后温度是(h+c)/2,那么你有多倒入一杯热水,那么这杯热水的温度肯定被所有杯水平分,那么x越大,每单独一杯分配到的水温越小

代码:

#include<stdio.h>
#include<algorithm>
#include<iostream>
#include<string>
#include<queue>
#include<deque>
#include<string.h>
#include<map>
#include <iostream>
#include <math.h>
#define Mem(a,b) memset(a,b,sizeof(a))
const double II = acos(-1);
const double PP = (II*1.0)/(180.00);
using namespace std;
typedef long long ll;
const int INF=0x3f3f3f3f;
const int maxn=1000+10;
const double eps=1e-6;
const double PI=acos(-1);
ll h,c,t;
int main()
{
ll tt;
cin>>tt;
while(tt--)
{
cin>>h>>c>>t;
if(h+c>>1>=t)
{
cout<<2<<endl;
}
else
{
//ll x=(h-t)*1.0/(2*t-h-c);
//cout<<(fabs(t-get(x))<=fabs(t-get(x+1))?2*x+1:2*x+3)<<endl;
ll l=0,r=1e9,ans=0;
while(l+1<r)
{
//printf("%I64d %I64d**\n",l,r);
ll mid=l+r>>1;
//if(mid%2!=0) mid--;
double temp=((h+c)*mid*1.0+h)/(mid*2.0+1.0);
if(temp>=t)
{
ans=mid;
l=mid;
}
else
{
r=mid;
}
}
double temp1=((h+c)*ans*1.0+h)/(ans*2.0+1.0);
ans++;
double temp2=((h+c)*ans*1.0+h)/(ans*2.0+1.0);
if(fabs(temp1-t)<=fabs(t-temp2))
{
printf("%I64d\n",(ans-1)*2+1);
}
else printf("%I64d\n",ans*2+1);
}
}
return 0;
}
 

Educational Codeforces Round 88 (Rated for Div. 2) B、New Theatre Square C、Mixing Water的更多相关文章

  1. Educational Codeforces Round 88 (Rated for Div. 2) B. New Theatre Square(贪心)

    题目链接:https://codeforces.com/contest/1359/problem/B 题意 有一块 $n \times m$ 的地板和两种瓷砖: $1 \times 1$,每块花费为 ...

  2. Educational Codeforces Round 88 (Rated for Div. 2) D. Yet Another Yet Another Task(枚举/最大连续子序列)

    题目链接:https://codeforces.com/contest/1359/problem/D 题意 有一个大小为 $n$ 的数组,可以选取一段连续区间去掉其中的最大值求和,问求和的最大值为多少 ...

  3. Educational Codeforces Round 88 (Rated for Div. 2) A. Berland Poker(数学)

    题目链接:https://codeforces.com/contest/1359/problem/A 题意 $n$ 张牌可以刚好被平分给 $k$ 个人,其中有 $m$ 张 joker,当一个人手中的 ...

  4. Educational Codeforces Round 88 (Rated for Div. 2) E. Modular Stability(数论)

    题目链接:https://codeforces.com/contest/1359/problem/E 题意 有一大小为 $k$ 的数组,每个元素的值在 $[1,n]$ 间,若元素间两两不等,问有多少数 ...

  5. Educational Codeforces Round 88 (Rated for Div. 2) C. Mixing Water(数学/二分)

    题目链接:https://codeforces.com/contest/1359/problem/C 题意 热水温度为 $h$,冷水温度为 $c\ (c < h)$,依次轮流取等杯的热冷水,问二 ...

  6. Educational Codeforces Round 88 (Rated for Div. 2) E、Modular Stability 逆元+思维

    题目链接:E.Modular Stability 题意: 给你一个n数,一个k,在1,2,3...n里挑选k个数,使得对于任意非负整数x,对于这k个数的任何排列顺序,然后用x对这个排列一次取模,如果最 ...

  7. Educational Codeforces Round 88 (Rated for Div. 2) D、Yet Another Yet Another Task

    题意: 给你一个含n个数a1,a2...an的数组,你要找到一个区间[l,r],使得al+a(l+1)+...+a(r-1)+ar减去max(al,a(l+1),...,a(r-1),ar)的值尽可能 ...

  8. Educational Codeforces Round 60 (Rated for Div. 2) - C. Magic Ship

    Problem   Educational Codeforces Round 60 (Rated for Div. 2) - C. Magic Ship Time Limit: 2000 mSec P ...

  9. Educational Codeforces Round 60 (Rated for Div. 2) - D. Magic Gems(动态规划+矩阵快速幂)

    Problem   Educational Codeforces Round 60 (Rated for Div. 2) - D. Magic Gems Time Limit: 3000 mSec P ...

随机推荐

  1. Fail2ban工具使用

    Fail2ban ​ fail2ban扫描日志文件并且可以识别禁用某些多次尝试登录的IP,通过更新系统的防火墙规则来实现拒绝该IP连接,也可以配置禁用的时间.fail2ban提供了一些常用软件默认的日 ...

  2. wpf 中用 C# 代码创建 PropertyPath ,以对间接目标进行 Storyboard 动画.

    如图,一个 Rectangle 一个 Button ,点击按钮时要通过动画完成对 Rectangle填充色的渐变动画. Xaml: 1 <Window 2 x:Class="WpfAp ...

  3. 十七:SQL注入之二次加解密,DNS注入

    加解密,二次,DNSlog注入 注入原理,演示案例,实际应用. less-21关,base64进行解密 encode加密decode解密 cookie处注入 判断加密算法,然后进行注入 less-24 ...

  4. Mac Navicat premium 12 连接mysql8.0.21出现 'caching_sha2_password' 解决方案

    1.通过命令 select user,plugin from user where user='root'; 我们可以发现加密方式是caching_sha2_password. 2.  修改查看加密方 ...

  5. TCP/IP协议栈在Linux内核中的运行时序分析

    网络程序设计调研报告 TCP/IP协议栈在Linux内核中的运行时序分析 姓名:柴浩宇 学号:SA20225105 班级:软设1班 2021年1月 调研要求 在深入理解Linux内核任务调度(中断处理 ...

  6. 通过trace分析优化其如何选择执行计划

    mysql5.6提供了对sql的跟踪trace,通过trace文件能够进一步了解为什么优化其选择执行计划a而不选b执行计划,帮助我们更好的理解优化其的行为. 使用方式:首先打开trace,设置格式为j ...

  7. 【老孟Flutter】源码分析系列之InheritedWidget

    老孟导读:这是2021年源码系列的第一篇文章,其实源码系列的文章不是特别受欢迎,一个原因是原理性的知识非常枯燥,我自己看源码的时候特别有感触,二是想把源码分析讲的通俗易懂非常困难,自己明白 和 让别人 ...

  8. linux搭建ARM可调式环境

    0x00 前言 本文中所介绍的方法目前只测试了单个的demo,并没有拿大型的项目做测试,但是应该是大同小异.这里介绍两种方法,一种是有独立的ARM硬件,另一种是依靠qemu实现的模拟化,其实其本质都是 ...

  9. jQuery 留言表单验证

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  10. 设置一个两边固定中间自适应的css

    1.两边浮动,中间自动宽度 给左右两个盒子设置左右浮动,中间的盒子不设置宽度,左右两边边距为左右盒子的宽度,中间盒子的位置必须写在右盒子下面,不然会把右盒子挤下去 如:   <div class ...