2.18比赛(T2,T3留坑)
2.18比赛(T2,T3留坑)
超越一切(ak)
【题目描述】
夏洛可得到一个(h+1)×(w+1)的巧克力,这意味着她横着最多可 以切 h 刀,竖着最多可以切 w 刀 她想总共切 k 刀,每刀要么竖着切要么横着切,如果竖着切了 i 刀,横着切了 j 刀,会得到(i+1) ×(j+1)个巧克力,定义一个切 k 刀 的方案的代价是每一刀切完后巧克力个数之和,假设每刀切的位置是 随机选择的(即剩余能切的位置等概率随机选一个),请你求出期望 代价,对109+7 取模
【输入格式】
一行三个正整数 h,w,k
【输出格式】
一行一个整数表示答案
【样例 1 输入】
2 1 2
【样例 1 输出】
666666677
【数据范围】
本题有 6 个子任务,每个子任务只有 1 个测试点
对于 100%的数据,满足 h,w≤ 1018,k≤h+w
Subtask 1[10 pts]: h,w≤300
Subtask 2[10 pts]:h,w≤5000
Subtask 3[30 pts]:h,w≤106
Subtask 4[25 pts]:k≤107
Subtask 5[15 pts]:k=h+w
Subtask 6[10 pts]:无特殊限制 选手文件夹下的额外样例和最终数据范围相同
sol:题解写的非常好(大雾)


稍微解释一下,对于每一个矩形,只对它左下角的那个点记录贡献
记录的是中间的点的贡献,就是不在边界上的点,这样的点共有h*w个,每个点切中的概率就是前面那个式子
然后因为这是每个点的期望,统计答案时要乘以h*w
还有边上的点,对于最最左下角的点,k刀中每次切都会有1的贡献,所以ans+k
还有不在左下角的点,每次切都会新产生一个会造成贡献的点,ans+=(1+k)*k/2
标算已经在上面了,在贴一遍没什么意思,放一份较易理解的75pts的暴力好了
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
inline ll read()
{
ll s=;
bool f=;
char ch=' ';
while(!isdigit(ch))
{
f|=(ch=='-'); ch=getchar();
}
while(isdigit(ch))
{
s=(s<<)+(s<<)+(ch^); ch=getchar();
}
return (f)?(-s):(s);
}
#define R(x) x=read()
inline void write(ll x)
{
if(x<)
{
putchar('-'); x=-x;
}
if(x<)
{
putchar(x+''); return;
}
write(x/);
putchar((x%)+'');
return;
}
#define W(x) write(x),putchar(' ')
#define Wl(x) write(x),putchar('\n')
const ll Mod=;
const ll N=;
ll h,w,k;
ll Jiec[N],Niy[N];
inline void Ad(ll &x,ll y)
{
x+=y;
x-=(x>=Mod)?(Mod):;
return;
}
inline ll Ksm(ll x,ll y)
{
ll ans=1ll;
while(y)
{
if(y&) ans=ans*x%Mod;
x=x*x%Mod;
y>>=;
}
return ans%Mod;
}
inline ll C(ll n,ll m)
{
if(!Niy[m]) Niy[m]=Ksm(Jiec[m],Mod-)%Mod;
if(!Niy[n-m]) Niy[n-m]=Ksm(Jiec[n-m],Mod-)%Mod;
return Jiec[n]*Niy[m]%Mod*Niy[n-m]%Mod;
}
int main()
{
freopen("ak.in","r",stdin);
freopen("ak.out","w",stdout);
ll i;
R(h); R(w); R(k);
Jiec[]=1ll;
for(i=;i<=h+w;i++)
{
Jiec[i]=Jiec[i-]*i%Mod;
}
ll ans=;
ll NN=Ksm(C(h+w,2ll),Mod-)%Mod;
Ad(ans,C(k + ,3ll)*NN%Mod);
ans=ans*(h*w%Mod)%Mod;
Ad(ans,(((+k)*k)>>)%Mod);
Ad(ans,k);
Wl(ans);
return ;
}
/*
input
1 2
output
*/
75pts暴力
附上ak王pfy的题解
2.18比赛(T2,T3留坑)的更多相关文章
- CPU虚拟化技术(留坑)
留坑~~~ 不知道这个是这么实现的 CPU虚拟化技术就是单CPU模拟多CPU并行,允许一个平台同时运行多个操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率.虚 ...
- 【留坑】uva12299
这么sb的题本来想练练手记过就是过不了 拍半天也没问题 留坑 哪天有空了去linux下面试试 #include<cstdio> #include<cstring> #inclu ...
- java 多线程,T1 T2 T3 顺序执行
一.程序设计 1.抽象公共类PublicThread,具有先前线程属性previousThread.父类为Thread 2.在PublicThread的run()方法中判断previousThread ...
- 三个线程T1,T2,T3.保证顺序执行的三种方法
经常看见面试题:有三个线程T1,T2,T3,有什么方法可以确保它们按顺序执行.今天手写测试了一下,下面贴出目前想到的3种实现方式 说明:这里在线程中我都用到了sleep方法,目的是更容易发现问题.之前 ...
- 【问题解决方案】Git bash进入多层子目录问题(通配符问题留坑)
cd进入指定路径下:cd 斜杠 斜杠 方法一: 1- 撇丿,不是"那",盘符前面要加上 / (d盘前面也加,不加也行) 2- 路径名不区分大小写 3- 不用空格 4- 如果目录名中 ...
- [kuangbin带你飞]专题十一 网络流个人题解(L题留坑)
A - ACM Computer Factory 题目描述:某个工厂可以利用P个部件做一台电脑,有N个加工用的机器,但是每一个机器需要特定的部分才能加工,给你P与N,然后是N行描述机器的最大同时加工数 ...
- 题解 queen(留坑)
传送门 博客园突然打不开了,奇奇怪怪的-- 少写个等号没看出来 nm写反了没看出来 考完5min全拍出来了 手残属性加持 不对拍等于爆零 yysy,我连卢卡斯定理的存在都忘了-- 发现要让一大堆皇后能 ...
- join控制线程的执行循序 T1 -> T2 -> T3
/** * 控制线程的执行循序 T1 -> T2 -> T3 * join实现 */ public static void join(){ Thread t1 = new Thread(( ...
- 题解 c(留坑)
传送门 这题卡常--而且目前还没有卡过去 首先以原树重心为根,向所有子树重心连边,可以建立一棵点分树 点分树有两个性质: 一个是树高只有log层 另一个是两点在点分树上的lca一定在原树上两点间的树上 ...
随机推荐
- POJ2236
https://vjudge.net/problem/POJ-2236 An earthquake takes place in Southeast Asia. The ACM (Asia Coope ...
- Android学习之基础知识四-Activity活动4讲(Intent传递数据)
Intent除了可以开启一个活动,还能在启动活动的时候传递数据,此时Intent相当于一个保存数据的库,我们先把数据保存在Intent中,然后再根据各个activity的需要从其中取出数据. 一.使 ...
- Luogu P4779 【模板】单源最短路径(标准版)(Dijkstra+堆优化模板)
qwq dij其实和prim挺像的,prim是找权值最小点,dij是找边, 用一个优先队列就可以在加入边的时候直接排序,避免了每次遍历更新min priority_queue <pair< ...
- spring 和spring cloud 组成
spring 顶级项目:Spring IO platform:用于系统部署,是可集成的,构建现代化应用的版本平台,具体来说当你使用maven dependency引入spring jar包时它就在工作 ...
- TCP/IP协议---UDP协议
UDP是一个简单的面向数据报的运输层协议:进程的每个输出操作都产生一个UDP数据报,并组装成一份待发送的IP数据报.UDP数据报是要依赖IP数据报传送的.UDP协议并不可靠,它不能保证发出去的包会被目 ...
- 【LeetCode105】Construct Binary Tree from Preorder and Inorder Traversal★★
1.题目 2.思路 3.java代码 //测试 public class BuildTreeUsingInorderAndPreorder { public static void main(Stri ...
- 汇编 STOSB, STOSW, STOSD指令
知识点: 汇编指令 STOSB STOSW STOSD 一.汇编指令STOSB 004113AC 8DBD B4FEFFFF LEA EDI,DWORD PTR SS:[EBP-14C] 004113 ...
- 使用Pyspark进行特征工程时的那些坑
以脚本spark_clean_online_action.py.数据集new_sxf_time_count_1781115582.csv为例: 集群节点包括212.216.217.218.需要注意的是 ...
- (代码篇)从基础文件IO说起虚拟内存,内存文件映射,零拷贝
上一篇讲解了基础文件IO的理论发展,这里结合java看看各项理论的具体实现. 传统IO-intsmaze 传统文件IO操作的基础代码如下: FileInputStream in = new FileI ...
- MariaDB 安装与启动 过程记录
1. 安装之前的准备工作 rpm -qa |grep mysql rpm -qa |grep mariadb 按照查出来的软件包使用 yum remove 全部卸载,当然也可以 yum remov ...