[考试反思]1005csp-s模拟测试61:休止
连续不知道多少场了,都是一场10名以内一场20以外。。。波动极大。。。还极有规律。。。
拿到这套题,看到T1大模拟无话可说。
然后考场上我觉得T2很简单。。。。然后就码了两个半小时。
T3数据水了暴力70。。。
T1:砖块
大模拟。其实也不大。。。
记录上下左右前后边界然后滚就是了
闲得慌打hash_map
#include<cstdio>
#include<iostream>
using namespace std;
#define P(a,b) make_pair(a,b)
struct hash_map{
int fir[],l[],tox[],toy[],v[],cnt;
#define mod 100003
int& operator[](pair<int,int>p){
int x=p.first,y=p.second,hsh=(x*y%mod+mod)%mod;
for(int i=fir[hsh];i;i=l[i])if(tox[i]==x&&toy[i]==y)return v[i];
l[++cnt]=fir[hsh];fir[hsh]=cnt;tox[cnt]=x;toy[cnt]=y;v[cnt]=;return v[cnt];
}
void clear(){for(int i=;i<mod;++i)fir[i]=;cnt=;}
}m;
int mxt,u,l,r,f,b;char s[];
void n_turn(){
int U=u,L=l,R=r,F=f,B=b;
u=B-F;f=B;b=B+U;
for(int i=l;i<r;++i)for(int j=f;j<b;++j){int &x=m[P(i,j)];x++,mxt=max(mxt,x);}
}
void s_turn(){
int U=u,L=l,R=r,F=f,B=b;
u=B-F;b=F;f=F-U;
for(int i=l;i<r;++i)for(int j=f;j<b;++j){int &x=m[P(i,j)];x++,mxt=max(mxt,x);}
}
void w_turn(){
int U=u,L=l,R=r,F=f,B=b;
u=R-L;r=L;l=L-U;
for(int i=l;i<r;++i)for(int j=f;j<b;++j){int &x=m[P(i,j)];x++,mxt=max(mxt,x);}
}
void e_turn(){
int U=u,L=l,R=r,F=f,B=b;
u=R-L;l=R;r=R+U;
for(int i=l;i<r;++i)for(int j=f;j<b;++j){int &x=m[P(i,j)];x++,mxt=max(mxt,x);}
}
int main(){//freopen("ex_block2.in","r",stdin);
int t;scanf("%d",&t);
while(t--){
l=,r=,f=,b=,mxt=;scanf("%d%s",&u,s);m.clear();m[P(,)]++;
for(int i=;s[i];++i)
if(s[i]=='N')n_turn();
else if(s[i]=='E')e_turn();
else if(s[i]=='W')w_turn();
else if(s[i]=='S')s_turn();
for(int i=l;i<r;++i)for(int j=f;j<b;++j)printf("%d ",i);puts("");
for(int i=l;i<r;++i)for(int j=f;j<b;++j)printf("%d ",j);puts("");
printf("%d\n",mxt);
}
}
T2:数字
比较神仙。
高精还是要打的,但是只需要读入,除2和5的倍数的低精数,模同理,以及大于号。。。
模的话直接取最低位返回就行。。。emm我是万进制的
设Ext(a,b)是b除去所有因子a后剩下的数,那么题目就是求Ext(10,n!)%10k
直觉,可以CRT。分成2和5处理。
绝大多数情况下因子2都严格比5多,所以Ext(10,n!)%2==0
现在只需要求出Ext(5,n!)%10k
那么分解1000就是8×125。对于8其因子数也很多所以最后乘逆元。
问题就变成求Ext mod125的答案了。
可以把阶乘里能整除5的和不能的分开考虑,而能被整除的部分就是Ext(5,(n/5)!),递归处理。
可以发现Ext之后阶乘操作其实是循环的,因为mod125所以每125位就循环了。
循环的部分可以快速幂处理。剩余部分可以预处理。
我知道这作为一个题解过于草率,没时间了溜了。
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
char s[];int l,k;const int mod[]={,,,},m5[]={,,,};int fac[],FAC[];
struct bigint{
int a[],ws;
void get(){
ws=(l-)/+;for(int i=;i<=;++i)a[i]=;
for(int i=;i<ws;++i)a[i]=s[l-*i]*+s[l-*i+]*+s[l-*i+]*+s[l-*i+];
for(int i=;i<=(l-)%+;++i)a[ws]=a[ws]*+s[i-];
}
void operator/=(int k){
for(int i=ws;i;--i)a[i-]+=a[i]%k*,a[i]/=k;
while(!a[ws]&&ws)ws--;
}
int operator%(int k){return a[]%k;}
bool operator>(int k){return ws>||a[]>k;}
}n,m;
int pow(int b,int t,int mod,int a=){for(;t;t>>=,b=b*b%mod)if(t&)a=a*b%mod;return a;}
int Ext(bigint n){
if(n>);else return fac[n.a[]];
int x=n%;n/=;int K=Ext(n);n/=;
return K*pow(FAC[],n%,)%*FAC[x]%;
}
void put(int x,int k){for(int i=k;i;--i)if(x%mod[i]/mod[i-]==)putchar();else break;printf("%d\n",x%mod[k]);}
int main(){//freopen("t2.in","r",stdin);freopen("t2.out","w",stdout);
fac[]=FAC[]=;for(int i=;i<=;++i){int j=i;while(j%==)j/=;fac[i]=fac[i-]*j%;FAC[i]=FAC[i-]*(i%==?:i)%;}
int ans,t,tot;scanf("%d",&t);
while(t--){
scanf("%s%d",s,&k);l=strlen(s);
for(int i=;i<l;++i)s[i]-=;
n.get();ans=Ext(n);
if(l==&&n.a[]<=){int a=;for(int i=;i<=n.a[];++i)a*=i;if(a%==)a/=;put(a,k);continue;}
m=n;tot=;
while(m.ws)m/=,(tot+=m%)%=;
ans*=pow(,tot,);ans%=;
for(int i=;i<;i+=)if(i%==ans)put(i,k);
}
}
T3:甜圈
考察的思路很不错啊。
因为不能多不能少不能乱序,所以很符合字符串的性质。
因为要区间操作,所以方便快捷的hash。
那么就变成了区间加区间乘的线段树啦!
(居然还有人不会线段树板子%%%)
#include<cstdio>
int cl[],cr[],ans;
unsigned long long hsh[],lzm[],lza[],HSH;
void build(int p,int l,int r){
cl[p]=l;cr[p]=r;lzm[p]=;
if(l==r)return;
build(p<<,l,l+r>>);build(p<<|,(l+r>>)+,r);
}
void down(int p){
hsh[p<<]*=lzm[p];hsh[p<<|]*=lzm[p];
lzm[p<<]*=lzm[p];lzm[p<<|]*=lzm[p];
lza[p<<]*=lzm[p];lza[p<<|]*=lzm[p];
hsh[p<<]+=lza[p];hsh[p<<|]+=lza[p];
lza[p<<]+=lza[p];lza[p<<|]+=lza[p];
lza[p]=;lzm[p]=;
}
void chg(int p,int l,int r,int w){
if(l<=cl[p]&&cr[p]<=r){hsh[p]=hsh[p]*+w;lza[p]*=;lzm[p]*=;lza[p]+=w;return;}
if(lza[p]||lzm[p]!=)down(p);
if(l<=cr[p<<])chg(p<<,l,r,w);
if(r>=cl[p<<|])chg(p<<|,l,r,w);
}
void ask(int p){
if(cl[p]==cr[p]){ans+=HSH==hsh[p];return;}
if(lza[p]||lzm[p]!=)down(p);
ask(p<<);ask(p<<|);
}
int main(){
int n,t,l,r,w,k;
scanf("%d%d%d",&n,&k,&t);
build(,,n);
while(t--)scanf("%d%d%d",&l,&r,&w),chg(,l,r,w);
for(int i=;i<=k;++i)HSH=HSH*+i;
ask();printf("%d\n",ans);
}
[考试反思]1005csp-s模拟测试61:休止的更多相关文章
- [考试反思]0718 NOIP模拟测试5
最后一个是我...rank#11 rank#1和rank#2被外校大佬包揽了. 啊...考的太烂说话底气不足... 我考场上在干些什么啊!!! 20分钟“切”掉T2,又27分钟“切”掉T1 切什么切, ...
- csp-s模拟测试61砖块, 数字,甜圈题解
题面:https://www.cnblogs.com/Juve/articles/11626350.html 砖块: 直接模拟即可,map统计被覆盖的次数 #include<iostream&g ...
- [考试反思]0814NOIP模拟测试21
前两名是外校的240.220.kx和skyh拿到了190的[暴力打满]的好成绩. 我第5是170分,然而160分就是第19了. 在前一晚上刚刚爆炸完毕后,心态格外平稳. 想想前一天晚上的挣扎: 啊啊啊 ...
- [考试反思]1109csp-s模拟测试106:撞词
(撞哈希了用了模拟测试28的词,所以这次就叫撞词吧) 蓝色的0... 蓝色的0... 都该联赛了还能CE呢... 考试结束前15分钟左右,期望得分300 然后对拍发现T2伪了写了一个能拿90分的垃圾随 ...
- [考试反思]0909csp-s模拟测试41:反典
说在前面:我是反面典型!!!不要学我!!! 说在前面:向rank1某脸学习,不管是什么题都在考试反思后面稍微写一下题解. 这次是真的真的运气好... 这次知识点上还可以,但是答题策略出了问题... 幸 ...
- [考试反思]0729NOIP模拟测试10
安度因:哇哦. 安度因:谢谢你. 第三个rank1不知为什么就来了.迷之二连?也不知道哪里来的rp 连续两次考试数学都占了比较大的比重,所以我非常幸运的得以发挥我的优势(也许是优势吧,反正数学里基本没 ...
- [考试反思]0714/0716,NOIP模拟测试3/4
这几天时间比较紧啊(其实只是我效率有点低我在考虑要不要坐到后面去吹空调) 但是不管怎么说,考试反思还是要写的吧. 第三次考试反思没写总感觉缺了点什么,但是题都刷不完... 一进图论看他们刷题好快啊为什 ...
- [考试反思]1003csp-s模拟测试58:沉淀
稳住阵脚. 还可以. 至少想拿到的分都拿到了,最后一题的确因为不会按秩合并和线段树分治而想不出来. 对拍了,暴力都拍了.挺稳的. 但是其实也有波折,险些被卡内存. 如果内存使用不连续或申请的内存全部使 ...
- [考试反思]0816NOIP模拟测试23
210 210 210 170 还可以.暴力打满就rk4了? 但不管怎么说,总算是在改完题之后理直气壮的写考试反思了. T1是个dp,说水也不太水.(当然某脸只要A掉了一道题就要说那是水题) 我的思路 ...
随机推荐
- [LeetCode] 704. Binary Search
Description Given a sorted (in ascending order) integer array nums of n elements and a target value, ...
- Java 2019 生态圈使用报告,这结果你赞同吗?
这是国外一机构调查了 7000 名开发者得出来的 Java 2019 年生态圈工具使用报告,主要调查了 Java 版本.开发框架.web 服务器等使用情况.虽然只有 7000 名开发者参与调查,这数目 ...
- Redis面试篇 -- Redis主从复制原理
Redis一般是用来支撑读高并发的,为了分担读压力,Redis支持主从复制.架构是主从架构,一主多从, 主负责写,并且将数据复制到其它的 slave 节点,从节点负责读. 所有的读请求全部走从 ...
- url设计规范
一. 什么是RESTful REST与技术无关,代表的是一种软件架构风格,REST是Representational State Transfer的简称,中文翻译为“表征状态转移” REST从资源的角 ...
- 【Java基础】Java开发过程中的常用工具类库
目录 Java开发过程中的常用工具类库 1. Apache Commons类库 2. Guava类库 3. Spring中的常用工具类 4. 其他工具 参考 Java开发过程中的常用工具类库 1. A ...
- 戈多编程-小谈sql语句的优化分析
在sqlserver大数据查询中,避免不了查询效率减慢,暂且抛弃硬件原因和版本原因,仅从sql语句角度分析. 一. sql 语句性能不达标,主要原因有一下几点: 1. 未建索引,检索导致全表扫描 2. ...
- Kafka 介绍
Apache Kafka是一个分布式流式平台. 流平台有三个关键的能力: 发布和订阅记录流,类似于消息队列或企业消息传递系统. 使用容错耐用的方式存储记录流. 记录产生时处理数据. Kafka主要是用 ...
- python pip源安装模块的一些常见问题
刷bugku的web时需要用python写脚本,web方面需要安装对应的模块,下面就分享一下我在安装模块时碰到的一些问题以及解决方法 首先找到pip文件所在的位置 打开cmd,cd文件位置,打开文件夹 ...
- Python3入门机器学习经典算法与应用☝☝☝
Python3入门机器学习经典算法与应用 (一个人学习或许会很枯燥,但是寻找更多志同道合的朋友一起,学习将会变得更加有意义✌✌) 使用新版python3语言和流行的scikit-learn框架,算法与 ...
- JS中作用域和作用域链
1.执行环境(execution context) 执行环境定义了变量和函数有权访问的其他数据,决定了他们各自的行为.每个执行环境都有与之对应的变量对象(variable object),保存着该环境 ...