题目地址:点击打开链接

还是太弱。

英文太差。,,

预计要等待被虐了。。

1077

找最长的公共后缀,暴力就能够写:

#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cstring>
#include<string>
using namespace std; char a[105][1005];
int milen; void myreverse(char *s)
{
int len=strlen(s);
milen=min(len,milen);
for(int i=0; i<len/2; i++)
{
char tmp=s[i];
s[i]=s[len-1-i];
s[len-1-i]=tmp;
}
} int main()
{
int n,i,j; while(cin>>n)
{
gets(a[0]);
milen=10005; for(i=0; i<n; i++)
{
gets(a[i]);
myreverse(a[i]);
} for(i=0; i<milen; i++)
{
int flag=0;
for(j=1; j<n; j++)
{
if(a[j][i]!=a[0][i])
{
flag=1;
break;
}
}
if(flag) break;
} int p=i;
char ans[1005];
for(i=0; i<p; i++)
ans[i]=a[0][i];
ans[i]='\0';
myreverse(ans); if(p==0) puts("nai");
else printf("%s\n",ans); }
return 0;
} /*
3
Itai nyan~
Ninjin wa iyadanyan~
uhhh nyan~ 3
Itai!
Ninjinnwaiyada T_T
T_T
*/

1078:

hash散列啊,二次探測啊,单词看不懂。。

#include<cstdio>
#include<cmath>
#include<iostream>
#include<cstring>
#include<string>
using namespace std;
const int maxn=20005; int prim[maxn];
int mp[maxn];
int tmpprim[maxn]; int visi[maxn];
int ans[maxn]; void sxprim()
{
int i,j;
memset(prim,1,sizeof(prim));
prim[1]=0; for(i=2;i<maxn;i++)
{
if(prim[i])
{
for(j=i*2;j<maxn;j+=i)
prim[j]=0;
}
} int cnt=0;
for(i=maxn-1;i>=2;i--)
{
if(prim[i])
tmpprim[cnt++]=i;
} for(i=0;i<cnt-1;i++)
{
int tmp=tmpprim[i];
int k=tmpprim[i+1];
for(j=tmp;j>k;j--)
mp[j]=tmp;
} for(j=1;j<=tmpprim[cnt-1];j++)
mp[j]=tmpprim[cnt-1]; //for(i=1;i<=20;i++)
//cout<<i<<" "<<mp[i]<<endl;
} int main()
{
sxprim(); int mod,n,i; while(cin>>mod>>n)
{
mod=mp[mod]; //re-defined
memset(visi,0,sizeof(visi)); for(i=0;i<n;i++)
{
int x;
cin>>x;
int cur=x%mod;
if(!visi[cur])
{
visi[cur]=1;
ans[i]=cur;
}
else
{
int cnt=1;
int flag=0;
while(cnt<=maxn) //探測法都搞错了。。
{
int p=(cnt*cnt+cur)%mod;
if(!visi[p])
{
visi[p]=1;
ans[i]=p;
flag=1;
break;
}
cnt++;
} if(!flag)
ans[i]=-1;
}
} for(i=0;i<n;i++)
{
if(i) cout<<" ";
if(ans[i]>=0) cout<<ans[i];
else cout<<"-";
}
cout<<endl;
}
return 0;
} /*
11 8
2 2 2 2 2 2 2 2
*/

1079:

就是给你一颗树。找叶子结点,叶子结点有值,然后从根往下每一层会以r%添加。

不预处理会超时。。

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<string>
#include<algorithm>
#include<vector>
const int maxn=100005;
using namespace std; vector <int> mq[maxn];
int n;
double p,r; /*double cal(int step)
{
double ans=p;
for(int i=0; i<step; i++)
ans=ans*(r/100.0+1.0);
return ans; }*/ double tt[maxn];
void cal() //预处理之后就不会超时了,时间换空间
{
tt[0]=p;
for(int i=1;i<maxn;i++)
tt[i]=tt[i-1]*(1.0+r/100.0);
} int height[maxn];
double val[maxn]; double ans; void dfs(int cur)
{
int len=mq[cur].size();
int i;
if(len==0)
{
ans+=val[cur]*tt[height[cur]];
return;
}
else
{
for(i=0;i<len;i++)
{
int p=mq[cur][i];
height[p]=height[cur]+1;
dfs(p);
}
}
} int main()
{
int i;
while(cin>>n)
{
cin>>p>>r;
cal();
for(i=0; i<n; i++)
mq[i].clear();
height[0]=0; int x,chi;
for(i=0; i<n; i++)
{
cin>>x;
if(x)
{
while(x--)
{
cin>>chi;
mq[i].push_back(chi);
}
}
else
{
cin>>val[i];
}
} ans=0;
dfs(0);
printf("%.1f\n",ans);
}
return 0;
} /*
10 1.80 1.00
3 2 3 5
1 9
1 4
1 7
0 7
2 6 1
1 8
0 9
0 4
0 3
*/

1080:

这个最后也仅仅能拿24分/30分。有个错误。有个数据跑出来段错误。

我预计是数据是每一个学校定额有0的情况。

。不然错的没道理啊。。

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<string>
#include<algorithm>
#include<vector>
#include<set>
const int maxn=40005;
using namespace std; int n,m,k;
int peo[maxn];
//set <int> ans[maxn];
//set <int> ::iterator mq;
vector <int> ans[105]; struct node
{
int index;
int ge;
int gi;
int total;
int aim[6];
}nod[maxn]; struct nodd
{
int ge;
int gi;
}last[105]; //暂存每一个学校录取成绩最低的人。假设有同样成绩的也加进去 int cmp(node p1,node p2)
{
if(p1.total>p2.total) return 1;
else if(p1.total==p2.total&&p1.ge>p2.ge) return 1;
//else if(p1.total==p2.total&&p1.ge==p2.ge&&p1.gi>p2.gi) return 1;
return 0;
} int main()
{
int i,j;
int a[10];
while(cin>>n>>m>>k)
{
for(i=0;i<n;i++)
ans[i].clear();
for(i=0;i<m;i++)
cin>>peo[i]; for(i=0;i<n;i++)
{
cin>>nod[i].ge>>nod[i].gi;
for(j=0;j<k;j++)
cin>>nod[i].aim[j];
nod[i].total=nod[i].ge+nod[i].gi;
nod[i].index=i;
} sort(nod,nod+n,cmp);
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
a[j]=nod[i].aim[j];
for(j=0;j<m;j++)
{
if(peo[a[j]])
{
peo[a[j]]--;
ans[a[j]].push_back(nod[i].index);
if(peo[a[j]]==0)
{
last[a[j]].ge=nod[i].ge;
last[a[j]].gi=nod[i].gi;
}
break;
}
else
{
if(nod[i].ge==last[a[j]].ge&&nod[i].gi==last[a[j]].gi)
{
ans[a[j]].push_back(nod[i].index);
break;
}
}
}
} for(i=0;i<m;i++)
{
if(ans[i].size()==0) puts("");
else
{
int len=ans[i].size();
sort(ans[i].begin(),ans[i].end());
/*mq=ans[i].begin(); int flag=0;
for(;mq!=ans[i].end();mq++)
{
if(flag) cout<<" ";
else flag=1;
cout<<*mq;
}*/
for(j=0;j<len;j++)
{
if(j>0) cout<<" ";
cout<<ans[i][j];
}
cout<<endl;
}
}
}
return 0;
} /*
11 6 3
2 1 2 2 2 3
100 100 0 1 2
60 60 2 3 5
100 90 0 3 4
90 100 1 2 0
90 90 5 1 3
80 90 1 0 2
80 80 0 1 2
80 80 0 1 2
80 70 1 3 2
70 80 1 2 3
100 100 0 2 4
*/

最新文章

  1. asp.net web api添加统一异常处理
  2. 【安卓安全】ARM平台代码保护之虚拟化
  3. ruby 分析日志,提取特定记录
  4. maven的SNAPSHOT版本和正式版本不同
  5. eclipse优化与标准化记录
  6. python 返回函数
  7. ASP 中调用函数关于Call使用注意的问题
  8. 【Shell脚本学习7】Shell脚本学习指南分享
  9. 使用jQuery验证用户名是否存在,达到局部刷新的效果
  10. AMD宣布裁员7% 约710员工将失去工作
  11. POJ 3348 Cows
  12. java安装1335错误解决办法(亲测)
  13. LeetCode 650 - 2 Keys Keyboard
  14. SpringBoot+Redis环境搭建
  15. 3、js无缝滚动轮播
  16. Codeforces 830C Bamboo Partition 其他
  17. RabbitMQ与消息总线
  18. virtualenv 包管理
  19. poj 1125 谣言传播 Floyd 模板题
  20. 3、iptables扩展及使用

热门文章

  1. 在Android和iOS中集成flutter
  2. 看angualrjs源码中怎么判断所属的类型
  3. bzoj1396&amp;&amp;2865 识别子串 后缀自动机+线段树
  4. Python之多线程:Threading模块
  5. OPENCV mat类
  6. Android APK瘦身方法小结
  7. php+ajax+jquery分页并显示数据
  8. 我为什么喜欢Go语言
  9. J.U.C并发框架源码阅读(二)AbstractQueuedSynchronizer
  10. RANSAC中迭代次数的计算