NOIP2008提高组
来源:互联网 发布:php网页自动跳转代码 编辑:程序博客网 时间:2024/05/22 13:55
2008提高
A.笨小猴(模拟+素数)
B.火柴棒等式(搜索/模拟+枚举)
C.传纸条(dp)
题解见 http://blog.csdn.net/icefox_zhx/article/details/77417642
D.双栈排序(二分图判断+栈模拟)
题解见 http://blog.csdn.net/icefox_zhx/article/details/78151279
A
#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define N 105inline 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;}char s[N];int mn=200,mx=0,num[150];inline bool isprime(int x){ if(x==0||x==1) return 0; for(int i=2;i*i<=x;++i) if(x%i==0) return 0; return 1;}int main(){// freopen("a.in","r",stdin); scanf("%s",s+1); int n=strlen(s+1); for(int i=1;i<=n;++i) num[s[i]]++; for(int i='a';i<='z';++i){ if(num[i]==0) continue; mx=max(mx,num[i]);mn=min(mn,num[i]); } if(isprime(mx-mn)) printf("Lucky Word\n%d\n",mx-mn); else printf("No Answer\n0\n"); return 0;}
B
#include<cstdio>int n,a[20000]={6,2,5,5,4,5,6,3,7,6},s[20000],ans=0;int main(){ scanf("%d",&n); if(n>=13){ for(int i=10;i<=99;i++){ a[i]=a[i/10]+a[i%10]; } for(int i=100;i<=999;i++){ a[i]=a[i/100]+a[i%100/10]+a[i%10]; } for(int i=1000;i<=1998;i++){ a[i]=a[i/1000]+a[i%1000/100]+a[i%100/10]+a[i%10]; } for(int i=0;i<=999;i++){ for(int j=0;j<=999;j++){ if(a[i]+a[j]+a[i+j]==n-4) ans++; } } } printf("%d",ans); return 0;}
C
#include <bits/stdc++.h>inline 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;}inline int min(int x,int y){return x<y?x:y;}inline int max(int x,int y){return x>y?x:y;}#define N 52int f[N<<1][N][N],n,m,a[N][N];int main(){// freopen("a.in","r",stdin); m=read();n=read();m--;n--; for(int i=0;i<=m;++i) for(int j=0;j<=n;++j) a[i][j]=read(); memset(f,128,sizeof(f));f[0][0][0]=0; for(int i=1;i<=n+m;++i) for(int j=0;j<=m&&j<=i;++j) for(int k=0;k<=m&&k<=i;++k){ f[i][j][k]=max(max(f[i-1][j][k],f[i-1][j][k-1>0?k-1:0]),max(f[i-1][j-1>0?j-1:0][k],f[i-1][j-1>0?j-1:0][k-1>0?k-1:0])); f[i][j][k]+=a[j][i-j]; if(j!=k) f[i][j][k]+=a[k][i-k]; } printf("%d\n",f[n+m][m][m]); return 0; }
D
#include <bits/stdc++.h>using namespace std;#define N 1010#define ll long long#define inf 0x3f3f3f3finline 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,a[N],mn[N],h[N],num=0,col[N],s1[N],s2[N],top1=0,top2=0;struct edge{ int to,next;}data[N*N<<1];inline void add(int x,int y){ data[++num].to=y;data[num].next=h[x];h[x]=num; data[++num].to=x;data[num].next=h[y];h[y]=num;}bool dfs(int x){//二分图染色 for(int i=h[x];i;i=data[i].next){ int y=data[i].to;if(col[y]==col[x]) return 0; if(col[y]!=-1) continue; col[y]=col[x]^1;if(!dfs(y)) return 0; }return 1;}int main(){// freopen("a.in","r",stdin); n=read();for(int i=1;i<=n;++i) a[i]=read();mn[n+1]=inf; for(int i=n;i>=1;--i) mn[i]=min(a[i],mn[i+1]); for(int i=1;i<=n;++i) for(int j=i+1;j<=n;++j)//i,j一定不同栈 if(a[i]<a[j]&&mn[j+1]<a[i]) add(i,j); memset(col,-1,sizeof(col)); for(int i=1;i<=n;++i) if(col[i]==-1){//没染过色,优先进第一个栈 col[i]=0;if(!dfs(i)){puts("0");return 0;}; }int now=1; for(int i=1;i<=n;++i){//模拟输出 if(col[i]){printf("c ");s2[++top2]=a[i];} else{printf("a ");s1[++top1]=a[i];} while(s1[top1]==now||s2[top2]==now){ if(s1[top1]==now){putchar('b');--top1;} else {putchar('d');--top2;} if(now!=n) putchar(' ');now++; } }return 0;}
阅读全文
0 0
- NOIP2008提高组
- 【提高组NOIP2008】笨小猴
- NOIP2008提高组(前三题) -SilverN
- 笨小猴(NOIP2008)提高组
- NOIP2008提高组 传纸条
- 【提高组NOIP2008】传纸条
- NOIP2008 提高组 C - 传纸条
- NOIP2008全省提高组获奖名单
- NOIP2008 提高组 复赛 word 笨小猴
- 【提高组NOIP2008】火柴棒等式
- noip2008提高组——火柴棒等式
- 【2016.1.9】【日常考试】NOIP2008提高组 深度解析&总结
- 【NOIP2008提高组T3】传纸条-双线程动态规划
- 【NOIP2008提高组T4】双栈排序-二分图染色
- 火柴棒等式(洛谷 1149 && NOIp2008 提高组 T2 )
- 洛谷 P1006 传纸条(NOIP2008提高组第三题)
- 【提高组NOIP2008】双栈排序 (twostack.pas/c/cpp)
- 【枚举】Vijos P1496 火柴棒等式 【NOIP2008提高组第二题】
- Hibernate快速入门案例——手动修改和删除记录
- 第一个小小程序
- 线程池异步回掉的简单例子
- CocosCreator
- C语言中常用const声明常量有什么好处呢?(get了吗?)
- NOIP2008提高组
- 2017开学训练第十二周周中总结
- java基础8:properties集合,序列化,打印流,commons-IO,对应案例
- Canvas和svg的区别
- 信息熵是什么
- 02-设置文件类型的扩展名显示
- JDK线程池源码分析
- 第16节:scala使用implicit进行的隐式转换
- 2017.11.16第十二周周中总结