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. 【Java基础】让编码不再让你困惑

    目录 1. ASCII编码 2. Unicode编码 3. UTF-8编码 4. UTF8.UTF16和UTF32之间的区别 5. GBK.GB2312和GB18030之间的区别 6. Java中的编 ...

  2. Django学习之文件上传

    就这么六步! 一.settings配置文件中配置 MEDIA_URL = '/media/' MEDIA_ROOT = os.path.join(BASE_DIR, 'medias').replace ...

  3. python编程基础之三十八

    正则表达式:正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符.及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑. 需要引入内置模块r ...

  4. 【NOIP2013】花匠

    Description 花匠栋栋种了一排花,每株花都有自己的高度.花儿越长越大,也越来越挤.栋栋决定把这排中的一部分花移走,将剩下的留在原地,使得剩下的花能有空间长大,同时,栋栋希望剩下的花排列得比较 ...

  5. python常用算法学习(4)——数据结构

    数据结构简介 1,数据结构 数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成.简单来说,数据结构就是设计数据以何种方式组织并存贮在计算机中.比如:列表,集合与字 ...

  6. MySQL视图的优缺点以及如何创建视图

    视图,虚拟表,从一个表或多个表中导出来的表,作用和真实表一样,包含一系列带有行和列的数据 视图中,用户可以使用SELECT语句查询数据,也可以使用INSERT,UPDATE,DELETE修改记录,视图 ...

  7. 支撑微博亿级社交平台,小白也能玩转Redis集群(原理篇)

    Redis作为一款性能优异的内存数据库,支撑着微博亿级社交平台,也成为很多互联网公司的标配.这里将以Redis Cluster集群为核心,基于最新的Redis5版本,从原理再到实战,玩转Redis集群 ...

  8. Fiddle弱网测试

    1.打开Fiddler,Rules->Performance->勾选 Simulate Modem Speeds,勾选之后访问网站会发现网络慢了很多: 接下来给大家解释一下这些个都是什么意 ...

  9. 零基础转行web前端,要学习多久?需要掌握些什么?

    web前端开发技术人才越来越吃香,而且web前端领域划分越来越细,对技术的需求越来越高,想学习web前端的人也是越来越多.那么,如何学习web前端知识?从哪开始?转型成为web前端工程师需要学些什么? ...

  10. jquery的返回顶端的功能实现

    页面很长的时候,读到最下面,需要返回顶端,则在页面最下面布局一个返回顶部的图标很有用. 具体功能是,jquey控制,向下滚动出现返回顶部图片,若滚动返回顶部或点回顶部,则图标消失. 实现效果如下图: