这名字诡异(然而就是这样)

  这次主要是yekehe和yu‘ao都来了,所以很开心的讨论(上了200)。

  但是,yu’ao dalao又AK了!(666666)

  不过总体难度也不高,主要是T3没思路。

  T1 二分或桶

  ·如果你不会这道题,出门右转找傅哥去。

  去年蒟蒻时期的噩梦啊。然而只是一道PJ的水题。

  二分洪水的高度(题目错了,数据是向上取整),然后判断是否可行。

  注意开long long(不开80)

  CODE

#include<cstdio>
using namespace std;
typedef long long LL;
const int N=;
LL a[N][N],n,m,i,j,v,h,s;
inline char get(void)
{
static char buf[], *p1 = buf, *p2 = buf;
if (p1 == p2)
{
p2 = (p1 = buf) + fread(buf, , , stdin);
if (p1 == p2) return EOF;
}
return *p1++;
}
inline void read(LL &x)
{
x = ; static char c;
for (; !(c >= '' && c <= ''); c = get());
for (; c >= '' && c <= ''; x = x * + c - '', c = get());
}
inline bool check(LL k)
{
long long res=;
for (i=;i<=n;++i)
for (j=;j<=m;++j)
if (a[i][j]<=k)
res+=k-a[i][j];
return res<v;
}
int main()
{
freopen("water.in","r",stdin); freopen("water.out","w",stdout);
read(n); read(m); read(v);
for (i=;i<=n;++i)
for (j=;j<=m;++j)
read(a[i][j]);
LL l=,r=v+;
while (l<=r)
{
LL mid=l+r>>;
if (check(mid)) h=mid+,l=mid+; else r=mid-;
}
for (i=;i<=n;++i)
for (j=;j<=m;++j)
if (a[i][j]<=h) s+=a[i][j];
printf("%lld %lld",h,s);
return ;
}

  T2 前缀和+姜度大佬玄学算法。

  首先思路很好想,把墙的高度都减去一个x就转化成了一个找连续区间的和>=0的问题了。

  暴力:O(n^3); 前缀和优化:O(n^2); 单调栈上二分(裸二分会炸):O(n log n);

  这些,都过不了。

  然后由于姜度dalao暑假来HW给我们讲过了求最长的区间和>=k的算法,非常简洁且有效率(O(n));

  设一个数组mx[]表示后向前缀和最大值,当前答案为res,那么如果mx[i+res]>=s[i],则向后枚举答案一定增大。

  由于两个指针(i和res)一起增大,所以复杂度为O(n);

  CODE

#include<cstdio>
//#include<ctime>
using namespace std;
typedef long long LL;
const LL N=;
LL sum[N],a[N],mx[N],n,m,i,x,res;
inline char get(void)
{
static char buf[], *p1 = buf, *p2 = buf;
if (p1 == p2)
{
p2 = (p1 = buf) + fread(buf, , , stdin);
if (p1 == p2) return EOF;
}
return *p1++;
}
inline void read(LL &x)
{
x = ; static char c;
for (; !(c >= '' && c <= ''); c = get());
for (; c >= '' && c <= ''; x = x * + c - '', c = get());
}
inline void write(LL x)
{
if (x/) write(x/);
putchar(x%+'');
}
int main()
{
freopen("dam.in","r",stdin); freopen("dam.out","w",stdout);
read(n); read(m);
for (i=;i<=n;++i)
read(a[i]);
while (m--)
{
read(x);
sum[]=;
for (i=;i<=n;++i)
sum[i]=sum[i-]+a[i]-x;
mx[n]=sum[n];
for (i=n-;i;--i)
mx[i]=sum[i]>mx[i+]?sum[i]:mx[i+];
res=;
for (i=;i+res<=n;++i)
while (mx[i+res]>=sum[i-]&&i+res<=n) ++res;
write(res);
putchar(' ');
}
//printf("\n%.2lf",(double)clock());
return ;
}

  T3 当时看到题目蒙蔽了,从来没坐过概率之类的问题。

  yu‘ao dalao打了很长(貌似)的递推,然后我看了标算才大彻大悟。

  这就是一道你知道概率公式记忆化搜索的题。

  把一个状态(m,a[])(m是剩下的天数,a[]是每个人剩下的体力)hash成一个不会重复的大整数。记搜即可。

  CODE

#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
const int N=,seed=,MAX_SIZE=;
int a[N],n,m,i;
double s[MAX_SIZE];
bool f[MAX_SIZE];
inline void read(int &x)
{
x=; char ch=getchar();
while (ch<''||ch>'') ch=getchar();
while (ch>=''&&ch<='') x=x*+ch-'',ch=getchar();
}
inline int hash(int m)
{
int res=m;
for (int i=;i<n;++i)
res=res*seed+a[i];
return res;
}
inline double dfs(int m)
{
if (!m) return 1.0*(a[]>);
if (f[hash(m)]) return s[hash(m)];
f[hash(m)]=;
double tot=0.0,t=0.0;
for (int i=;i<=n;++i)
if (a[i]>)
{
a[i]--; tot+=dfs(m-); a[i]++; t++;
}
if (t) return s[hash(m)]=tot/t; else return ;
}
int main()
{
freopen("hung.in","r",stdin); freopen("hung.out","w",stdout);
read(n); read(m);
for (i=;i<=n;++i)
read(a[i]);
for (i=;i<=n;++i)
{
swap(a[],a[i]);
memset(f,,sizeof(f));
printf("%.6lf\n",dfs(m));
}
return ;
}

EZ 2017 01 07 t的更多相关文章

  1. 2017/01/07 学习笔记 jar包,maven

    ① 关于tar,jar,war文件 tar是通用的另一种打包格式,为了部署到服务器时方便. jar是java app server识别的java部署格式,其实是Zip文件,只是内部的文件有规范. wa ...

  2. 【web开发 | 移动APP开发】 Web 移动开发指南(2017.01.05更新)

    版本记录 - 版本1.0 创建文章(2016.12.30) - 版本1.1 更正了hybird相关知识:增加了参考文章(2017.01.05): + Web APP更正为响应式移动站点与页面,简称响应 ...

  3. http://www.cnblogs.com/zhaoyang/archive/2012/01/07/2315436.html

    http://www.cnblogs.com/zhaoyang/archive/2012/01/07/2315436.html

  4. Mysql Innodb 性能参数设置 https://www.rathishkumar.in/2017/01/how-to-allocate-innodb-buffer-pool-size-in-mysql.html

    参考原文: https://www.rathishkumar.in/2017/01/how-to-allocate-innodb-buffer-pool-size-in-mysql.html 查看系统 ...

  5. java编程如何实现2017-01-16 22:28:26.0这样的时间数据,转换成2017:01:16:22:28:26这样的时间数据

    不多说,直接上干货! timereplace.java package zhouls.bigdata.DataFeatureSelection.util; /* * 这个程序,是用来做补充的 */ p ...

  6. Java实现 LeetCode 面试题 01.07. 旋转矩阵(按照xy轴转+翻转)

    面试题 01.07. 旋转矩阵 给你一幅由 N × N 矩阵表示的图像,其中每个像素的大小为 4 字节.请你设计一种算法,将图像旋转 90 度. 不占用额外内存空间能否做到? 示例 1: 给定 mat ...

  7. Cheatsheet: 2017 07.01 ~ 07.31

    Other 8 Key Application Performance Metrics & How to Measure Them The Code Review: The Most Impo ...

  8. [2017.02.07] Lua入门学习记录

    #!/home/auss/Projects/Qt/annotated/lua -- 这是第一次系统学习Lua语言 --[[ 参考资料: 1. [Lua简明教程](http://coolshell.cn ...

  9. TIOBE.2017.01最新编程语言排行榜

    Jan 2017     Jan 2016     Change     Programming Language     Ratings     Change1    1        Java   ...

随机推荐

  1. Python+Selenium笔记(十):元素等待机制

     (一) 前言 突然的资源受限或网络延迟,可能导致找不到目标元素,这时测试报告会显示测试失败.这时需要一种延时机制,来使脚本的运行速度与程序的响应速度相匹配,WebDriver为这种情况提供了隐式等待 ...

  2. Oracle EBS 查看双节点是否做了信任

    perl $AD_TOP/patch/115/bin/txkRunSSHSetup.pl verifyssh -contextfile=$CONTEXT_FILE -hosts=erpapp1,erp ...

  3. Angular 服务的简单使用

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. postgresql排序分页时数据重复问题

    当同时排序又分页时,如果排序的字段X不是唯一字段,当多个记录的X字段有同一个值时顺序是随机的. 这个有可能造成分页时数据重复的问题.某一页又把上一页的数据查出来了,其实数据库只有一条记录. 解决办法: ...

  5. [Spark Core] Spark 在 IDEA 下编程

    0. 说明 Spark 在 IDEA 下使用 Scala  & Spark 在 IDEA 下使用 Java 编写 WordCount 程序 1. 准备 在项目中新建模块,为模块添加 Maven ...

  6. 脱壳_01_虚拟机壳_VMP

    写在前面的话: 上一篇文章中,带领大家一起分析了简单的压缩壳ASPACK,今天,就和大家一起来揭开VMP这道神秘的面纱: [花指令]:扰乱调试器的,并不执行: [混淆]:对原指令进行拆解或等价替换,会 ...

  7. vcenter server appliance(vcsa) 配置IP的方法

    方法一: vcenter server appliance 5.1 及以后版本包括5.5,在安装完毕后,console界面是没有网络配置项的,如果需要进行IP配置,可以login后,输入命令yast( ...

  8. 【史上最全】申请配置阿里云服务器,并部署IIS和开发环境,项目上线经验

    最近一年在实验室做web后端开发,涉及到一些和服务器搭建及部署上线项目的相关经验,写个帖子和小伙伴们分享,一同进步! 首先谈一下,为什么越来越多中小型公司/实验室,部署项目的趋势都是在云服务器而不是普 ...

  9. 常用js对象、数组、字符串的方法

    字符串charAt() 返回在指定位置的字符.charCodeAt() 返回在指定的位置的字符的 Unicode 编码.concat() 连接字符串.indexOf() 检索字符串.match() 找 ...

  10. 面向对象程序设计_Task7_Summary

    Summary of the ... 题目链接:第七次作业 终于还是迎来了这学期的最后一次作业,唠叨话还是放最后说,先说说计算器这玩意儿吧 贯穿了整个学期的计算器,要是让我对自己做个评价,顶多只是还好 ...