T1会正解。爆int了,代码里一大堆long long但是有一个地方落了。-70分。

离考试结束还有19秒的时候发现手模样例爆负数了,没来得及改。

T2没想。打暴力了。然而实际很好想。。。早读5分钟就想出来了。可是考场上没好好想。。。

T3打的是正解,不知道哪错了,爆零。

关键经验:考场上如果不会MLE的话,#define int long long很稳!!!

要根据部分分一步一步想思路,不要嫌弃部分分少,因为它可能就是正解的钥匙。

单单这一场考试,总排名直接滚蛋到第9左右。

如果目标还高于省一的话,没有再失手任何一次的机会了。

细致。坚持。稳重。

T1:A

不难。记得开long long就行。

加和乘,那么最后一定可以表示为$ T=S×x+a*y $的形式,其中x是b的整次幂。

接下来把y表示为b进制,把每一位求和即为最优决策。

 #include<cstdio>
long long min(long long a,long long b){return a<b?a:b;}
long long S,T,a,m,ans=1e18,mt;
int main(){
scanf("%lld%lld%lld%lld",&S,&T,&a,&m);
if((T-S)%a==)ans=(T-S)/a;
while(S<T/m){
mt++;S*=m;
if((T-S)%a)continue;
long long et=mt,tms=(T-S)/a;
for(int i=;i<=mt;++i)et+=tms%m,tms/=m;
ans=min(ans,et+tms);
}
printf("%lld\n",ans);
}

思路积累:

  • long long
  • 出题人数据极其毒瘤

T2:B

好题。

和正解不一样,代码量与代码性能很好,但是代价是思维量很大。

我们可以把p质因数分解,得到$p=p_1^{t_1} \times p_2^{t_2} \times ... \times p_u^{t_u}$

然后我们对于u个相同但是p为$p_i^{t_i}$的子问题求解。

思想类似与CRT,根据乘法计数原理,答案相乘即为最后答案。

我们对于两个子问题,其中的每个方案都对应着一个序列,序列每个数都不超过$p_i^{t_i}$。

那么每次合并两个序列时,我们能唯一确定最后对于p的序列,类似与CRT思想,是一一对应的。

现在考虑子问题。

我们有性质,当gcd(a,p)==gcd(b,p)时,得到a和b的方案数相等。

那么,因为我们现在在考虑对于$p_i^{t_i}$的子问题,所以gcd一定是$p_i$的整次幂,或者0。

设dp[i][j][k]表示对于第i种质因子,已经选了j个数,目前是gcd是k-1次(如果k=0表示已经乘成了0)

考虑转移,0的情况特判,不然在模$p_i^{t_i}$的意义下次数是单调不减的。

0次可以转移到$0~{t_i}$次,1次可以转移到$1~{t_i}$次...

考虑转移的系数是多少。以${p_i==2,k==2}$为例。

0次可以转移到0次及以上的所有数,转移1份。

1次可以转移到1次及以上,转移目标少了一半,故转移的份数加倍.

而1次的数的数量恰好是0次的数的数量的1/2,但是转移的份数又是2倍,那么总系数还是没有变化。

同理可以推广到高次,转移系数全都相同。

现在在于如何求出系数,暴力搞一下其中任意一种情况就行,可以用欧拉函数,也可以简单容斥。

至于乘完后取模得0的情况,特殊处理即可。因为如果是0了以后一定都是0,所以不会转移出去。

只要暴力处理最后一层,用全部选法减去非0选法即可。

总复杂度$O((n+m)\times \sum\limits_{i=1}^{u}t_i)$略低于O((n+m)log p)

 #include<cstdio>
#define mod 1000000007
#define int long long
int pow(int b,int t,int a=){for(;t;t>>=,b=b*b%mod)if(t&)a=a*b%mod;return a;}
int p,n,m,ps[],tms[],dp[][][],sum[][][],cp,cs[];
main(){
scanf("%lld%lld%lld",&n,&m,&p);
for(int i=;i*i<=p;++i)if(p%i==){
ps[++cp]=i;cs[cp]=;
while(p%i==)p/=i,tms[cp]++,cs[cp]*=i;
cs[cp]=cs[cp]/i*(i-);
}
if(p!=)ps[++cp]=p,cs[cp]=p-,tms[cp]=;
for(int i=;i<=cp;++i){
for(int j=;j<=tms[i];++j)dp[i][][j]=,sum[i][][j]=j;
for(int j=;j<=n;++j)for(int k=;k<=tms[i];++k)
(dp[i][j][k]+=sum[i][j-][k]*cs[i])%=mod,
sum[i][j][k]=(sum[i][j][k-]+dp[i][j][k])%mod;
dp[i][n][]=pow(cs[i]/(ps[i]-)*ps[i],n);
int al=,lim=cs[i]/(ps[i]-),x=lim*ps[i]-;
for(int k=tms[i];k;--k)(dp[i][n][]+=mod-dp[i][n][k]*(x/lim-al)%mod)%=mod,al=x/lim,lim/=ps[i];
}
for(int r=;r<=m;++r){
int q,ans=;scanf("%lld",&q);
for(int i=;i<=cp;++i){
int req=q%(cs[i]/(ps[i]-)*ps[i]),ccp=;
if(req==)goto re;
while(req%ps[i]==)ccp++,req/=ps[i];ccp++;
re: (ans*=dp[i][n][ccp])%=mod;
}
printf("%lld ",ans);
}
}

T3:C

三分函数+贪心。

三分特殊加热器的次数,费用是个单峰函数。

然后就是线段覆盖问题,依次考虑每盆植物的mxr表示能覆盖i的区间的最大右端点是mxr[i]

每盆植物还需要p次的话,那么就对[i,mxr[i]]区间都进行p次就好。

操作是区间减,单点查询,可以用差分。

 #include<cstdio>
#include<algorithm>
using namespace std;
#define int long long
int n,m,t,mxr[],w[],cf[],ans=12345678901234567ll;
int check(int mid){
int fee=mid*t,tot=;
for(int i=;i<=n;++i)cf[i]=max(w[i]-mid,0ll)-max(w[i-]-mid,0ll);
for(int i=;i<=n;++i){
tot+=cf[i];
if(tot>&&mxr[i]<i)return 12345678901234567ll;
if(tot>)fee+=tot,cf[mxr[i]+]+=tot,cf[i+]-=tot;
}
ans=min(ans,fee);
return fee;
}
main(){//freopen("1.in","r",stdin);
scanf("%lld%lld%lld",&n,&m,&t);
for(int i=;i<=n;++i)scanf("%lld",&w[i]);
for(int i=,l,r;i<=m;++i)scanf("%lld%lld",&l,&r),mxr[l]=max(mxr[l],r);
int l=,r=;
for(int i=;i<=n;++i)mxr[i]=max(mxr[i-],mxr[i]);
while(l<r-)
if(check(l+r>>)<check((l+r>>)+))r=(l+r>>)+;
else l=l+r>>;
check(l);check(l+);check(l+);
printf("%lld\n",ans);
}

思路积累:

  • 三分函数,根据含义或者打表发现单峰性质
  • 线段树
  • 贪心:线段覆盖问题,如何处理后效性
  • 差分:区间加减单点查询的优化

[考试反思]0914csp-s模拟测试43:破绽的更多相关文章

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

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

  2. [CSP模拟测试43、44]题解

    状态极差的两场.感觉现在自己的思维方式很是有问题. (但愿今天考试开始的一刻我不会看到H I J) A 考场上打了最短路+贪心,水了60. 然而正解其实比那30分贪心好想多了. 进行n次乘法后的结果一 ...

  3. csp-c模拟测试43「A·B·C」

    B 题解 $f[i][(gcd(prime[j]*prime[k]\%P,P))]=\sum\limits_{k=1}^{k<=num} f[i-1][k]*phi(\frac{P}{prime ...

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

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

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

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

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

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

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

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

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

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

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

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

随机推荐

  1. 斐波那契数列n项的值。(递归和非递归算法Golang实现)

    递归实现: func f(num int) int { if num == 1 || num == 2 { return 1 } return f(num-1) + f(num-2) } 非递归实现: ...

  2. opencv之膨胀与腐蚀

    腐蚀和膨胀 Erosion/Dilation erosion/dilation,用白话说,就是让图像亮的区域收缩和扩张. 原理 我们定义一个卷积核矩阵.这个矩阵可以是任何形状的,但通常而言,是矩形或者 ...

  3. 分库分表(6)--- SpringBoot+ShardingSphere实现分表+ 读写分离

    分库分表(6)--- ShardingSphere实现分表+ 读写分离 有关分库分表前面写了五篇博客: 1.分库分表(1) --- 理论 2.分库分表(2) --- ShardingSphere(理论 ...

  4. e课表项目第二次冲刺周期第五天

    昨天干了什么? 昨天,我们组商量了主界面的主要设计,然后我查找了相关的资料,将主界面改成了一个连接数据库,并将数据库中的数据进行显示.接着,又在网上搜了一些资料,为数据建立了一个布局,能够显示该数据的 ...

  5. unittest介绍

    unittest框架是python中一个标准的库中的一个模块,该模块包括许多的类如 test case类.test suit类.texttest runner类.texttest resuite类.t ...

  6. 内网渗透bypassuac和smb溢出

    对内网渗透需要渗透的目标主机处于跨网段和uac限制的情况做一个渗透记录 环境大致如下 拥有shell权限的win7(有uac限制,处于双网段) 和同win7同一网段下暂时无权限的靶机xp 先对有权限的 ...

  7. VBS 去除文件夹下 Excel 的公式

    注意问题 window 环境下运行, 代码 ANSI 编码格式保存. 直接放到需要转换的文件夹下,双击运行. 代码 function getfolder() getfolder=left(wscrip ...

  8. 网站开发常用Sql语句

    维护网站,经常操作数据库,使用sql语句可以达到事半功倍的效果.比如,把所有密码为空的教师初始设成id一致,sql语句比手动快万倍. 下面介绍数据库开发中经常用到的一些sql语句: 一 建库操作 1. ...

  9. caffe中batch norm源码阅读

    1. batch norm 输入batch norm层的数据为[N, C, H, W], 该层计算得到均值为C个,方差为C个,输出数据为[N, C, H, W]. <1> 形象点说,均值的 ...

  10. Google研发面试题

    今天很开心找到了一个很不错的研发面试题,很考验临时反应能力,特地拿出来和大家分享一下此题以及自己做该题的心得体会!!! 题目: 总共有12个外表都一样的金属球,其中有11个球的重量是相同的,1个球的重 ...