历年ACM 联系客服

发布时间 : 星期六 文章历年ACM更新完毕开始阅读

w=w+1; lookup(k,b[k][c],j); } else { w=-1; return w; exit(0); } }

void main() { int i,j; //scanf(\ FILE *fp; fp=fopen(\ fscanf(fp,\ //scanf(\ for(i=1;i<=M;i++) { w=0; fscanf(fp,\ for(j= 1; j<= N; j++) fscanf(fp,\ //for(j=1;j<=N;j++) // scanf(\ for(j=1;j<=N;j++) flag[j]=0; lookup(i,A,B); printf(\ } fclose(fp); }

奇特的艺术品

Dr.Kong设计了一件艺术品,该艺术品由N个构件堆叠而成,N个构件从高到低按层编号依次为1,2,……,N。艺术品展出后,引起了强烈的反映。Dr.Kong观察到,人们尤其对作品的高端部分评价甚多。

狂热的Dr.Kong一激动,对组成该艺术品的N个构件重新组合,比如:把第6层到第12层的构件搬下来,想一想,然后整体放到剩下构件的第7层下面;过一会儿,又把第2层到第9层的构件搬下来,整体放到剩下构件的第1层下面等等。于是,Dr.Kong在进行了连续若干次“搬来搬去”后,还是这N个构件,又诞生了一件新的艺术品。编程:请输出新的艺术品最高十层构件的编号。 【标准输入】

第一行: N K 表示构件的总数和“搬来搬去”的总次数

第2~K+1行:A B C 表示要搬动的构件(即从第A层到第B层)整个放在第C层下面;

如果C等于0,则要搬动的构件将放到最高层。

【标准输出】

由十行组成,分别为组成新艺术品的第一层到第十层构件的编号。 【约束条件】

(1) 10≤N≤20000 1≤k≤1000

(2) 1≤A≤B≤N, 0≤C≤N-(B-A+1) 【 样 例 】

标准输入 13 3 6 12 1 2 9 0 10 13 8 6 7 8 9 10 11 12 2 3 4 #include\#define N 200000 int n,k,a,b,c;

int aa[N+1],cc[N+1];

void move(int a,int b,int c,int n) { int i,j,m; for(i=a;i<=b;i++) { cc[i-a+1]=aa[i]; } if(cc;j--) { aa[j+b-a+1]=aa[j]; } } else if(c>=a) { for(i=b+1;i<=b+c-a+1;i++) { aa[i-b+a-1]=aa[i];

标准输出

} } for(m=1;m<=b-a+1;m++) { aa[c+m]=cc[m]; } return; }

void main() { int i,j; scanf(\ for(j=1;j<=n;j++) aa[j]=j; for(i=1;i<=k;i++) { scanf(\ move(a,b,c,n); for(i=1;i<=10;i++) printf(\}

壮观的瓷器广场

【问题描述】

最近,某瓷都为了体现“千年瓷都” 的风貌,将要建立一个壮观的瓷器广场迎接来自各国的宾客。,顾问Dr.Kong提出了一项建议:在巨大的广场南面展示N件高度不等的瓷器灯柱。夜间,这些瓷器灯柱逐一闪亮,由低至高,如此场景必将十分的绚丽夺目。然而,在瓷器灯柱运来安放后,Dr.Kong才发现粗心的工人并没有按照从低到高的顺序安放瓷器灯柱。由于瓷器灯柱已经竖立起来,不可能全部推倒重新安放,人力又搬不动。因此,Dr.Kong只能借助巨型吊车每次将两个瓷器灯柱的位置小心翼翼地进行交换。

例如,有3个瓷器灯柱初始时高度顺序是:3 1 2。可以先用吊车交换后两个灯柱的位置,得到3 2 1,再交换第一和第三个灯柱,得到最终序列1 2 3。 毕竟,用吊车交换灯柱位置可不是一件容易的事情,灯柱越高其重量越大,交换的难度也就越高。Dr.Kong估算出,每一次交换的难度等于交换的两个灯柱的高度的和。而整个交换方案的难度等于每次交换难度的总和。 例如先前的交换方案。原先3 1 2,交换后两个(难度为1+2=3),得到3 2 1,再交换第一和第三个(难度为3+1 = 4),得到1 2 3。因此,该方案的难度为3+4 =7。为了使交换工作尽快完成,难度最低的交换方案自然是首选了。Dr.Kong虽然知道一些选择,冒泡,归并,快速甚至堆排序等。然而,在该问题面前,这些方法看起来似乎毫无用武之地!你有何办法? 【标准输入】

第一行: M 表示以下有M组测试数据(0

头一行: N (表示瓷器灯柱的数目1 ≤ N ≤ 100 )

下一行: H1 H2 ….Hn (表示依次安放灯柱的高度, 1≤Hi≤ 1000,) 【标准输出】

输出有M行,第i行为仅包含一个整数, 为第i组测试数据可得到的交换方案的最低难度值。 【 样 例 】

标准输入 2 3 3 1 2 4 30 40 10 23 #include \#include \#include \struct data {

int loc;//位置 int value;//值 }h[101];

void sort(struct data h[],int n) {

int i,j;

struct data dk; for(i=1;i

for(j=i+1;j<=n;j++) {

if(h[i].value>h[j].value) {

dk=h[i]; h[i]=h[j]; h[j]=dk; } } } return; }

main() {

int m,n,i,j,k,t,sum=0; cin>>m;

for(i=1;i<=m;i++) {

cin>>n; sum=0;

for(j=1;j<=n;j++) {

cin>>h[j].value;

标准输出 7 103