hdu 1216 Assistance Required
2012-11-07 13:04
274 查看
简单的模拟,用数组更简洁:
#include<stdio.h>
#define Max 40005
int n,num[3000];
struct point{
int x;
int next;
}ar[Max];
int x;
int D(){
int sum=0,t,k,h;
h=x;
t=ar[x].next;
k=ar[x].x;
x=ar[x].next;
while(t!=-1){
sum++;
if(sum==k){
sum=0;
ar[h].next=ar[t].next;
}
h=t;
t=ar[t].next;
}
return k;
}
int main(){
int i,y;
for(i=0;i<Max;i++){
ar[i].x=i+2;
ar[i].next=i+1;
}
ar[i-1].next=-1;
x=0;
y=1;
while(scanf("%d",&n),n){
if(n>=y){
for(i=y;i<=n;i++)
{
num[i]=D();
}
y=i;
}
printf("%d\n",num
);
}
return 0;
}
#include<stdio.h>
#define Max 40005
int n,num[3000];
struct point{
int x;
int next;
}ar[Max];
int x;
int D(){
int sum=0,t,k,h;
h=x;
t=ar[x].next;
k=ar[x].x;
x=ar[x].next;
while(t!=-1){
sum++;
if(sum==k){
sum=0;
ar[h].next=ar[t].next;
}
h=t;
t=ar[t].next;
}
return k;
}
int main(){
int i,y;
for(i=0;i<Max;i++){
ar[i].x=i+2;
ar[i].next=i+1;
}
ar[i-1].next=-1;
x=0;
y=1;
while(scanf("%d",&n),n){
if(n>=y){
for(i=y;i<=n;i++)
{
num[i]=D();
}
y=i;
}
printf("%d\n",num
);
}
return 0;
}
相关文章推荐
- HDU1216--Assistance Required HDU(92)
- Assistance Required hdu 1216 读懂题意很重要 =_=\\
- HDU 1233 还是畅通工程
- HDU 2552 三足鼎立
- Hdu 2457 DNA repair (字符串_AC自…
- HDU 2088 Box of Bricks
- HDU 1555 How many days?
- HDU 1234 开门人和关门人
- HDU:3117 Fibonacci Numbers
- ZZULI_SummerPractice(3) HDU 1…
- HDU 动态规划(46道题目)倾情奉献
- HDU 2680 Choose the best route
- HDU 4160 (ZZULI 1598) Dolls(二分…
- HDU 4251 The Famous ICPC Team Ag…
- hdu 1858 Max Partial Value I(DP…
- hdu 3213 GCC
- hdu 1759 Function Run Fun
- 杭电ACM1216——Assistance Required~~筛选法的应用
- 更新节点区间求和-&nbsp;HDU&nbsp;1166&nbsp;敌兵…
- hdu&nbsp;1848&nbsp;Fibonacci&amp;nbs…