连续不知道多少场了,都是一场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. Python3 学习笔记之 变量/字符串/if/while/逻辑运算符/模块引用

    变量/if/while/逻辑运算符/模块引用: 变量: 使用变量前必须先赋值. 大小写区分. Python创建字符串,在字符串两边可以加上单引号或者双引号. 打印单引号或双引号,使用转移\ 使用\进行 ...

  2. 【Java】登录验证码

    Html: <input id="verifyCode" name="verifyCode" type="text" value=&q ...

  3. Nginx简单介绍以及linux下使用Nginx进行负载均衡的搭建

    1.Nginx简介 Nginx是一款高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器.由俄罗斯的程序设计师Igor Sysoev所开发,官方测试nginx能够支支撑5 ...

  4. 算法学习之剑指offer(十二)

    一 题目描述 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径.路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子.如果一条路径经过了矩 ...

  5. nm 命令能够显示目标文件中重载函数的名字改变(C++)

    #include <stdio.h> #include <iostream> using std::cout; using std::endl; //这里的两个不同的add函数 ...

  6. python常用算法(5)——树,二叉树与AVL树

    1,树 树是一种非常重要的非线性数据结构,直观的看,它是数据元素(在树中称为节点)按分支关系组织起来的结构,很像自然界中树那样.树结构在客观世界中广泛存在,如人类社会的族谱和各种社会组织机构都可用树形 ...

  7. python犯傻之题目解答思路比较与反思

    1.题目: 企业发放的奖金根据利润提成.利润(I)低于或等于10万元时,奖金可提10%: 利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%: 20万 ...

  8. PHP array_pop

    1.函数的作用:删除数组的最后一个元素并返回 2.函数的参数: @params array &$array 3.注意点: 每次调用之后,重置指针 4.例子: <?php $product ...

  9. 后台模板引擎ejs与前台模板引擎artTemplate的简单介绍

    动态网页是指前端页面当中的数据内容来源于后台数据库,前端的html代码会随着后台数据的变化而变化,是动态生成的.制作动态网页有两种方式,一种方式是在后台拿到前端的html模板,利用后台模板引擎(如ej ...

  10. [Luogu2455] [SDOI2006]线性方程组

    题目描述 已知n元线性一次方程组. 其中:n<=50, 系数是[b][color=red]整数<=100(有负数),bi的值都是整数且<300(有负数)(特别感谢U14968 mmq ...