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. 常用注解@Controller、@Service、@Autowired

    @Controller.@Service在spring-context-5.1.10.RELEASE.jar包下,所在包如下 @Autowired在spring-beans-5.1.10.RELEAS ...

  2. docker升级后启动报错400 Client Error: Bad Request ("Unknown runtime specified docker-runc")

    宝塔面板docker升级后启动容器时报错400 Client Error: Bad Request ("Unknown runtime specified docker-runc" ...

  3. Asp.Net Core中Session使用

    web程序中,Session是一个无法避开的点. 最近新开项目,打算从开始搭建一个基础的架子,后台用户登录成功后,需要保存session. 新建的asp.net core的模板已经包含了Session ...

  4. Json模块(dumps、loads、dump、load)函数篇

    # dumps.loads函数 """json.dumps()用于将dict类型的数据转成strjson.loads()用于将str类型的数据转成dict. " ...

  5. RAID 10 配置流程

    1.在虚拟机中再添加5块硬盘: 2.fdisk -l 可以查看当前虚拟机中的磁盘情况. 3.使用mdadm命令创建RAID10,名称为”/dev/md0″. -C代表创建操作,-v显示创建过程,-a ...

  6. App上下左右滑动封装

    #coding=utf-8 from appium import webdriver from time import sleep caps = { "platformName": ...

  7. RAW网络编程

    LWIP提供了三种的可以被应用程序直接调用的接口API: (1)       低水平的,基于内核/回调函数的API(后面称 RAW API)    适用于数据量不大,没有os的MCU (2)      ...

  8. Git基本使用指南

    一.概述 1.    Git与SVN比较 目前用到最广泛的版本控制软件就是SVN和Git,那么这两者之间有什么不同之处呢? 1)     SVN(Subversion)是集中式管理的版本控制器,而Gi ...

  9. python编程系列---tcp客户端的简单实现

    实现流程如下: """ TCP客户端实现流程1. 创建一个tcp 客户端对象2. 与服务端建立连接3. 通过tcp socket 收发数据4. 关闭连接 关闭tcp &q ...

  10. 《HelloGitHub》第 43 期

    兴趣是最好的老师,HelloGitHub 就是帮你找到兴趣! 简介 分享 GitHub 上有趣.入门级的开源项目. 这是一个面向编程新手.热爱编程.对开源社区感兴趣 人群的月刊,月刊的内容包括:各种编 ...