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. linux命令的使用 以及基本docker命令及docker镜像安装

    以linux CentOS-7 64位 系统为例 查看ip  ifconfig 固定ip 输入vim /etc/sysconfig/network-scripts/ifcfg-ens3 其中vim是修 ...

  2. @JsonFormat 格式化时间 时出现时间不准确问题

    今天突然报个问题,简单来说说就是数据库某一字段的记录时间为 14点,然而展示到前台却是 6点 我腚眼一看,postman测试的数据也是6点 然而idea查出来的并不是6点 再仔细一瞅idea实体类的时 ...

  3. Redis数据结构—跳跃表

    目录 Redis数据结构-跳跃表 跳跃表产生的背景 跳跃表的结构 利用跳跃表查询有序链表 Redis跳跃表图示 Redis跳跃表数据结构 小结 Redis数据结构-跳跃表 大家好,我是白泽,最近学校有 ...

  4. Codeforces Round #692 (Div. 2, based on Technocup 2021 Elimination Round 3)

    A.In-game Chat 题目:就是从后面数连着的'('的个数是不是严格比剩下的字符多 思路:水题,直接从后往前遍历即可 代码: #include<iostream> #include ...

  5. 如何使用ghost备份系统?

    如何使用ghost备份系统? 如何使用ghost工具电脑系统备份?需要具体的详细步骤 关注者 11 被浏览 13,197 关注问题写回答 ​邀请回答 ​添加评论 ​分享 ​     1 个回答 默认排 ...

  6. Ubuntu 20.04 版本安装

    Ubuntu 20.04 版本安装 安装步骤 首先创建好Ubuntu 20.04虚拟机 等待系统检查完整性 选择语言 选择不更新,回车确定 键盘语言默认即可 网卡IP配置 设置代理服务器 设置源 自定 ...

  7. 《SystemVerilog验证-测试平台编写指南》学习 - 第3章 过程语句和子程序

    <SystemVerilog验证-测试平台编写指南>学习 - 第3章 过程语句和子程序 3.1 过程语句 3.2 任务.函数以及void函数 3.3 任务和函数概述 3.4 子程序参数 3 ...

  8. 【转载】ltp压力测试结果分析脚本

    博客园 首页 新随笔 联系 管理 订阅 随笔- 8  文章- 0  评论- 0  ltp压力测试结果分析脚本   最近工作性质发生了改变,在做操作系统方面的测试.接手的第一个任务是做ltp stres ...

  9. 9.4-6 kill & killall & pkill

    kill:终止进程 能够终止你希望停止的进程. kill 命令的参数选项及说明 -l    列出全部的信号名称 -p    指定kill命令只打印相关进程的进程号,而不发送任何信号 -s    指定要 ...

  10. VS Code 安装后的一些配置项

    说明: 个人一直使用Notepad++作为日常文本编辑器,由于之前出现的某个原因,故决定改用VS Code. •设置中文字体 • 输入快捷键 Ctrl+Shift+P • 输入 Configure D ...