[NOIP模拟测试32]反思+题解
又考挂了QAQ 总rank直接滑出前20
晚上考试脑子还算比较清醒,可惜都用来xjb乱想错误思路了。
T1一眼推柿子,然而并没有头绪所以先码了个暴力。然后……
一个垃圾暴力我调了1h,大概解决了两位数个sb错误之后终于调出来了。本来觉得考了这么多场代码能力长了不少,暴搜什么的一边过样例应该没问题的。可能这次写的时候比较急躁?抑或是学了几天文化课码力大减?反正浪费这么多时间是很不应该的。
暴力尽量一遍打对,它不配你在调试上花时间。
然后写了个打表程序去看T2。因为T1只打了个暴力所以A掉T2的想法十分强烈,想了各种奇奇怪怪的方法(甚至想到了正解的时光倒流),但要么是复杂度不优,要么打到一半把自己否了,又不得不删了重想。就这么删了码码了删浪费了很多时间,感觉像是回到了一开始没怎么考过试的时候。
码之前一定要保证思路基本是正确的,条件允许的话应该先手玩几组样例。
这样大概过了一个半小时,忽然发现自己连最sb的暴力都没打,慌忙码了一个二维前缀和结果死也调不出来,后来发现是自己二维前缀和查询的柿子打错了,赶紧手推了一下过了样例。
二维前缀和查询$(i,j)$到$(x,y)$的权值和:$ans=sum(x,y)-sum(i-1,y)-sum(x,j-1)-sum(i-1,j-1)$。简单的东西一定要记清楚,确保自己考场能不浪费一秒钟。
最后不剩多少时间了,T1交了个表,T2感觉q=1的点不一定能跑过去于是卡了卡常,看了一会T3发现期望题好像不能骗分就弃掉了。然后大概检查了一下好像没有问题,于是就无奈地闲坐着心里mmp。
结束之后发现T1看错数据范围打表打少了扔掉20,T3有20分是白痴暴搜没打。
最后一定要再看一眼题啊QAQ
发现T1的柿子好像挺简单的,要是一开始打完T2的暴力就回来想正解的话应该能推出来。T2没有我想的那么水,感觉自己分析难度能力基本没有啊ccc。
$Solution:$
A.Chinese
解题关键在于理解$\sum i\times f[i]$的含义,所有方案中炼字个数之和。
考虑$[1,k]$每个数对答案的贡献,当方格$(x,y)$填$i (i \in [1,k])$且$i$是炼字时,它对答案的贡献(产生的方案数)是$(i-1)^{n-1}(i-1)^{m-1}k^{nm-n-m+1}$。
那么最后的答案就是$nm \times \sum \limits _{i=1}^{k} (i-1)^{n-1} (i-1)^{m-1} k^{nm-n-m+1}$
#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
typedef long long ll;
const ll mod=1e9+7;
ll n,m,k,ans;
ll qpow(ll a,ll b)
{
ll res=1;
while(b)
{
if(b&1)res=res*a%mod;
a=a*a%mod;
b>>=1;
}
return res;
}
int main()
{
scanf("%lld%lld%lld",&n,&m,&k);
for(ll i=1;i<=k;i++)
ans+=(qpow(i-1,n-1)*qpow(i-1,m-1)%mod*qpow(k,n*m-n-m+1)%mod),ans%=mod;
ans=ans*n%mod*m%mod;
cout<<ans<<endl;
return 0;
}
B.physics
没打正解A掉的(捂脸)。
统计一下负电子的二维前缀和,对于每次询问,修改的话直接暴力更新前缀和,查询之前先看一下更改的位置在不在之前记录下来的最大正方形里,如果不在就直接输出上次的结果,否则二分答案得到新的最大正方形以及答案。
二分答案合法性判断就看能不能找到边长为目前check值的正方形,这个直接用二维前缀和$O(1)$验证即可。
复杂度O(可过)。主要是因为这题数据不好造所以这玩意跑的飞快QAQ。
#include<cstdio>
#include<iostream>
#include<cstring>
#include<cmath>
#define re register
using namespace std;
const int N=1e3+55;
inline int read()
{
int x=0,f=1;char ch=getchar();
while(!isdigit(ch)){if(ch=='-')f=-1;ch=getchar();}
while(isdigit(ch))x=x*10+ch-'0',ch=getchar();
return x*f;
}
int a[N][N],sum[N][N];
int n,m,q,K;
int nowx,nowy;
inline bool check(int k)
{
for(re int i=1;i+k-1<=n;i++)
for(re int j=1;j+k-1<=m;j++)
if(sum[i+k-1][j+k-1]-sum[i-1][j+k-1]-sum[i+k-1][j-1]+sum[i-1][j-1]==0)
{
nowx=i,nowy=j;
return 1;
} return 0;
}
inline void update(int x,int y)
{
for(re int i=x;i<=n;i++)
for(re int j=y;j<=m;j++)
sum[i][j]++;
}
inline void binary_ans()
{
int l=0,r=K;
while(l<=r)
{
int mid=l+r>>1;
if(check(mid))l=mid+1,K=mid;
else r=mid-1;
}
}
inline bool in(int x,int y,int len,int xx,int yy)
{
if(xx<x||xx>x+len-1||yy<y||yy>y+len-1)return 0;
return 1;
}
int main()
{
//freopen("physics3.in","r",stdin);
n=read();m=read();q=read();
char s[1005];
for(re int i=1;i<=n;i++)
{
scanf("%s",s+1);
for(re int j=1;j<=m;j++)
{
if(s[j]=='+')a[i][j]=1;
else if(s[j]=='-')
a[i][j]=2;
sum[i][j]=sum[i-1][j]+sum[i][j-1]-sum[i-1][j-1]+(a[i][j]==2);
}
}
K=min(n,m);
binary_ans();
while(q--)
{
int x=read(),y=read();
a[x][y]=2;
update(x,y);
if(in(nowx,nowy,K,x,y))
binary_ans();
printf("%d\n",K);
}
return 0;
}
[NOIP模拟测试32]反思+题解的更多相关文章
- [NOIP模拟测试37]反思+题解
一定要分析清楚复杂度再打!!!窝再也不要花2h20min用暴力对拍暴力啦!!! 雨露均沾(滑稽),尽量避免孤注一掷.先把暴力分拿全再回来刚正解. 即使剩下的时间不多了也优先考虑认真读题+打暴力而非乱搞 ...
- [NOIP模拟测试34]反思+题解
不要陷入思维定势,如果长时间没有突破就要考虑更改大方向. 不要把简单问题复杂化. 做完的题就先放下,不管能拿多少分.不能过一段时间就回来调一下. $Solutions:$ A.次芝麻 因为$n+m$始 ...
- 2019.8.1 NOIP模拟测试11 反思总结
延迟了一天来补一个反思总结 急匆匆赶回来考试,我们这边大家的状态都稍微有一点差,不过最后的成绩总体来看好像还不错XD 其实这次拿分的大都是暴力[?],除了某些专注于某道题的人以及远程爆踩我们的某学车神 ...
- 2019.7.29 NOIP模拟测试10 反思总结【T2补全】
这次意外考得不错…但是并没有太多厉害的地方,因为我只是打满了暴力[还没去推T3] 第一题折腾了一个小时,看了看时间先去写第二题了.第二题尝试了半天还是只写了三十分的暴力,然后看到第三题是期望,本能排斥 ...
- 2019.8.14 NOIP模拟测试21 反思总结
模拟测试20的还没改完先咕着 各种细节问题=错失190pts T1大约三分钟搞出了式子,迅速码完,T2写了一半的时候怕最后被卡评测滚去交了,然后右端点没有初始化为n…但是这样还有80pts,而我后来还 ...
- 2019.8.9 NOIP模拟测试15 反思总结
日常爆炸,考得一次比一次差XD 可能还是被身体拖慢了学习的进度吧,虽然按理来说没有影响.大家听的我也听过,大家学的我也没有缺勤多少次. 那么果然还是能力问题吗……? 虽然不愿意承认,但显然就是这样.对 ...
- 2019.8.3 NOIP模拟测试12 反思总结【P3938 斐波那契,P3939 数颜色,P3940 分组】
[题解在下面] 早上5:50,Gekoo同学来到机房并表态:“打暴力,打暴力就对了,打出来我就赢了.” 我:深以为然. (这是个伏笔) 据说hzoi的人还差两次考试[现在是一次了]就要重新分配机房,不 ...
- 2019.8.12 NOIP模拟测试18 反思总结
写个博客总是符合要求的对吧 回来以后第一次悄悄参加考试,昨天全程围观… 然后喜提爆炸120分wwwwwwwww T1用了全机房最慢的写法,导致改掉死循环T掉的一个点以后还是死活过不了最后一个点.T2全 ...
- 2019.8.10 NOIP模拟测试16 反思总结【基本更新完毕忽视咕咕咕】
一如既往先放代码,我还没开始改… 改完T1滚过来了,先把T1T2的题解写了[颓博客啊] 今天下午就要走了,没想到还有送行的饯别礼,真是欣喜万分[并没有] 早上刚码完前面的总结,带着不怎么有希望的心情开 ...
随机推荐
- Toposort(拓扑排序)dfs递归模板
最近刷了几题拓扑排序的题,记录一下拓扑排序 在有向图中,并且按照一定的规则(题目所给的规则)排序.如果图中出现了有向环的话就无法排序了. int gap[maxn][maxn];//记录下有向边 in ...
- xshell链接linux出现SSH服务器拒绝了密码 的解决方案
参考文章:https://blog.csdn.net/weixin_38554662/article/details/80589852 但是需要注意的是,ssh_config文件本来是没有权限修改的, ...
- 结构体和typedef
在C语言中,可以使用结构体(Struct)来存放一组不同类型的数据.结构体的定义形式为: struct 结构体名{ 结构体所包含的变量或数组}; 结构体是一种集合,它里面包含了多个变量或数组,它 ...
- Map:template
ylbtech-Map-Amap|Baidu: 1.返回顶部 2.返回顶部 3.返回顶部 4.返回顶部 5.返回顶部 6.返回顶部 7.返回顶部 8.返回顶部 9. ...
- 怎样使用haskell编写应用程序
参考:http://stackoverflow.com/a/9153617 http://www.haskell.org/haskellwiki/How_to_write_a_Haskell_prog ...
- HDU 1205 吃糖果 (鸽巢原理)
题目链接:HDU 1205 Problem Description HOHO,终于从Speakless手上赢走了所有的糖果,是Gardon吃糖果时有个特殊的癖好,就是不喜欢将一样的糖果放在一起吃,喜欢 ...
- leetcode.排序.347前k个高频元素-Java
1. 具体题目 给定一个非空的整数数组,返回其中出现频率前 k 高的元素. 示例 1: 输入: nums = [1,1,1,2,2,3], k = 2 输出: [1,2] 示例 2: 输入: nums ...
- ZR-19CSP-S赛前冲刺
ZR-19CSP-S赛前冲刺 1 ZR-19CSP-S赛前冲刺 2 ZR-19CSP-S赛前冲刺 3 ZR-19CSP-S赛前冲刺 4 ZR-19CSP-S赛前冲刺 5 ZR-19CSP-S赛前冲刺 ...
- 43.Word Break(看字符串是否由词典中的单词组成)
Level: Medium 题目描述: Given a non-empty string s and a dictionary wordDict containing a list of non- ...
- 错误提示:Wrong Local header signature: 0xE011CFD0
导入Excel时出现错误,错误提示:Wrong Local header signature: 0xE011CFD0,这个是excel的扩展名问题,.xlsx 应该XSSFWorkbook work ...