acm未出现的子串

q5664889 2009-08-04 06:08:52
http://acm.nuaa.edu.cn/problemdetail.do?&method=showdetail&id=1510
这是题目
#include <string.h>
#include <stdio.h>
int main()
{
int n,q,t;
int a[100000],c[9]={0,0,0,0,0,0,0,0,0},i,j;
scanf("%d" "%d",&n,&q);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(i=0;i<n;i++)
{
for(j=0;j<q;j++)
{
if(a[i]==j+1) c[j]++;
}
}


for(j=0;j<q-1;j++)
{
if(c[j]<c[j+1])
{
t=c[j+1];
c[j+1]=c[j];
c[j]=t;
}
}

printf("%d",c[q-1]+1);
}


这是我的代码
我在本地用CFree能通过,但在网上就显示wrong answer at test 1,大家帮我看看哪里出了问题
...全文
106 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
baihacker 2009-08-04
  • 打赏
  • 举报
回复

你可以用下面的代码AC
#include <iostream>
#include <cstring>
using namespace std;

int data[100005];

int main()
{
int n, q;
while (scanf("%d%d", &n, &q) == 2)
{
int ans = 1, dest = (1<<(q+1))-2;
for (int i = 0; i < n; ++i) scanf("%d", data+i);
for (int curr = 0;;)
{
int flag = 0;
while (curr < n && flag != dest) flag |= 1 << data[curr++];
if (flag != dest) break;
++ans;
}
printf("%d\n", ans);
}
return 0;
}

解释来源:http://blog.sina.com.cn/s/blog_4d90595a01000b45.html
这个题看上去很难啊,因为原来广搜+哈希不能用了,一是因为它的子串不是相连的,二是数据量大,当q是9时,最多用哈希存十位数就超内存了,既然这样我们就直接放弃那种做法(因为不能用,只能放弃嘛!!)



现在我要说的办法是惊天地泣鬼神的超强做法,我当时没证明就用了,结果居然对了,那就算对了



当第1位到第m1位有1到q的所有数时,一定就能凑出第一位的所有数,再从第m1+1位开始到m2位为止如果在能找到1到q的所有数,那么,两位的所有数就又能找出了,在开始找,一直找到最后为止


数学问题: 1.精度计算——大数阶乘 2.精度计算——乘法(大数乘小数) 3.精度计算——乘法(大数乘大数) 4.精度计算——加法 5.精度计算——减法 6.任意进制转换 7.最大公约数、最小公倍数 8.组合序列 9.快速傅立叶变换(FFT) 10.Ronberg算法计算积分 11.行列式计算 12.求排列组合数 13.求某一天星期几 字符串处理: 1.字符串替换 2.字符串查找 3.字符串截取 4.LCS—最大公共子串长度 5.LCS-生成最大公共子串 6.数字转化为字符 计算几何: 1.叉乘法求任意多边形面积 2.求三角形面积 3.两矢量间角度 4.两点距离(2D、3D) 5.射向法判断点是否在多边形内部 6.判断点是否在线段上 7.判断两线段是否相交 8.判断线段与直线是否相交 9.点到线段最短距离 10.求两直线的交点 11.判断一个封闭图形是凹集还是凸集 12.Graham扫描法寻找凸包 13.求两条线段的交点 数论: 1.x的二进制长度 2.返回x的二进制表示中从低到高的第i位 3.模取幂运算 4.求解模线性方程 5.求解模线性方程组(中国余数定理) 6.筛法素数产生器 7.判断一个数是否素数 8.求子距阵最大和 9.求一个数每一位之和 10.质因数分解 11.高斯消元法解线性方程组 图论: 1.Prim算法求最小生成树 2.Dijkstra算法求单源最短路径 3.Bellman-ford算法求单源最短路径 4.Floyd算法求每对节点间最短路径 5.解欧拉图 排序/查找: 1.快速排序 2.希尔排序 3.选择法排序 4.二分查找 高精度运算专题: 1.本专题公共函数说明 2.高精度比较 3.高精度加法 4.高精度减法 5.高精度乘10 6.高精度乘单精度 7.高精度乘高精度 8.高精度除单精度 9.高精度除高精度

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧