T1  chinese

根据他的问题i*f[i]我们容易联想到,答案其实是每种方案中每个点的贡献为1的加和

我们可以转变问题,每个点在所有方案的贡献

进而其实询问就是1-k的取值,有多少中方案再取个和

事实上这样做就是将每个点抽离出来,虽然每种方案中可能包含多个可行点,但是我们每次考虑的都只是一个点的贡献,所以正确

ps:指数不能取模

代码很短

 1 #include<bits/stdc++.h>
2 #define int long long
3 using namespace std;
4 int n,m,K;
5 int mod=1e9+7;
6 int poww(int x,int y)
7 {
8 int ans=1;
9 while(y)
10 {
11 if(y&1)ans=ans*x%mod;
12 x=x*x%mod;
13 y>>=1;
14 }
15 return ans%mod;
16 }
17 int sum=0;
18 signed main()
19 {
20 scanf("%lld%lld%lld",&n,&m,&K);
21 int zz=poww(K,n*m-n-m+1);
22 int two=(n-1)+(m-1);
23 for(int k=2;k<=K;++k)
24 {
25 int xx=poww(k-1,two);
26 sum=(sum+(xx*zz)%mod)%mod;
27 }
28 printf("%lld\n",sum*n%mod*m%mod);
29 }

T2 physics

正解没打,咕了

用暴力剪枝水过的

剪枝一:处理前缀和后O(1)查询,但是因为每次改变的值很小

修改时只需判断修改符号是否在上一轮的答案中,是则输出答案,否则修改

剪枝二:每次二分的长度右边界都是上一轮的答案

 1 #include<bits/stdc++.h>
2 #define int long long
3 #define MAXN 2011
4 using namespace std;
5 int n,m;
6 char a[MAXN][MAXN];
7 int sum[MAXN][MAXN];
8 int last_x,last_y,last_len;
9 int zuo_x,zuo_y;
10 int get_sum1(int x1,int y1,int x2,int y2)
11 {
12 return sum[x2][y2]+sum[x1-1][y1-1]-sum[x2][y1-1]-sum[x1-1][y2];
13 }
14 int work(int mid)
15 {
16 for(int i=1;i<=n-mid+1;++i)
17 {
18 for(int j=1;j<=m-mid+1;++j)
19 {
20 if(get_sum1(i,j,i+mid-1,j+mid-1)==0)
21 {
22 last_x=i,last_y=j;last_len=mid;
23 return 1;
24 }
25 }
26 }
27 return 0;
28 }
29 void second_divied()
30 {
31 int l=1;int r=last_len;
32 while(l+1<r)
33 {
34 int mid=(l+r)>>1;
35 if(work(mid))l=mid;
36 else r=mid;
37 }
38 if(work(r))printf("%lld\n",r);
39 else if(work(l))printf("%lld\n",l);
40 }
41 int q;int ok=0;
42 void the_yu(int x,int y)
43 {
44 for(int i=x;i<=n;++i)
45 {
46 for(int j=y;j<=m;++j)
47 {
48 sum[i][j]=sum[i-1][j]+sum[i][j-1]-sum[i-1][j-1];
49 if(a[i][j]=='-')sum[i][j]++;
50 }
51 }
52 }
53 bool pan(int x,int y)
54 {
55 if(x>=last_x&&y>=last_y&&x<=last_x+last_len-1&&y<=last_y+last_len-1)return 0;
56 return 1;
57 }
58 signed main()
59 {
60 scanf("%lld%lld%lld",&n,&m,&q);last_len=min(n,m);
61 for(int i=1;i<=n;++i)scanf("%s",a[i]+1);
62 zuo_x=0x7fffff;zuo_y=0x7ffff;
63 for(int i=1;i<=q;++i)
64 {
65 int x,y;
66 scanf("%lld%lld",&x,&y);
67 a[x][y]='-';
68 zuo_x=min(zuo_x,x);zuo_y=min(zuo_y,y);
69 if(i>1&&pan(x,y))
70 {
71 printf("%lld\n",last_len);
72 continue;
73 }
74 else
75 {
76 if(i==1)the_yu(1,1);
77 else the_yu(zuo_x,zuo_y);
78 second_divied();
79 zuo_x=0x7fffff;zuo_y=0x7fffff;
80 }
81 }
82 }

T3 chemistry

概率期望,仿佛不可做,咕了....

「模拟8.29」chinese(性质)·physics·chemistry(概率期望)的更多相关文章

  1. 「模拟赛20180406」膜树 prufer编码+概率

    题目描述 给定一个完全图,保证\(w_{u,v}=w_{v,u}\)且\(w_{u,u}=0\),等概率选取一个随机生成树,对于每一对\((u,v)\),求\(dis(u,v)\)的期望值对\(998 ...

  2. 「模拟8.13」任(liu_runda的神题,性质分析)

    考场时没有发现性质,用了个前缀和优化暴力,结果写WA了 我们发现其实联通块的个数就是点的个数-边的个数 然后我们需要维护横向上和纵向上的边的前缀和 前缀和的查询形式稍改一下 暴力 1 #include ...

  3. 2021升级版微服务教程5—通过IDEA运行多个项目实例「模拟集群」

    2021升级版SpringCloud教程从入门到实战精通「H版&alibaba&链路追踪&日志&事务&锁」 教程全目录「含视频」:https://gitee.c ...

  4. 「模拟赛20190327」 第二题 DP+决策单调性优化

    题目描述 小火车虽然很穷,但是他还是得送礼物给妹子,所以他前往了二次元寻找不需要钱的礼物. 小火车准备玩玩二次元的游戏,游戏当然是在一个二维网格中展开的,网格大小是\(n\times m\)的,某些格 ...

  5. 「模拟赛20180306」回忆树 memory LCA+KMP+AC自动机+树状数组

    题目描述 回忆树是一棵树,树边上有小写字母. 一次回忆是这样的:你想起过往,触及心底--唔,不对,我们要说题目. 这题中我们认为回忆是这样的:给定 \(2\) 个点 \(u,v\) (\(u\) 可能 ...

  6. 「模拟8.23」阴阳 DP

    对于此题的性质我们考虑DP 分四种情况 黑色块在右侧单调降,单调升 还有在左侧 另外我们这样可能会记重,所以还要将重复记过的也就是边界线是横的和竖的 然后还要将全白全黑加上 1 #include< ...

  7. 「模拟8.18」字符串(卡特兰数)·乌鸦喝水(树状数组,二分)·所驼门王的宝藏(tarjan,拓扑)

    最近好颓啊,所以啥都做不出来 简单说一下这次考试,分机房了,还分不同考卷,果然我还是留在二机房的蒟蒻, 大概也只有这样的简单题,才能勉强水个rank 3吧........ 其实不必管在哪个机房,努力便 ...

  8. 「模拟8.17」star way to heaven(并查集,最小生成树)

    80分打法 首先二分最后答案,答案即为r,可看作以每个k为圆心r为半径的圆 我们进行并查集维护,维护相交的圆的边界 最后判断是否存在圆将上下边界覆盖,如有证明不行 1 #include<iost ...

  9. 「模拟8.21」山洞(矩阵优化DP)

    暴力: 正解: 考虑循环矩阵,f[i][j]表示从i点到j点的方案数 我们发现n很小,我们预处理出n次的f[i][j] 然后在矩阵快速幂中,我们要从当前的f[i][j]*f[j][k]-->fi ...

随机推荐

  1. MFC的六大机制

    MFC的六大机制 程序的初始化过程 运行时类型识别 动态创建 永久保存 消息映射 命令传递 运行时类型识别 MFC的运行时类型识别就是在程序运行过程中判断某个对象是否属于某个类,MFC通过为需要进行运 ...

  2. [bug] Importing maven project 卡在%9不动

    参考 Importing maven project 卡在%9不动 https://blog.csdn.net/weixin_43197380/article/details/89220337

  3. https://www.jqhtml.com/30047.html strace + 命令: 这条命令十分强大,可以定位你程序到底是哪个地方出了问题

    https://www.jqhtml.com/30047.html 我的Linux手册 服务器 浏览数:72 2019-1-30 原文链接 基础安装 # CentOS sudo yum install ...

  4. cgic: CGI的C函数库-(转自COS)

    下载回源码包以后,就3个文件:cgic.c      函数库capture.c   一个很简单的CGI例子,仅仅输出两行提示文字cgictest.c  一个演示读取form表单数据的CGI例子 首先在 ...

  5. 6.5 scp:远程文件复制

    scp命令 用于在不同的主机之间复制文件,它采用SSH协议来保证复制的安全性.scp命令每次都是全量完整复制,因此效率不高,适合第一次复制时使用,增量复制建议使用rsync命令替代.     scp ...

  6. Centos7.4 file '/grub/i386-pc/normal.mod' not found,实际为/boot下所有文件丢失

    注:如果服务器特别重要,此方案慎用.如果没有其他方案解决,可以使用该方案 事件:搭建在云计算管理平台CAS上的 Centos7.4 虚拟机在一次断电后,启动虚拟机出现file '/grub/i386- ...

  7. 第六章 XaaS和IT服务标准

    从云计算(Cloud Computing)谈起 云计算是一种按使用量付费的模式,这种模式提供可用的.便捷的.按需的网络访问,进入可配置的计算资源共享池(资源包括网络,服务器,存储,应用软件,服务),这 ...

  8. Mybatis Plus 多租户架构实现(完美教程)

    一.背景介绍 多租户技术或称多重租赁技术,简称SaaS,是一种软件架构技术,是实现如何在多用户环境下(此处的多用户一般是面向企业用户)共用相同的系统或程序组件,并且可确保各用户间数据的隔离性. 简单讲 ...

  9. php反转字符串的三种方法

    (假设有字符串abcd,用php实现字符串翻转) 1.第一种php有自带的函数strrev可以轻松实现: $str = 'abcd'; //第一种自带strrev实现翻转 echo strrev($s ...

  10. python的数组