[NOIp复习计划]:模拟
2017-07-12 19:57
295 查看
[luogu 1087] FBI树
乱搞
[bzoj 1635][Usaco2007 Jan]Tallest Cow 最高的牛
差分数组+map
[bzoj 1028][JSOI2007]麻将
[b]乱搞
[bzoj 1088][SCOI2005]扫雷Mine
答案很小,于是乱搞。
[bzoj 1621][Usaco2008 Open]Roads Around The Farm分岔路口
不用dp,所以乱搞
乱搞
#include<cstdio> int n; char str[1<<11]; int data[1<<11]; void solve(int l,int r){ if(l==r){ if(data[r] - data[l-1])printf("I"); else printf("B"); return; } int mid = l+r>>1; solve(l,mid); solve(mid+1,r); if(data[r] - data[l-1] == 0){ putchar('B'); }else if(data[ 4000 r] - data[l-1] == r-l+1){ putchar('I'); }else{ putchar('F'); } } int main(){ scanf("%d",&n);n = 1<<n; scanf("%s",str); for(int i=1;i<=n;i++){ data[i] = data[i-1] + str[i-1]-'0'; } solve(1,n); return 0; }
[bzoj 1635][Usaco2007 Jan]Tallest Cow 最高的牛
差分数组+map
#include<cstdio> #include<map> using namespace std; map<int,map<int,int> > hs; int n,I,h,r,a,b; const int maxn = 10005; int pre_sum[maxn]; int main(){ scanf("%d%d%d%d",&n,&I,&h,&r); for(int i=1;i<=r;i++){ scanf("%d%d",&a,&b);if(a>b){a=a+b;b=a-b;a=a-b;} if(hs[a]==0){ pre_sum[a+1]--; pre_sum[b]++; hs[a][b]=1; } } int buf=0; for(int i=1;i<=n;i++){ buf += pre_sum[i]; printf("%d\n",h+buf); } return 0; }
[bzoj 1028][JSOI2007]麻将
[b]乱搞
#include<cstdio> #include<iostream> #include<cstring> using namespace std; int n,m; int d[405],f[405],ans[405]; bool check(){ bool is; for(int i=1;i<=n;i++){ if(d[i]>=2){ is=1; d[i]-=2; for(int j=1;j<=n+2;j++) f[j]=d[j]; for(int j=1;j<=n+2;j++){ if(f[j]<0){is=0;break;} f[j]%=3;f[j+1]-=f[j];f[j+2]-=f[j]; } d[i]+=2; if(is) return 1; } } return false; } int main(){ scanf("%d%d",&n,&m); int x; for(int i=1;i<=m*3+1;i++){ scanf("%d",&x); d[x]++; } bool is=0; for(int i=1;i<=n;i++){ d[i]++; if(check()){ is=1; ans[++ans[0]]=i; } d[i]--; } for(int i=1;i<=ans[0];i++){ printf("%d",ans[i]); if(i!=ans[0])printf(" "); } if(!is)printf("NO"); return 0; }
[bzoj 1088][SCOI2005]扫雷Mine
答案很小,于是乱搞。
#include<iostream> #include<cmath> #include<cstring> #include<cstdio> #include<algorithm> using namespace std; int N,a[10010],f[10010],ans=0; bool check() { for(int i=2;i<=N;i++) f[i+1]=a[i]-f[i-1]-f[i]; if(f[N+1]) return 0; return 1; } int main() { scanf("%d",&N); for(int i=1;i<=N;i++) scanf("%d",&a[i]); for(int i=0;i<=a[1];i++) { memset(f,0,sizeof(f)); f[1]=i; f[2]=a[1]-i; if(check()) ans++; } printf("%d\n",ans); }
[bzoj 1621][Usaco2008 Open]Roads Around The Farm分岔路口
不用dp,所以乱搞
#include<cstdio> typedef long long ll; ll n,k; ll solve(ll x){ if(x <= k || (x-k)&1 )return 1; return solve((x-k)>>1) + solve((x-k>>1)+k); } int main(){ scanf("%lld%lld",&n,&k); printf("%lld",solve(n)); return 0; }
相关文章推荐
- [NOIp复习计划]:二分答案
- [NOIp复习计划]:构造
- [NOIp复习计划]:图的连通
- [NOIp复习计划]:贪心
- 【模拟】【NOIP2004提高组】津津的储蓄计划
- 2017.08.19【NOIP提高组】模拟赛B组 【雅礼联考GDOI2017模拟】Zjr506的捕猫计划
- [ 冲刺NOIP2016 ] 复习计划
- 【模拟】【NOIP2004提高组】津津的储蓄计划
- 【JZOJ 4309】【NOIP2015模拟11.4】刷题计划 刷题计划
- NOIP复习计划
- JZOJ 3804. 【NOIP2014模拟8.24】小X 的AK 计划
- [置顶] NOIP 2017 复习计划
- Day 5 jzoj4309. 【NOIP2015模拟11.4】刷题计划
- NOIP复习计划
- [NOIp复习计划]:并查集
- noip2004 津津的储蓄计划 (模拟)
- [NOIp复习计划]:差分约束
- [NOIP 2014复习]第六章:数据结构
- 【阿柟的复习计划】线段树-基础刷题(回炉重造)
- JZOJ 5344. 【NOIP2017模拟9.3A组】摘果子