NOIP模拟10.31
来源:互联网 发布:上海1943和老街知乎 编辑:程序博客网 时间:2024/06/12 20:21
2016提高D1
A.玩具谜题。(我写过的第一道正式的oi题hh)AC
B.天天爱跑步。这我哪会啊。。水了45。正解待更新
C.换教室。一觉醒来已经快结束了hh,水了24(4)分就。。太弱了
A
#include <bits/stdc++.h>using namespace std;#define ll long long#define inf 0x3f3f3f3f#define N 100010inline int read(){ int x=0,f=1;char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9') x=x*10+ch-'0',ch=getchar(); return x*f;}int n,m,a[N],ans=0;char s[N][20];int main(){// freopen("a1.in","r",stdin); n=read();m=read(); for(int i=0;i<n;++i){a[i]=read();scanf("%s",s[i]+1);} while(m--){ int op=read(),x=read(); if(a[ans]^op) ans=(ans+x)%n; else ans=(ans-x+n)%n; }printf("%s",s[ans]+1); return 0;}
B
#include <bits/stdc++.h>using namespace std;#define ll long long#define inf 0x3f3f3f3f#define N 300010inline int read(){ int x=0,f=1;char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9') x=x*10+ch-'0',ch=getchar(); return x*f;}int ans[N],n,m,a[N],dep[N],fa[N][20],h[N],num=0,Log[N];struct edge{ int to,next;}data[N<<1];void dfs(int x){ for(int i=1;i<=n;++i){ if(!fa[x][i-1]) break; fa[x][i]=fa[fa[x][i-1]][i-1]; } for(int i=h[x];i;i=data[i].next){ int y=data[i].to;if(y==fa[x][0]) continue; fa[y][0]=x;dep[y]=dep[x]+1;dfs(y); }}void dfs1(int x){ for(int i=h[x];i;i=data[i].next){ int y=data[i].to;if(y==fa[x][0]) continue; fa[y][0]=x;dep[y]=dep[x]+1;dfs1(y);ans[x]+=ans[y]; }}void solve0(){ while(m--){ int x=read(),y=read();ans[y]++; }dfs1(1); for(int i=1;i<=n;++i) if(a[i]!=dep[i]) printf("%d ",0);else printf("%d ",ans[i]);}inline int lca(int x,int y){ if(dep[x]<dep[y]) swap(x,y); int t=dep[x]-dep[y]; for(int i=Log[t];i>=0;--i) if(t&(1<<i)) x=fa[x][i]; if(x==y) return x; for(int i=Log[n];i>=0;--i) if(fa[x][i]!=fa[y][i]) x=fa[x][i],y=fa[y][i]; return fa[x][0];}int main(){// freopen("b1.in","r",stdin); n=read();m=read();Log[0]=-1; for(int i=1;i<=n;++i) Log[i]=Log[i>>1]+1; for(int i=1;i<n;++i){ int x=read(),y=read(); data[++num].to=y;data[num].next=h[x];h[x]=num; data[++num].to=x;data[num].next=h[y];h[y]=num; }for(int i=1;i<=n;++i) a[i]=read(); if(n%10==5){solve0();return 0;}dfs(1); while(m--){ int x=read(),y=read(),now=0,t=lca(x,y); while(x!=t){if(a[x]==now) ans[x]++;now++;x=fa[x][0];} if(a[t]==now) ans[t]++;now+=dep[y]-dep[t]; while(y!=t){if(a[y]==now) ans[y]++;now--;y=fa[y][0];} }for(int i=1;i<=n;++i) printf("%d ",ans[i]); return 0;}
C
#include <bits/stdc++.h>using namespace std;#define ll long long#define inf 0x3f3f3f3f#define N 2010inline int read(){ int x=0,f=1;char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9') x=x*10+ch-'0',ch=getchar(); return x*f;}int n,m,v,e,mp[310][310],c[N],d[N];double p[N],ans=0;int main(){// freopen("a.in","r",stdin); n=read();m=read();v=read();e=read(); for(int i=1;i<=n;++i) c[i]=read(); for(int i=1;i<=n;++i) d[i]=read(); for(int i=1;i<=n;++i) scanf("%lf",&p[i]);memset(mp,inf,sizeof(mp)); while(e--){ int x=read(),y=read();mp[x][y]=mp[y][x]=min(mp[x][y],read()); }for(int i=1;i<=n;++i) mp[i][i]=0; for(int k=1;k<=v;++k) for(int i=1;i<=v;++i) for(int j=1;j<=v;++j) mp[i][j]=min(mp[i][j],mp[i][k]+mp[k][j]); if(m==0) for(int i=2;i<=n;++i) ans+=mp[c[i-1]][c[i]]; printf("%.2f\n",ans); return 0;}
阅读全文
0 0
- NOIP模拟题 10.31
- NOIP模拟10.31
- NOIP模拟10.31 R2
- 10.31 NOIP模拟赛(morning)
- 10.31 NOIP模拟赛 (afternoon)
- 【NOIP模拟】 (10.31) T3 纸带
- 【NOIP模拟】 (10.31) T2 朋友
- Noip模拟
- 【NOIP模拟】20151004模拟
- 【NOIP模拟】 20151005模拟
- 【NOIP模拟】 20151006模拟
- 【NOIP模拟】 20151007模拟
- 【NOIP模拟】20151014模拟
- 【NOIP模拟】20151015模拟
- 10.30~10.31NOIP模拟赛总结
- NOIP模拟(10.31)T1 机器清洁工
- NOIP模拟(10.31)T3 纸带
- 【NOIP模拟】 (10.31) T1 机器清洁工
- HDU
- 三周第二次课 2017.10.31 usermod命令、用户密码管理、mkpasswd命令
- Android事件分发机制源码阅读
- Yoshua Bengio——《Deep Learning》学习笔记1
- 模拟计算器
- NOIP模拟10.31
- 【PHP】如何优雅的杀死PHP的死循环(常驻进程)
- IO
- CSS3选择器
- java学习第41天,栈 MAP
- SSH:利用Struts2+Hibernate4+Spring4+SQLServer框架,搭建一个前后端web网站(4)
- 判断输入学生成绩是否有效并判断等级
- 思维导图_Linux磁盘、分区、fdisk
- 1031总结