Day 1
第一次和某二中学联考,达哥出题,翻车十分惨烈
考试时上来10分钟搞定T1,看T2,没思路,二维莫队?好像和图论有点关系,有点乱,先弃坑,看T3,发现只需要处理前a个,后面都是等差数列,但是需要记录一大堆东西,手玩了一下,发现有戏,搞出来,发现只能过前两个点,后面的起点都不在a内,特判,乱搞了好长时间,最后5个样例都过了,但是时间只剩下30min左右了,觉得可能还有别的情况,但弃了,搞T2,把20分的暴力打出来基本就没时间了,急忙交了。
T2,发现20分的暴力好像能过70分。。。但是我只在q==1时才运行。QAQ……正解利用了连通块数目=点数-边数,直接二维前缀和搞定。。。。
T3发现是预处理的一个细节打挂了,还有一个等号放错了,挂了30
应该100+70+100实际却是100+20+70=190。
T1

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<cmath>
#define N 17
#define LL long long
using namespace std;
int bit[20],n;
bool vis[N][66666];
LL a[N],b[N],c[N],d[N];
LL ans,f[N][66666],g[N][66666];
int main(){
    bit[0]=1;for(int i=1;i<=17;i++)bit[i]=bit[i-1]<<1;
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
        scanf("%lld%lld%lld%lld",&a[i],&b[i],&c[i],&d[i]);
    vis[0][0]=1;
    for(int i=1;i<=n;i++){        for(int j=0;j<bit[n];j++){            if(vis[i-1][j]){                f[i][j|bit[i-1]]=f[i-1][j]+a[i];
                g[i][j|bit[i-1]]=max((LL)0,g[i-1][j]-b[i]);
                g[i][j]=g[i-1][j]+c[i];
                f[i][j]=max((LL)0,f[i-1][j]-d[i]);
                vis[i][j]=vis[i][j|bit[i-1]]=1;
            }
        }
    }
    for(int i=0;i<bit[n];i++)
        ans=max(ans,f[n][i]*g[n][i]);
    printf("%lld\n",ans);
    return 0;
}

T2

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<cmath>
#define N 2005
using namespace std;
int n,m,q;
char ch[N][N];
int a[N][N],g[N][N],h[N][N];
int qq(int a[N][N],int x,int y,int x2,int y2){return a[x2][y2]-a[x2][y-1]-a[x-1][y2]+a[x-1][y-1];
}
int query(int x,int y,int x2,int y2){return qq(a,x,y,x2,y2)-qq(g,x,y+1,x2,y2)-qq(h,x+1,y,x2,y2);
}
int main(){scanf("%d%d%d",&n,&m,&q);for(int i=1;i<=n;i++){scanf("%s",ch[i]);for(int j=1;j<=m;j++)a[i][j]=ch[i][j-1]-'0';}for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)if(a[i][j]){if(a[i][j-1])g[i][j]++;if(a[i-1][j])h[i][j]++;}for(int i=1;i<=n;i++)for(int j=1;j<=m;j++){a[i][j]+=a[i][j-1];g[i][j]+=g[i][j-1];h[i][j]+=h[i][j-1];}for(int i=1;i<=n;i++)for(int j=1;j<=m;j++){a[i][j]+=a[i-1][j];g[i][j]+=g[i-1][j];h[i][j]+=h[i-1][j];}int x,y,x2,y2;while(q--){scanf("%d%d%d%d",&x,&y,&x2,&y2);printf("%d\n",query(x,y,x2,y2));}return 0;
}

T3

#pragma GCC optimize ("O3")
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<cmath>
#define N 200005
#define int long long
using namespace std;
int nxt[N],sum[N],c[N],t[N];
int n,a,x,mod;
void add(int x){for(;x<=a;x+=(x&-x))c[x]++;}
int query(int x){int ans=0;for(;x;x-=(x&-x))ans+=c[x];return ans;
}
signed main(){scanf("%lld%lld%lld%lld",&n,&x,&a,&mod);for(int i=1,now=x,last=0,tim=0;i<=n;i++){if(now<a){nxt[last]=now+1;sum[now+1]=sum[last]+tim;t[last]=tim;last=now+1;tim=0;}else tim++;if(i==n){t[last]=tim;}now=(now+a)%mod;}int now=nxt[0],qian,hou,num=0,ans=0,ans1;int when=0,be=x;if(a<=x){while(be>=a)be-=a,when++;}now=nxt[0]; num=0; ans=0;while(now){qian=query(now);hou=num-qian;add(now);ans+=hou; ans+=sum[now];ans+=t[now]*(sum[now]-qian)-(t[now]*(t[now]-1)*num)/2;if(a<=x){if(now>be)ans-=(t[now]+1-when)*(t[now]+1-when+1)/2;else ans-=(t[now]+1-when)*(t[now]+1-when-1)/2;}now=nxt[now];num++;}printf("%lld\n",ans);return 0;
}

老子不服!

Day 2
T1 用一个有明显错误的暴力乱搞了95
正解枚举起点;
设d=x/y=p1q1...pkqk;
g=gcd(q1...qk)
最小公比就是p1q1/g...pkqk/g
还要map判重
T2 树上的概率dp 考试时特判还挂了,正解枚举重儿子,f[i][j]表示i的子树内最长链为j的概率,轻重儿子分别转移就好了。
T3 题目大意是说求去掉或添加某一条边能使原图变成一个联通的欧拉图的方案数
ans=联通的欧拉图路径×C2n
所以就是要求联通的欧拉图路径,设不一定联通的欧拉图方案数为g[i],满足联通的为f[i];
g[i]=2C2i−1为什么呢,因为我们任选出一个点作为补偿点,其余的i-1个点任意连边都可以通过这个补偿点使图满足是不一定联通的欧拉图。
f[i]=g[i]−∑i−1j=1f[j]∗g[i−j]∗Cj−1i−1
减去的为什么是不合法的呢
还是任选一个点,因为这个图不满足联通,所以这个点所在的联通块大小一定在1~i-1范围内,再从剩下的i-1个点中任选j-1个点与其组成联通块,这个块满足联通,而剩下的不一定,但这两部分间一定不联通,所以就是上式
T1

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<cmath>
#include<map>
#define N 100002
#define LL long long
using namespace std;map<LL,int> mm;int n,ans=1,f[N];
LL a[N],b[N],x,y,z;
LL gcd(LL a,LL b){return b==0?a:gcd(b,a%b);}LL tot,prime[500],tim[500],gg;
void work(LL &x){tot=0; gg=0;for(int i=2;i*i<=x;i++){if(i>1000){x=0;return;}if(x%i==0){prime[++tot]=i;tim[tot]=0;while(x%i==0){tim[tot]++;x/=i;}gg=gcd(gg,tim[tot]);}}for(int i=1;i<=tot;i++)x*=pow(prime[i],tim[i]/gg);
}bool check(LL x,LL y){LL xx=x;while(xx<y) xx*=x;return xx==y;
}LL read(){LL a=0;char ch=getchar();while(ch<'0'||ch>'9')ch=getchar();while(ch>='0'&&ch<='9'){a=a*10+(ch^48);ch=getchar();}return a;
}
int main(){scanf("%d",&n); ans=1;for(int i=1;i<=n;i++)a[i]=read();for(int i=2;i<=n;i++)if(a[i]==a[i-1])f[i]=f[i-1]+1,ans=max(ans,f[i]+1);if(ans>=64){printf("%d\n",ans);return 0;}for(int i=1,j,num;i<n;i++){x=max(a[i],a[i+1]);y=min(a[i],a[i+1]);if(x%y!=0)continue;z=x/y;   work(z);if(z<=1)continue;num=0; ans=max(ans,2);mm.clear();mm[x]=++num;mm[y]=++num;for(j=i+2;j<=n;j++){x=max(a[j],a[j-1]);y=min(a[j],a[j-1]);if(x%y!=0)break;if(!check(z,x/y))break;if(mm[a[j]])break; mm[a[j]]=++num;ans=max(ans,j-i+1);}if(j==n+1)break;}printf("%d\n",ans);return 0;
}

T2

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<iostream>
#define N 3050
#define LL long long
#define mod 1000000007
using namespace std;
int n,m;
int son[N][N],dep[N],num[N];
bool vis[N];
LL ny(LL a){LL ans=1;LL b=mod-2;while(b){if(b&1)ans=(ans*a)%mod;a=(a*a)%mod; b>>=1;}return ans;
}
LL f[N][N],s[N][N],tmp[N];
void dfs(int x){if(!num[x]){f[x][0]=s[x][0]=1;return;}for(int i=1;i<=num[x];i++){dfs(son[x][i]);dep[x]=max(dep[x],dep[son[x][i]]+1);}LL mom=ny(num[x]),S;//printf("x===========%d  %lld\n",x,mom);for(int i=1;i<=num[x];i++){memset(tmp,0,sizeof tmp);tmp[0]=1;int u=son[x][i];for(int j=1,k;j<=num[x];j++){int v=son[x][j];//printf("u===%d  v===%d\n",u,v);if(u==v){for(S=0,k=0;k<=dep[v];k++){S=(S+tmp[k])%mod;//printf("before-----%lld\n",tmp[k]);tmp[k]=((S*f[v][k]%mod+tmp[k]*s[v][k]%mod-tmp[k]*f[v][k]%mod)+mod)%mod;//printf("after------%lld\n",tmp[k]);}}else{for(S=tmp[0],k=0,tmp[0]=0;k<=dep[v];k++){S=(S+tmp[k+1])%mod;tmp[k+1]=((S*f[v][k]%mod+tmp[k+1]*s[v][k]%mod-tmp[k+1]*f[v][k]%mod)+mod)%mod;}}}for(int j=0;j<=dep[x];j++)f[x][j]=(f[x][j]+(tmp[j]*mom)%mod)%mod;}s[x][0]=f[x][0];for(int i=1;i<=dep[x];i++)s[x][i]=(s[x][i-1]+f[x][i])%mod;
}
void print(int x){LL ans=0;for(int i=0;i<=dep[x];i++)ans=(ans+(i*f[x][i])%mod)%mod;printf("%lld\n",ans);
}
int main(){scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%d",&num[i]);for(int j=1;j<=num[i];j++){scanf("%d",&son[i][j]);vis[son[i][j]]=1;}}for(int i=1;i<=n;i++)if(!vis[i]){dfs(i);print(i);//for(int j=1;j<=n;j++)print(j);return 0;}
}

T3

#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cmath>
#define N 2005
#define mod 1000000007
#define LL long long
using namespace std;
LL c[N][N],f[N],g[N],n;
LL qp(LL a,LL b){LL ans=1;while(b){if(b&1)ans=(ans*a)%mod;a=(a*a)%mod; b>>=1;}return ans;
}
int main(){scanf("%lld",&n);f[1]=g[1]=1;for(int i=0;i<=n;i++){c[i][0]=1;for(int j=1;j<=i;j++)c[i][j]=(c[i-1][j]+c[i-1][j-1])%mod;}for(int i=2;i<=n;i++){g[i]=qp(2,c[i-1][2]);for(int j=1;j<i;j++)(f[i]+=f[j]*g[i-j]%mod*c[i-1][j-1]%mod+mod)%=mod;f[i]=(g[i]-f[i]+mod)%mod;}printf("%lld\n",f[n]*c[n][2]%mod);
}

转载于:https://www.cnblogs.com/Ren-Ivan/p/7746662.html

9.25+9.27 联考相关推荐

  1. BZOJ 4872 luogu P3750 [六省联考2017]分手是祝愿

    4872: [Shoi2017]分手是祝愿 Time Limit: 20 Sec  Memory Limit: 512 MB [Submit][Status][Discuss] Description ...

  2. 河北省单招计算机类考试考英语吗,2019年河北省高职单招考试十类 和对口电子电工类、计算机类联考 专业基础考试(英语)考试大纲.doc...

    2019年河北省高职单招考试十类 和对口电子电工类.计算机类联考 专业基础考试(英语)考试大纲 本考试大纲是根据教育部2003年颁布的<普通高中英语课程标准(实验)>.教育部考试中心201 ...

  3. 「十二省联考 2019」皮配——dp

    题目 [题目描述] #### 题目背景 一年一度的综艺节目<中国好码农>又开始了.本季度,好码农由 Yazid.Zayid.小 R.大 R 四位梦想导师坐镇,他们都将组建自己的梦想战队,并 ...

  4. JZOJ 3461. 【NOIP2013模拟联考5】小麦亩产一千八(kela)

    3461. [NOIP2013模拟联考5]小麦亩产一千八(kela) (Standard IO) Time Limits: 1000 ms  Memory Limits: 262144 KB  Det ...

  5. 河北单招计算机英语,2019年河北高职单招考试十类 和对口电子电工类、计算机类联考 专业基础考试(英语)考试大纲.doc...

    2019年河北省高职单招考试十类 和对口电子电工类.计算机类联考 专业基础考试(英语)考试大纲 本考试大纲是根据教育部2003年颁布的<普通高中英语课程标准(实验)>.教育部考试中心201 ...

  6. 【计算机网络】网络层精选习题1(含联考真题)

    网络层的功能 选择题 1.网络层的主要目的是( ). A.在邻接结点间进行数据报传输 B.在邻接结点间进行数据报可靠传输 C.在任意结点间进行数据报传输 D.在任意结点间进行数据报可靠传输 2.路由器 ...

  7. 高职医学计算机考试科目一模拟试题及答案,医药卫生(临床医学类专业除外)和高职单招对口医学类联考职业技能测试考试大纲...

    以下考试类大纲节选自"联考单招七类"实施方案,仅供参考 2017年河北省普通高职单招考试七类 - 医药卫生(临床医学类专业除外)和高职单招对口医学类联考职业技能测试考试大纲 第 一 ...

  8. 2010-2020管理类联考MBA/MEM英语大作文范文模版

    2020年管理类联考MBA/MEM英语大作文范文模版 As is apparently demonstrated in the chart above, we are informed some in ...

  9. 2010 年一月联考逻辑真题

    2010 年一月联考逻辑真题 真题(2010-26)-假言命题推理规则和选言命题的矛盾 26.针对威胁人类健康的甲型 H1N1 流感,研究人员研制出了相应的疫苗,尽管这些疫苗是有效的,但某大学研究人员 ...

  10. 2020年全国硕士研究生入学统一考试管理类专业学位联考逻辑试题

    2020年一月联考逻辑真题 真题(2020-26)-翻译推理题-递推推理 26.领导干部对于各种批评意见应采取有则改之,无则加勉的态度,营造言者无罪,闻者足戒的氛围.只有这样,人们才能知无不言,言无不 ...

最新文章

  1. SFB 项目经验-28-设置-所有用户-OWA-时区-语言-跳过-时区设置)
  2. Yam Finance提案建议将YAM DAO资金库中dApp挖矿奖励的80%转移到uGAS流动性挖矿
  3. WinAPI: SetRectEmpty、IsRectEmpty
  4. 运筹优化(十七)--存储论基础及其最优化求解
  5. mt4 显示服务器时间,MQL4编程学习之MT4显示任意时间周期指标的使用方法
  6. android4.0以上,利用耳机接听键实现自动接听,部分手机失败原因+解决方法(比如华为P7)
  7. php两个手机号正则表达式_php中手机号码正则表达式代码
  8. 万字干货,Podman 保姆级中文使用教程
  9. Windows任务管理器中的内存
  10. 计算机自己创作游戏,说说自己做的数据库:我不爱玩电脑游戏,自己做数据库自己欣赏...
  11. 互联网发展阶段的三阶段是什么?从门户到搜索,到移动互联网
  12. web -- 背景图片及文字
  13. 谈一谈|如何写好毕业论文中的参考文献
  14. C#将日期转化成英文
  15. 【微信公众号发红包转账】微信公众号上手机网页接收请求,通过公众号给用户发红包 开发流程...
  16. 會懷孕的木乃伊~恐怖!! 使木乃伊懷孕的人~更加恐怖!
  17. python俄罗斯方块的消除算法_1.1.3python tkinter实现俄罗斯方块基础版-生成、移动、固定、消除...
  18. 认认真真几个高质量人工智能方向的原创公众号
  19. linux图片处理convert命令
  20. 硬盘分区失败丢失数据如何恢复

热门文章

  1. 1-9 requests模块之爬取4k高清壁纸(xpath解析)
  2. 噪音达到多少分贝就算是扰民
  3. Web--用户注册界面
  4. 解决vmware不能上网的问题
  5. 史上最全运放运算放大器知识讲解(附主流厂商)
  6. 色彩设计基础知识整理
  7. 全国计算机等级考试三级数据库技术(十)
  8. matlab plotyy legend,一幅图中画两个legend及plotyy标注问题
  9. HiKey试用体验 烧写系统至Flash之诡异事件
  10. linux网络重设,Linux ADSL拨号上网