【模拟试题2】【20150520】

模拟+堆+链表+贪心+最小生成树+倍增LCA



这次题目简单了许多……然而蒟蒻还是傻逼了……sad连NOIP题都做这么烂……没救了

File

  给定一些目录&文件,让按给定格式输出一个文件列表

  其实直接排序一下,就可以满足字典序的条件了,顺便还能使在同一目录下的文件顺序连在一起,然后模拟一下“dfs”的过程即可:

  记录当前在第几层目录,以及当前的目录名称,然后比较一下,如果相同则输出“|    | ....  |",否则更新当前目录,并清空后面的目录。

  唉我就是没加清空后面目录的操作,导致【root/A/abc 和root/B/abc】的两个abc当成是一个目录了……挂了20分……sad。。。

  其实蛮好写的……

 1 //20150520 file
 2 #include<string>
 3 #include<cstdio>
 4 #include<cstring>
 5 #include<cstdlib>
 6 #include<iostream>
 7 #include<algorithm>
 8 #define rep(i,n) for(int i=0;i<n;++i)
 9 #define F(i,j,n) for(int i=j;i<=n;++i)
10 #define D(i,j,n) for(int i=j;i>=n;--i)
11 #define pb push_back
12 using namespace std;
13 typedef long long LL;
14 inline int getint(){
15     int r=1,v=0; char ch=getchar();
16     for(;!isdigit(ch);ch=getchar()) if (ch==‘-‘) r=-1;
17     for(; isdigit(ch);ch=getchar()) v=v*10-‘0‘+ch;
18     return r*v;
19 }
20 const int N=55;
21 /*******************template********************/
22 int n;
23 string s[N],r[N];
24 int st[N];
25 int main(){
26 #ifndef ONLINE_JUDGE
27     freopen("file.in","r",stdin);
28     freopen("file.out","w",stdout);
29 #endif
30     n=getint();
31     F(i,1,n) cin >> s[i];
32     sort(s+1,s+n+1);
33     int ceng=0,now=0,ed=0;
34     string ss="";
35     rep(i,s[1].length()){
36         if (s[1][i]==‘/‘) break;
37         ss+=s[1][i];
38     }
39     cout <<ss<<endl;
40     ceng=0; r[0]=ss;
41
42     F(i,1,n){
43         string tmp="";
44         int now=0;
45         rep(j,s[i].length()){
46             if (j==s[i].length()-1) tmp+=s[i][j];
47             if (s[i][j]==‘/‘||j==s[i].length()-1){
48                 if (tmp!=r[now]){
49                     F(i,1,now-1) printf("|    ");
50                     printf("|----");
51                     cout <<tmp<<endl;
52                     r[now]=tmp;
53                     F(k,now+1,6) r[k]="";
54                 }
55                 tmp=""; now++;
56             }else tmp+=s[i][j];
57         }
58     }
59     return 0;
60 }

Compile

  其实这题跟【BZOJ】【1150】【CTSC2007】数据备份Backup 差不多……反而还更简单了……因为这题不用特判首尾

  一开始还在想DP,然而N和M是同阶的……那么……根据自古流传的规律:DP不行想贪心!

  然后就很流畅地写出来了……

  上次写1150的时候还是看的lyd神犇的代码= =这次居然自己yy出来了,好评

 1 //20150520 compile
 2 #include<queue>
 3 #include<cstdio>
 4 #include<cstring>
 5 #include<cstdlib>
 6 #include<iostream>
 7 #include<algorithm>
 8 #define rep(i,n) for(int i=0;i<n;++i)
 9 #define F(i,j,n) for(int i=j;i<=n;++i)
10 #define D(i,j,n) for(int i=j;i>=n;--i)
11 #define pb push_back
12 using namespace std;
13 typedef long long LL;
14 inline int getint(){
15     int r=1,v=0; char ch=getchar();
16     for(;!isdigit(ch);ch=getchar()) if (ch==‘-‘) r=-1;
17     for(; isdigit(ch);ch=getchar()) v=v*10-‘0‘+ch;
18     return r*v;
19 }
20 const int N=200010;
21 /*******************template********************/
22 int n,m,a[N<<2],pre[N<<2],nex[N<<2],cnt;
23 bool vis[N<<2];
24 typedef pair<int,int> pii;
25 priority_queue<pii>Q;
26 #define mp make_pair
27 #define X first
28 #define Y second
29 int main(){
30 #ifndef ONLINE_JUDGE
31     freopen("compile.in","r",stdin);
32     freopen("compile.out","w",stdout);
33 #endif
34     n=getint(); m=getint();
35     if (m>(n>>1)){puts("Error!"); return 0;}
36     F(i,1,n){
37         a[i]=getint();
38         pre[i]=i-1;
39         nex[i]=i+1;
40         vis[i]=0;
41         Q.push(mp(a[i],i));
42     }
43     pre[1]=n; nex[n]=1;
44     int ans=0,num=0;
45     while(num<m && !Q.empty()){
46         int x=Q.top().Y; Q.pop();
47         if (vis[x]||vis[pre[x]]||vis[nex[x]]) continue;
48 //        printf("%d %d \n",x,a[x]);
49         num++;
50         ans+=a[x];
51         vis[x]=vis[pre[x]]=vis[nex[x]]=1;
52 /*        a[x]=a[pre[x]]+a[nex[x]]-a[x];
53         vis[x]=0;
54         pre[x]=pre[pre[x]]; nex[pre[x]]=x;
55         nex[x]=nex[nex[x]]; pre[nex[x]]=x;
56         Q.push(mp(a[x],x));
57 */        a[++n]=a[pre[x]]+a[nex[x]]-a[x];
58         pre[n]=pre[pre[x]]; nex[pre[n]]=n;
59         nex[n]=nex[nex[x]]; pre[nex[n]]=n;
60         Q.push(mp(a[n],n));
61 //        F(i,1,n) printf("%d ",pre[i]); puts("");
62 //        F(i,1,n) printf("%d ",nex[i]); puts("");
63 //        F(i,1,n) printf("%d ",vis[i]); puts("");
64     }
65     if (num<m) puts("Error!");
66     else printf("%d\n",ans);
67     return 0;
68 }

Cost

  尼玛这样的题要不要考这么多遍,前两天tyvj刚做……又来……

 1 //20150520 cost
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<cstdlib>
 5 #include<iostream>
 6 #include<algorithm>
 7 #define rep(i,n) for(int i=0;i<n;++i)
 8 #define F(i,j,n) for(int i=j;i<=n;++i)
 9 #define D(i,j,n) for(int i=j;i>=n;--i)
10 #define pb push_back
11 using namespace std;
12 typedef long long LL;
13 inline int getint(){
14     int r=1,v=0; char ch=getchar();
15     for(;!isdigit(ch);ch=getchar()) if (ch==‘-‘) r=-1;
16     for(; isdigit(ch);ch=getchar()) v=v*10-‘0‘+ch;
17     return r*v;
18 }
19 const int N=10010,M=1e5+10;
20 /*******************template********************/
21 int to[N<<1],next[N<<1],len[N<<1],head[N],cnt;
22 void add(int x,int y,int z){
23     to[++cnt]=y; next[cnt]=head[x]; head[x]=cnt; len[cnt]=z;
24     to[++cnt]=x; next[cnt]=head[y]; head[y]=cnt; len[cnt]=z;
25 }
26 struct edge{
27     int x,y,z;
28     inline bool operator < (const edge &b)const {return z<b.z;}
29 }E[M];
30 int n,m,fa[N][20],mx[N][20],dep[N],f[N],size[N];
31 int Find(int x){return f[x]==x ? x : Find(f[x]);}
32
33 void dfs(int x){
34     F(i,1,14)
35         if (dep[x]>=(1<<i)){
36             fa[x][i]=fa[fa[x][i-1]][i-1];
37             mx[x][i]=max(mx[fa[x][i-1]][i-1],mx[x][i-1]);
38         }
39         else break;
40     for(int i=head[x];i;i=next[i])
41         if (to[i]!=fa[x][0]){
42             dep[to[i]]=dep[x]+1;
43             fa[to[i]][0]=x;
44             mx[to[i]][0]=len[i];
45             dfs(to[i]);
46         }
47 }
48 int query(int x,int y){
49     int ans=0;
50     if (dep[x]<dep[y]) swap(x,y);
51     int t=dep[x]-dep[y];
52     F(i,0,14) if (t&(1<<i)){
53         ans=max(ans,mx[x][i]);
54         x=fa[x][i];
55     }
56     D(i,14,0) if (fa[x][i]!=fa[y][i]){
57         ans=max(ans,max(mx[x][i],mx[y][i]));
58         x=fa[x][i]; y=fa[y][i];
59     }
60     if (x!=y)
61         ans=max(ans,max(mx[x][0],mx[y][0]));
62     return ans;
63 }
64 int main(){
65 #ifndef ONLINE_JUDGE
66     freopen("cost.in","r",stdin);
67     freopen("cost.out","w",stdout);
68 #endif
69     n=getint(); m=getint();
70     F(i,1,m){
71         int x=getint(),y=getint(),z=getint();
72         E[i]=(edge){x,y,z};
73     }
74     sort(E+1,E+m+1);
75     F(i,1,n) f[i]=i,size[i]=1;
76     F(i,1,m){
77         int f1=Find(E[i].x),f2=Find(E[i].y);
78         if (f1!=f2){
79             if (size[f1]>size[f2]) swap(f1,f2);
80             f[f1]=f2;
81             size[f2]+=size[f1];
82             add(E[i].x,E[i].y,E[i].z);
83         }
84     }
85     dfs(1);
86     int T=getint();
87     while(T--){
88         int x=getint(),y=getint();
89         printf("%d\n",query(x,y));
90     }
91     return 0;
92 }

时间: 2024-08-14 01:55:43

【模拟试题2】【20150520】的相关文章

模拟试题B

模拟试题B 一.单项选择题(2′*8 =16′) 1.灰度等级为256级,分辨率为2048*1024的显示器,至少需要的帧缓存容量为( ) A)512KB B)1MB C)2MB D)3MB 2.在多形边面片的数量非常大的情况下,哪一个消隐算法速度最快? ( ) A)深度缓存算法(Z-Buffer) B)光线跟踪算法 C)画家算法 D)不确定 3.双线性光强插值法(Gouraud Shading)存在哪些问题?( ) A)光照强度在数值上不连续 B)生成多面体真实感图形效果差 C)生成曲面体真实

模拟试题C

模拟试题C 一.单项选择题(2′*14 =28′) 1.双线性法向插值法(Phong Shading)的优点是( ) A)法向计算精确 B)高光域准确 C)对光源和视点没有限制 D)速度较快 2.用编码裁剪法裁剪二维线段时,判断下列直线段采用哪种处理方法.假设直线段两个端点M.N的编码为1000和1001(按TBRL顺序)( ) A)直接舍弃 B)直接保留 C)对MN再分割求交 D)不能判断 3.下面哪个不是齐次坐标的特点( ) A)用n+1维向量表示一个n维向量 B)将图形的变换统一为图形的坐

计算机职称考试题库Internet模块操作练习模拟试题(一)

1.请为当前计算机添加连接到com1口的标准56000 bps调制解调器设备,要求不检测当前连接设备. 当前界面:开始à控制面板 方法一: 打开[电话和调整解调器选项]à[调整解调器]选项卡à[添加]按钮à选中[不要检测我的调制解调器设备……]à下一步à型号:标准 56000 bps 调制解调器à下一步à选定的端口:com1à下一步à完成 方法二: 添加新硬件à下一步à选择[是,我已经连接了此硬件]à下一步à列表拉到最后选择[添加新的硬件设备]à下一步à选择[安装我手动从列表选择的硬件(高级)]

2014年软考-信息技术处理员-模拟试题及答案【第一章】

51CTO学院,在软考备考季特别整理了"2014年软考信息技术处理员模拟试题及答案[汇总篇]",帮助各位学院顺利过关!更多软件水平考试辅导及试题,请关注51CTO学院-软考分类吧! 查看汇总:2014年软考-信息技术处理员-模拟试题及答案[汇总篇]  ●在计算机内部用来传送.存储.加工处理的数据或指令都是以____(1)_B___形式进行的. A. 十进制码 B.二进制码 C.八进制码 D.十六进制码 ●如果一个存储单元能存放一个字节,那么一个32KB的存储器共有____(2)_B__

2014年软考-信息技术处理员-模拟试题及答案【第二章】

51CTO学院,在软考备考季特别整理了"2014年软考信息技术处理员模拟试题及答案[汇总篇]",帮助各位学院顺利过关!更多软件水平考试辅导及试题,请关注51CTO学院-软考分类吧! 查看汇总:2014年软考-信息技术处理员-模拟试题及答案[汇总篇]  ●计算机网络的主要目标是实现____(16 )__C__. A.数据处理 B.文献检索 C.资源共享和信息传输 D.信息传输 ●Internet上,访问Web网站时用的工具是浏览器.下列____(17 )_A___就是目前常用的Web浏览

2014年软考-信息技术处理员-模拟试题及答案【第三章】

51CTO学院,在软考备考季特别整理了"2014年软考信息技术处理员模拟试题及答案[汇总篇]",帮助各位学院顺利过关!更多软件水平考试辅导及试题,请关注51CTO学院-软考分类吧! 查看汇总:2014年软考-信息技术处理员-模拟试题及答案[汇总篇]  ●备注视图中的注释信息在文稿演示时____(31)__B__. A.会显示 B.不会显示 C.显示一部分 D.显示标题 ●Access 2000关系数据库是____(32)_D___的集合. A.数据 B.数据库对象 C.表 D.关系 ●

2014年软考-信息技术处理员-模拟试题及答案【第四章】

51CTO学院,在软考备考季特别整理了"2014年软考信息技术处理员模拟试题及答案[汇总篇]",帮助各位学院顺利过关!更多软件水平考试辅导及试题,请关注51CTO学院-软考分类吧! 查看汇总:2014年软考-信息技术处理员-模拟试题及答案[汇总篇]  ●Office家族为用户提供了各种不同类型的模板.扩展名为.mdz的模板是____(41)D____中的模板. A.Word B.Excel C.PowerPoint D.Access ●在Excel中,选取一行单元格的方法是____(4

2014年软考-信息技术处理员-模拟试题及答案【第五章】

51CTO学院,在软考备考季特别整理了"2014年软考信息技术处理员模拟试题及答案[汇总篇]",帮助各位学院顺利过关!更多软件水平考试辅导及试题,请关注51CTO学院-软考分类吧! 查看汇总:2014年软考-信息技术处理员-模拟试题及答案[汇总篇]  ●管理信息系统科学的3要素是系统的观点.数学的方法和____(51)A____. A.计算机的应用 B.计算机科学 C.计算机理论 D.计算机方法 ●知识产权可分为:____(52)___C_两类. A.农业产权和著作权 C.工业产权和著

2014年软考-信息技术处理员-模拟试题及答案【第六章】

51CTO学院,在软考备考季特别整理了"2014年软考信息技术处理员模拟试题及答案[汇总篇]",帮助各位学院顺利过关!更多软件水平考试辅导及试题,请关注51CTO学院-软考分类吧! 查看汇总:2014年软考-信息技术处理员-模拟试题及答案[汇总篇]  ●Access数据库的类型是____(61)_C___. A.层次数据库 B.网状数据库 C.关系数据库 D.面向对象数据库 ●在Word文档操作中,经常利用____(62)_C___操作过程相互配合,用以将一段文本内容移到另一处. A.

2014年软考-信息技术处理员-模拟试题及答案【第七章】

51CTO学院,在软考备考季特别整理了"2014年软考信息技术处理员模拟试题及答案[汇总篇]",帮助各位学院顺利过关!更多软件水平考试辅导及试题,请关注51CTO学院-软考分类吧! 查看汇总:2014年软考-信息技术处理员-模拟试题及答案[汇总篇]  ●办公自动化(OA)是计算机的一项应用,按计算机应用的分类,它属于____(1)D____. A.科学计算 B.辅助设计 C.实时控制 D.信息处理 ●下列关于软件的叙述中,错误的是____(2)A____. A.计算机软件系统由程序和相