最近考试渐渐多起来了,考试总结肯定是有必要的了…

总述

总的来说考的确实不够理想…
第一题花了我太多的时间,主要的原因是调试时间太长了。[顺带说一个笑话,我在复制样例的时候不小心把页码给复制上去了,然后调试了整整一个多小时(我以为那东西是我输出的调试信息),百思不得其解…]。
然后T2,T3就没什么时间做了…
T2最开始看以为是道签到题,直接跑mmm次最短路就做完了,然后写完之后才发现自己写了个10分暴力[顺带吐槽一下这套题为什么暴力分这么少…]。
然后发现满分做法也不难,只用保留最短路径树上的边跑最短路就可以了,写到一半就差点被翻转边的操作给逼疯了[链式前向星存图做类似边翻转查值之类的操作的时候真的很不方便…]。
后来终于放弃了了链式前向星,直接用二维数组重新写,不得不说写起来舒服多了:)
然后写着写着发现自己把自己的暴力给改没了:)
为了保命只好又着急地把暴力给补上。
这时候就只剩下40min了。
无奈之下只好看看T3有没有什么有趣的部分分。
以为自己可以打出一个O(n3)O(n^3)O(n3)的dp算法,结果半天都没什么思路…
最后20min O(nm)O(nm)O(nm) 10分暴力dp走人…
等到最后上交题目的时候才发现T2有重边…心态爆炸…

最终得分:100+0+10100+0+10100+0+10。
改题的时候还发现T2数组也开小了

莲花灯(lamp)

线段树分治+线性基

这个月刚学的线段树分治,还是做了5-6道题目了。但是实际考试中还是很不熟练。
原题目显然就是在要求我们动态加入删除线性基中的某些元素然后做询问。
我们知道线性基本身是没有可删除性的,但是我们可以考虑使用像并查集一样的保存之前的版本以实现可回退化。
于是我们就直接模仿线段树分治维护并查集的方法维护线性基就可以了。

#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<stack>
#include<vector>
#include<queue>
#include<bitset>
#include<map>
using namespace std;#define LL long long
#define DB double
#define MOD 1000000007
#define Pr pair<int,int>
#define X first
#define Y second
#define MAXN 100000
#define eps 1e-10
#define INF 1000000000
#define inf 100000000000000000LL
#define mem(x,p) memset(x,p,sizeof(x))LL read(){LL x=0,F=1;char c=getchar();while(c<'0'||c>'9'){if(c=='-')F=-1;c=getchar();}while(c>='0'&&c<='9'){x=(x<<3)+(x<<1)+c-'0';c=getchar();}return x*F;
}
int add(int a,int b){return (a+b>=MOD)?a+b-MOD:a+b;}
int dec(int a,int b){return (a-b<0)?a-b+MOD:a-b;}
int mul(int a,int b){return 1LL*a*b%MOD;}
int fst_pow(int a,int b){int res=1;while(b){if(b&1)res=mul(res,a);a=mul(a,a);b>>=1;}return res;
}
int inv(int a){return fst_pow(a,MOD-2);}int n,m,k;char s[MAXN+5];
LL ans[MAXN+5],Q[MAXN+5];
map<LL,int> dic;
struct node{int L,R;LL num;
};LL Cg(){LL res=0;for(int i=0;i<n;i++)if(s[i]-'0')res|=1LL<<(n-i-1);return res;
}
struct Base{LL d[34];void init(){mem(d,0);}void Insert(LL x){for(int i=n-1;i>=0;i--)if(x&(1LL<<i)){if(d[i])x^=d[i];else {d[i]=x;return ;}}}int Query(LL x){x=(1LL<<n)-1-x;for(int i=n-1;i>=0;i--)if(x&(1LL<<i)){if(!d[i])return 0;x^=d[i];}return 1;}
}D[20];struct Seg_tree{vector<LL> G[(MAXN<<1)+5];#define mid ((l+r)>>1)#define gid(l,r) ((l+r)|(l!=r))void Insert(int l,int r,node d){if(d.L>r||l>d.R)return ;int x=gid(l,r);if(d.L<=l&&d.R>=r){G[x].push_back(d.num);return ;}Insert(l,mid,d),Insert(mid+1,r,d);}void solve(int l,int r,int d){D[d]=D[d-1];int x=gid(l,r);for(int i=0;i<G[x].size();i++)D[d].Insert(G[x][i]);if(l==r){ans[l]=D[d].Query(Q[l]);return ;}solve(l,mid,d+1),solve(mid+1,r,d+1);}
}T;int main(){freopen("lamp.in","r",stdin);freopen("lamp.out","w",stdout);n=read(),m=read(),k=read();scanf("%s",s);Q[0]=Cg();for(int i=1;i<=m;i++){scanf("%s",s);dic[Cg()]=0;}for(int i=1;i<=k;i++){int opt=read();scanf("%s",s);LL num=Cg();Q[i]=Q[i-1];cerr<<if(opt){if(dic.count(num)){T.Insert(0,k,(node){dic[num],i-1,num});dic.erase(num);}else dic[num]=i;}else Q[i]=num;}map<LL,int>::iterator it;for(it=dic.begin();it!=dic.end();it++)T.Insert(0,k,(node){it->Y,k,it->X});T.solve(0,k,1);for(int i=0;i<=k;i++)printf("%s\n",ans[i]?"YES":"NO");
}

风穿巷(lane)

最短路径树

这题其实是一道很简单很模板的题目,但是因为各种各样的细节还有绑点成为了一道坑人的毒瘤题。

玲珑塔(tower)

拉格朗日插值

简单但是想不到的题目…可能是类似的题目做少了吧…
做法很简单,所以贴篇题解就跑了:)

/*Lower_Rating*/
/*probaility*/
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<stack>
#include<vector>
#include<queue>
#include<bitset>
#include<map>
using namespace std;#define LL long long
#define DB double
#define MOD 998244353
#define Pr pair<LL,int>
#define X first
#define Y second
#define MAXN 4000
#define MAXM 50000
#define eps 1e-10
#define INF 1000000000000
#define mem(x,p) memset(x,p,sizeof(x))LL read(){LL x=0,F=1;char c=getchar();while(c<'0'||c>'9'){if(c=='-')F=-1;c=getchar();}while(c>='0'&&c<='9'){x=(x<<3)+(x<<1)+c-'0';c=getchar();}return x*F;
}
int add(int a,int b){return (a+b>=MOD)?a+b-MOD:a+b;}
int dec(int a,int b){return (a-b<0)?a-b+MOD:a-b;}
int mul(int a,int b){return 1LL*a*b%MOD;}int n,x[MAXN+5];LL m,c[MAXN+5];
int dp[MAXN+5][MAXN+5],ans,siz[MAXN+5],D,inv[MAXN+5];
vector<int> G[MAXN+5];
void dfs1(int x){siz[x]=1;for(int i=0;i<G[x].size();i++){int v=G[x][i];dfs1(v);siz[x]+=siz[v];}
}
void dfs2(int x){int res,sum=0;for(int i=0;i<G[x].size();i++){int v=G[x][i];dfs2(v);}for(int j=1;j<=D;j++){res=1;for(int i=0;i<G[x].size();i++){int v=G[x][i];res=mul(res,dp[v][j]);}sum=add(sum,res);dp[x][j]=sum;}
}
int main()
{freopen("tower.in","r",stdin);freopen("tower.out","w",stdout);n=read(),m=read();inv[0]=inv[1]=1;for(int i=2;i<=n;i++)inv[i]=mul(dec(MOD,MOD/i),inv[MOD%i]);for(int i=1;i<=n;i++){x[i]=read(),c[i]=read();if(x[i])G[x[i]].push_back(i);}ans=1;for(int i=1;i<=n;i++)if(c[i]){dfs1(i),D=siz[i]+1,dfs2(i);int X0=(m-c[i]+1)%MOD,res=0;for(int j=1;j<=D;j++){int Y=dp[i][j];for(int k=1;k<=D;k++)if(j>k)Y=mul(Y,mul(dec(X0,k),inv[j-k]));else if(j<k)Y=mul(Y,mul(dec(X0,k),MOD-inv[k-j]));res=add(res,Y);}ans=mul(ans,res);}printf("%d",ans);
}

[赛后总结]2020.2.29考试总结相关推荐

  1. 2021年安全员-B证(山东省-2020版)考试试卷及安全员-B证(山东省-2020版)复审考试

    题库来源:安全生产模拟考试一点通公众号小程序 安全员-B证(山东省-2020版)考试试卷是安全生产模拟考试一点通总题库中随机出的一套安全员-B证(山东省-2020版)复审考试,在公众号安全生产模拟考试 ...

  2. 2020年电力电缆考试技巧及电力电缆作业考试题库

    题库来源:安全生产模拟考试一点通公众号小程序 2020年电力电缆考试技巧及电力电缆作业考试题库,包含电力电缆考试技巧答案和解析及电力电缆作业考试题库练习.由安全生产模拟考试一点通公众号结合国家电力电缆 ...

  3. 2021年安全员-C证(山东省-2020版)考试试卷及安全员-C证(山东省-2020版)操作证考试

    题库来源:安全生产模拟考试一点通公众号小程序 安全员-C证(山东省-2020版)考试试卷是安全生产模拟考试一点通总题库中随机出的一套安全员-C证(山东省-2020版)操作证考试,在公众号安全生产模拟考 ...

  4. 2020低压电工考试及低压电工复审模拟考试

    题库来源:安全生产模拟考试一点通公众号小程序 2020低压电工考试及低压电工复审模拟考试,包含低压电工考试答案解析及低压电工复审模拟考试练习.由安全生产模拟考试一点通公众号结合国家低压电工考试最新大纲 ...

  5. 2020年电气试验考试技巧及电气试验模拟试题

    题库来源:安全生产模拟考试一点通公众号小程序 2020年电气试验考试技巧及电气试验模拟试题,包含电气试验考试技巧答案和解析及电气试验模拟试题练习.由安全生产模拟考试一点通公众号结合国家电气试验考试最新 ...

  6. 2020液化石油气瓶充装考试试题及液化石油气瓶充装操作证考试

    题库来源:安全生产模拟考试一点通公众号小程序 2020液化石油气瓶充装考试试题及液化石油气瓶充装操作证考试,包含液化石油气瓶充装考试试题答案解析及液化石油气瓶充装操作证考试练习.由安全生产模拟考试一点 ...

  7. 2020高压电工考试及高压电工模拟考试题

    题库来源:安全生产模拟考试一点通公众号小程序 2020高压电工考试及高压电工模拟考试题,包含高压电工考试答案解析及高压电工模拟考试题练习.由安全生产模拟考试一点通公众号结合国家高压电工考试最新大纲及高 ...

  8. 2020年电力电缆考试试卷及电力电缆模拟考试题库

    题库来源:安全生产模拟考试一点通公众号小程序 2020年电力电缆考试试卷及电力电缆模拟考试题库,包含电力电缆考试试卷答案和解析及电力电缆模拟考试题库练习.由安全生产模拟考试一点通公众号结合国家电力电缆 ...

  9. 2020高压电工考试试题及高压电工考试软件

    题库来源:安全生产模拟考试一点通公众号小程序 2020高压电工考试试题及高压电工考试软件,包含高压电工考试试题答案解析及高压电工考试软件练习.由安全生产模拟考试一点通公众号结合国家高压电工考试最新大纲 ...

最新文章

  1. GERBER文件格式简介
  2. 5分钟学会开发浏览器扩展
  3. audio 小程序 放大_码code | 小程序新能力释放,人人都能拥有对话机器人
  4. 误删/usr/bin/python2.7解决方案
  5. PyTorch 1.0 中文文档:torch.nn.functional
  6. iOS中的UIView的基本属性1
  7. 如何使用Jmeter对WebSocket进行压力测试
  8. dentry path_lookat dput
  9. ubuntu Mac 上ssh保持会话连接
  10. android 图片处理器-包括反转、浮雕、锐化、轮廓提取功能
  11. Linux 上的NetworkManager示例
  12. 三星固态Dell版的960g的sm863a硬盘
  13. Ubuntu中ls之后文件的颜色含义
  14. QQ游戏大厅产品体验报告
  15. openwrt 启动盘制作 linux,U盘启动OpenWRT教程,OpenWRT从U盘启动
  16. docker 安装Mysql并设置自启动
  17. 新浪云生成互联网页面及域名
  18. 小白学编程(CSS):跳动的文字
  19. (附源码)springboot奖助学金评审系统 毕业设计 031035
  20. Activity启动过程详解(Android P)

热门文章

  1. Python 的列表方法 append 和 extend 有什么区别?
  2. CCL MYCCL Multiccl定位的原理
  3. IT项目管理——项目范围(附带案例,案例为本人项目,并非传统案例)
  4. 某中学要对学校运动会进行计算机管理,学校田径运动会管理系统1计算机毕业设计(论文).docx...
  5. 华为成沃达丰全球供应商 突破西欧电信市场
  6. 沙漏c++、python、java、c题解
  7. docker-compose配置mongodb系统日志
  8. Three.js 模型加载及加载简单动画
  9. 全球与中国儿童服饰市场现状及未来发展趋势(2022)
  10. ArchLinux + gnome40 美化