连续不知道多少场了,都是一场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:休止的更多相关文章

  1. [考试反思]0718 NOIP模拟测试5

    最后一个是我...rank#11 rank#1和rank#2被外校大佬包揽了. 啊...考的太烂说话底气不足... 我考场上在干些什么啊!!! 20分钟“切”掉T2,又27分钟“切”掉T1 切什么切, ...

  2. csp-s模拟测试61砖块, 数字,甜圈题解

    题面:https://www.cnblogs.com/Juve/articles/11626350.html 砖块: 直接模拟即可,map统计被覆盖的次数 #include<iostream&g ...

  3. [考试反思]0814NOIP模拟测试21

    前两名是外校的240.220.kx和skyh拿到了190的[暴力打满]的好成绩. 我第5是170分,然而160分就是第19了. 在前一晚上刚刚爆炸完毕后,心态格外平稳. 想想前一天晚上的挣扎: 啊啊啊 ...

  4. [考试反思]1109csp-s模拟测试106:撞词

    (撞哈希了用了模拟测试28的词,所以这次就叫撞词吧) 蓝色的0... 蓝色的0... 都该联赛了还能CE呢... 考试结束前15分钟左右,期望得分300 然后对拍发现T2伪了写了一个能拿90分的垃圾随 ...

  5. [考试反思]0909csp-s模拟测试41:反典

    说在前面:我是反面典型!!!不要学我!!! 说在前面:向rank1某脸学习,不管是什么题都在考试反思后面稍微写一下题解. 这次是真的真的运气好... 这次知识点上还可以,但是答题策略出了问题... 幸 ...

  6. [考试反思]0729NOIP模拟测试10

    安度因:哇哦. 安度因:谢谢你. 第三个rank1不知为什么就来了.迷之二连?也不知道哪里来的rp 连续两次考试数学都占了比较大的比重,所以我非常幸运的得以发挥我的优势(也许是优势吧,反正数学里基本没 ...

  7. [考试反思]0714/0716,NOIP模拟测试3/4

    这几天时间比较紧啊(其实只是我效率有点低我在考虑要不要坐到后面去吹空调) 但是不管怎么说,考试反思还是要写的吧. 第三次考试反思没写总感觉缺了点什么,但是题都刷不完... 一进图论看他们刷题好快啊为什 ...

  8. [考试反思]1003csp-s模拟测试58:沉淀

    稳住阵脚. 还可以. 至少想拿到的分都拿到了,最后一题的确因为不会按秩合并和线段树分治而想不出来. 对拍了,暴力都拍了.挺稳的. 但是其实也有波折,险些被卡内存. 如果内存使用不连续或申请的内存全部使 ...

  9. [考试反思]0816NOIP模拟测试23

    210 210 210 170 还可以.暴力打满就rk4了? 但不管怎么说,总算是在改完题之后理直气壮的写考试反思了. T1是个dp,说水也不太水.(当然某脸只要A掉了一道题就要说那是水题) 我的思路 ...

随机推荐

  1. 【Oracle】SQL语句优化

    (1) 选择最有效率的表名顺序(只在基于规则的优化器中有效):  ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最 ...

  2. PHP获取客户端的真实IP

    REMOTE_ADDR只能获取访问者本地连接中设置的IP,如中南民族大学校园网中自己设置的10.X.XXX.XXX系列IP,而这个函数获取的是局域网网关出口的IP地址, 如果访问者使用代理服务器,将不 ...

  3. Zygote家的大儿子 —— SystemServer

    本文基于 Android 9.0 , 代码仓库地址 : android_9.0.0_r45 文中源码链接: SystemServer.java SystemServiceManager.java Sy ...

  4. mac下安装rabbitmq

    使用homebrew安装rabbitmq,命令如下: brew install rabbitmq 安装的位置如下/usr/local/Cellar/rabbitmq/3.7.18 进入到sbin目录下 ...

  5. react 首屏性能优化

    首屏优化点:1.加载包(bundle.js)文件的大小,越小,首屏渲染速度越快 (按需加载) 2.优先渲染用户直观看到的页面部分(懒加载) 技术点:react-loadable . react-laz ...

  6. 微信退款(APP和公众号一样)

    /** * 将xml转为array * @param string $xml xml字符串 * @return array 转换得到的数组 */ public function xml2array($ ...

  7. The Largest Clique UVA - 11324

    题文:https://vjudge.net/problem/UVA-11324 题解: 这个题目首先可以发现,只要是一个强连通分量,要么都选,要么都不选,将点权看成强连通分量的点数,所以这个题目就转化 ...

  8. shark恒破解笔记6-摆脱NAG

    1.打开软件后,发现是未注册,然后点击关闭按钮,会弹出窗口 我们的目的就是为了能够去掉这个弹窗. 2.对这个程序进行查壳,没有什么发现 3.载入OD里面,F9运行起来,随后切换到程序主界面点击关闭按钮 ...

  9. Android 使用appcompat_v7包以及源码注意事项

    最近学习和实践Android,无数次被AS和gradle惨痛的折磨,于是决定坚守Eclipse阵地..真是无奈之举,AS和gradle对我而言就像win10一样不讨喜. 当然Eclipse中开发and ...

  10. Python开发【第九篇】字典

    字典 字典是一种可变的容器,可以存储任意类型的数据 字典中的每个数据都是用键进行索引,而不像序列容器(str,list,tuole)可以用整数进行索引 字典中的数据没有先后顺序,字典的存储是无序的 字 ...