这次比赛有点坑。。。


【GDKOI2004】石子游戏

方法:判断奇偶性

  1. 输入n
  2. 如果n是奇数,输出 xiaoshi
  3. 如果n是偶数,输出 xiaoyong

比赛得分:30

错因:找错规律了(忘记了两个人都是聪明绝顶滴)


【GDKOI2004】汉诺塔

方法1:找规律

1.定义一个数组a 赋值为 1,2,3,3,2,1

2.输入N和M

3.定义一个变量k,初始化为1。

4.从1到N循环,输出a[ ( M mod 6K ) div K ],K每次×3。

方法2:暴力

▒​▓░▒​我░​▓不░▒​▓░会​▓░▒​打▒​▓░

比赛得分:30

一个点答案错误,剩余的点时间超限。


【GDKOI2004】城市统计

方法: BFS+前缀和

先用BFS求出每一个地方离最近的商业区的距离。

然后求个前缀和。

最后枚举每个点(i,j),算出从(i-r,j-r)到(i+r,j+r)的所有地方的距离和,并输出

注意判断边界(小心i-r,j-r小于0,或i+r,j+r大于0)

比赛得分:0

错因:没判断好边界。


【GDKOI2004】香樟树

方法: DP

比赛时我就想出正解了,可惜……细节决定成败!!!

先求出2到100000之间所有的质数,用一个数组s存着。

设 a[i] 表示第i棵树的叶子个数

设 f[i] 表示到第 i 棵树的最多树的数量。

设 g[i] 为最大的f[有 s[i] 这个质因数的树的编号]。

那么 f[i]=max (g[a[i]的质因数]) +1,最后再用f[i]来更新g[a[i]的质因数]的值。

再加上一点小优化就能AC了。

比赛得分:10

错因: 时间超限了 (%#@#$%…)


【提高组NOIP2008】双栈排序

方法:二分图染色

此题有点难。

https://www.cnblogs.com/huangzihaoal/p/11154097.html ←__←题解在这里

比赛得分:27.3


代码

第一题

#include<cstdio>
using namespace std;
int main()
{
freopen("game.in","r",stdin);
freopen("game.out","w",stdout);
int c,n;
scanf("%d",&c);
while(c--)
{
scanf("%d",&n);
if(n%2) puts("xiaoshi");
else puts("xiaoyong");
}
return 0;
}

第二题

#include<cstdio>
using namespace std;
const int a[6]={1,2,3,3,2,1};
int main()
{
freopen("hanoi.in","r",stdin);
freopen("hanoi.out","w",stdout);
int t,i,k,n,m;
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&n,&m);
k=1;
for(i=1;i<n;i++)
{
printf("%d ",a[(m%(k*6))/k]);
k=k*3;
}
printf("%d\n",a[(m%(k*6))/k]);
}
return 0;
}

第三题

#include<cstdio>
using namespace std;
#define maxlongint 0x7fffffff
int n;
bool map[151][151];
int dis[151][151],f[151][151],date[23000][2],g[151][151];
const int dx[4]={1,0,-1,0},dy[4]={0,1,0,-1};
void bfs(int x,int y)
{
int head=0,tail=1,tx,ty,xx,yy,i;
date[1][0]=x,date[1][1]=y;
while(head<tail)
{
head++;
tx=date[head][0],ty=date[head][1];
for(i=0;i<4;i++)
{
xx=tx+dx[i],yy=ty+dy[i];
if(xx>0&&yy>0&&xx<=n&&yy<=n&&dis[tx][ty]+1<dis[xx][yy])
{
tail++;
date[tail][0]=xx,date[tail][1]=yy;
dis[xx][yy]=dis[tx][ty]+1;
}
}
}
}
int main()
{
freopen("city.in","r",stdin);
freopen("city.out","w",stdout);
int i,j,k,x,y,xx,yy,tt;
scanf("%d",&tt);
while(tt--)
{
scanf("%d%d",&n,&k);
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
scanf("%d",&map[i][j]);
if(map[i][j]) dis[i][j]=0;
else dis[i][j]=maxlongint;
}
}
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++) if(map[i][j])
{
bfs(i,j);
}
}
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
f[i][j]=f[i-1][j]+f[i][j-1]-f[i-1][j-1]+dis[i][j];
}
}
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
if(i-k>0) x=i-k;
else x=1;
if(j-k>0) y=j-k;
else y=1;
if(i+k<=n) xx=i+k;
else xx=n;
if(j+k<=n) yy=j+k;
else yy=n;
g[i][j]=f[xx][yy]-f[xx][y-1]-f[x-1][yy]+f[x-1][y-1];
}
}
for(i=1;i<=n;i++)
{
for(j=1;j<n;j++)
{
printf("%d ",g[i][j]);
}
printf("%d\n",g[i][n]);
}
printf("\n");
}
return 0;
}

第四题

#include<cstdio>
#include<cmath>
using namespace std;
int num,f[100001],g[10001],sum[10001],b[7];
bool pd(int x)//判断质数
{
int i,tt=sqrt(x);
for(i=2;i<=tt;i++)
{
if(x%i==0) return 0;
}
return 1;
}
int main()
{
freopen("camphor.in","r",stdin);
freopen("camphor.out","w",stdout);
int n,i,j,ans=0,k,a;
scanf("%d",&n);
for(i=2;i<=100000;i++)
{
if(pd(i))
{
sum[++num]=i;
}
}
for(i=1;i<=n;i++)
{
scanf("%d",&a);
b[0]=0;
for(j=1;j<=num;j++)
{
if(a<sum[j]) break;
if(a%sum[j]==0)
{
b[++b[0]]=j;
if(g[j]>f[i]) f[i]=g[j];
while(a%sum[j]==0) a=a/sum[j];
}
}
f[i]=f[i]+1;
if(f[i]>ans) ans=f[i];
for(j=1;j<=b[0];j++)
{
if(g[b[j]]<f[i]) g[b[j]]=f[i];
}
}
printf("%d\n",ans);
return 0;
}

第五题

#include<cstdio>
#include<cstdlib>
using namespace std;
#define MAX 0x7fffffff
int s[1010],f[1010],c[1010],a[1010],b[1010],edge[1010][1001];
char st[5010];bool bk[1010];
void inc(int x,int y)
{
edge[x][++edge[x][0]]=y;
edge[y][++edge[y][0]]=x;
}
void build(int k)
{
if(bk[k]) return;
bk[k]=true;
if(c[k]==0) c[k]=1;
int i,j;
for(i=1;i<=edge[k][0];i++)
{
j=edge[k][i];
if(c[k]==c[j])
{
puts("0");
exit(0);
}
if(c[k]==1) c[j]=2;
else c[j]=1;
build(j);
}
}
int main()
{
freopen("twostack.in","r",stdin);
freopen("twostack.out","w",stdout);
int n,i,j,k,ans=0,next=1;
scanf("%d",&n);
f[n+1]=MAX;
for(i=1;i<=n;i++) scanf("%d",&s[i]);
for(i=n;i>0;i--)
{
if(s[i]>f[i+1]) f[i]=f[i+1];
else f[i]=s[i];
}
for(i=1;i<n;i++)
{
for(j=i+1;j<n;j++)
{
if(s[i]<s[j]&&s[i]>f[j+1])
{
inc(i,j);//连边
}
}
}
for(i=1;i<=n;i++)
{
build(i);//染色部分
}
for(i=1;i<=n;i++)
{
if(c[i]==1)
{
st[++ans]='a';
++a[0];
a[a[0]]=s[i];
}
else
{
st[++ans]='c';++b[0];
b[b[0]]=s[i];
}
while(a[a[0]]==next)
{
st[++ans]='b';
next++;a[0]--;
}
while(b[b[0]]==next)
{
if(i<n&&(a[0]==0||(c[i+1]==1&&a[a[0]]>s[i+1])))
{
i++;++a[0];
a[a[0]]=s[i];
st[++ans]='a';
}
st[++ans]='d';
next++;b[0]--;
}
while(a[a[0]]==next)
{
st[++ans]='b';
next++;a[0]--;
}
}
while(a[0]>0||b[0]>0)
{
while(a[a[0]]==next)
{
st[++ans]='b';
next++,a[0]--;
}
while(b[b[0]]==next)
{
st[++ans]='d';
next++,b[0]--;
}
}
for(i=1;i<ans;i++) printf("%c ",st[i]);
printf("%c\n",st[ans]);
return 0;
}

2017.10.28 C组比赛总结的更多相关文章

  1. 2017.10.21 C组比赛总结

    今天考得不太好,只拿了100+0+0+30=130分... [GDKOI训练]音乐节拍 考场AC了! 其实就是大水一道! 思路:二分查找 每次输入后,输出该时刻所在的区间的编号就好了. 总体难度:★★ ...

  2. 2017.9.23 C组比赛总结

    今天又回到了C组,感觉爽歪歪~分数终于是个三位数了,yes! 第一题,赛车.水!只用一个贪心就可以AC了. first,以速度为关键字小到大qsort一下... scond,枚举每一个赛车,看看它可以 ...

  3. 2017.10.28 针对Java Web应用中错误异常处理方法的运用

    针对Java Web应用中错误异常处理方法的运用 在javaweb中其异常都需要对Checked Exception之下的Exception进行继承,并且有选择地对发生的错误和异常进行处理.Java同 ...

  4. noip模拟题 2017.10.28 -kmp -Tarjan -鬼畜的优化

    题目大意 给定A串,选择A串的前lB个字符作为B串,再在B串后增加一个字符,问最长的相等的A串前缀和B串的后缀. Solution 1(KMP) 用1个奇怪的字符连接A串和B串,再用KMP求最长公共前 ...

  5. 2017.10.28 QB模拟赛 —— 下午

    题目链接 T1 按x值排序 遇到第二种牌插入 遇到第一种牌 查询<=y 的最小值 删除他 splay multiset cys大佬说 multiset就是不去重的set, #include &l ...

  6. 2017.10.28 QB模拟赛 —— 上午

    题目链接 T1 1e18 内的立方数有 1e6个 直接枚举可过 二分最优 考场用set  死慢.. #include <cstdio> int t; long long p; int ma ...

  7. 2017/10 冲刺NOIP集训记录:暁の水平线に胜利を刻むのです!

    前几次集训都没有记录每天的点滴……感觉缺失了很多反思的机会. 这次就从今天开始吧!不能懈怠,稳步前进! 2017/10/1 今天上午进行了集训的第一次考试…… 但是这次考试似乎是近几次我考得最渣的一次 ...

  8. 第16次Scrum会议(10/28)【欢迎来怼】

    一.小组信息 队名:欢迎来怼小组成员队长:田继平成员:李圆圆,葛美义,王伟东,姜珊,邵朔,冉华小组照片 二.开会信息 时间:2017/10/28 17:20~17:32,总计12min.地点:东北师范 ...

  9. 2016.9.10初中部上午NOIP普及组比赛总结

    2016.9.10初中部上午NOIP普及组比赛总结 链接:https://jzoj.net/junior/#contest/home/1340 好不爽!翻车了!不过排名差不多在中间偏上一点, 还好不是 ...

随机推荐

  1. 线性素数筛(欧拉筛)(超级好的MuBan)

    Problem:找出小于等于n的所有素数的个数. #include <bits/stdc++.h> using namespace std; const int maxn = 1e6; i ...

  2. Windows上redis下载与安装

    一.redis是什么 非关系型内存数据库,以key-value的形式将数据储存在内存中.Mysql是关系型数据库,数据是保存在硬盘中 二.redis下载安装 1.要安装Redis,首先要获取安装包. ...

  3. Codeforces 785 D.Anton and School - 2(组合数处理)

    Codeforces 785 D.Anton and School - 2 题目大意:从一串由"(",")"组成的字符串中,找出有多少个子序列满足:序列长度为偶 ...

  4. selenium.common.exceptions.StaleElementReferenceException: Message: stale element reference: element is not attached to the page document

    抓取网页代码后,由于是在同一个li标签下,所以使用一次性抓取,所有的a标签,然后循环做不同的操作,但是抛出找不到元素异常. def office_page(_chrome: Chrome): sn = ...

  5. Linux 搭建Mysql主从节点复制

    Linux环境 Centos 6.6 64位 准备两台服务器,搭建一主一从,实现Mysql的读写分离和数据备份 主节点 192.168.43.10 leader 从节点 192.168.43.20 d ...

  6. yum update 更新失败

    1.yum安装东西的时候,老是报:There are unfinished transactions remaining. You might consider running yum-complet ...

  7. Python - 工具:将大图切片成小图,将小图组合成大图

    训练keras时遇到了一个问题,就是内存不足,将 .fit 改成 .fit_generator以后还是放不下一张图(我的图片是8192×8192的大图==64M).于是解决方法是将大图切成小图,把小图 ...

  8. 20175214 MySort(选做)

    一.题目要求 模拟实现Linux下Sort -t : -k 2的功能. 要有伪代码,产品代码,测试代码(注意测试用例的设计) 参考 Sort的实现.提交博客链接. 二.设计思路 在命令行中输入需要的参 ...

  9. Backen-Development record 1

    单例模式 在应用这个模式时,单例对象的类必须保证只有一个实例存在. 服务进程中的其他对象再通过这个单例对象获取这些配置信息.这种方式简化了在复杂环境下的配置管理. __new__实现 用装饰器实现单例 ...

  10. 用Intellij idea搭建solr调试环境

    最近在使用solr时,配置会有一些问题,log里面打印出日志了,但是还是不知道发生这样错误的原因.于是想学习一下相关的solr源码,以下是如何搭建solr调试环境步骤. solr调试环境搭建,首先下载 ...