NOIP2012复赛DAY1

来源:互联网 发布:设计网页软件下载 编辑:程序博客网 时间:2024/05/04 02:18

NOIP2012——DAY1

1、Vigenère 密码

【题目分析】
这就是一道找规律的题目,可别忘了将自己找出的规律多模拟几次,不然就有可能悲剧了。

【代码】

#include<cstdio>#include<cstring>char A[1005],a[1005],B[1005];int main(){    scanf("%s %s",a,B);    int n=strlen(a),m=strlen(B);    for(int i=0;i<m;i++){        int ok=0;        A[i]=a[i%n];        if(A[i]<='Z')A[i]+=32;        if(B[i]<='Z')B[i]+=32,ok=32;        int k=B[i]-A[i]+27;        if(k>=1&&k<=26)printf("%c",k-ok+'a'-1);        else printf("%c",k-ok+'a'-27);    }puts("");    return 0;}

2、国王游戏

【题目分析】
看到数据的范围,只有40%数据是可以用二进制过的。然而这也打消我们暴力枚举的念头。
思路从枚举到了贪心。
如果相邻的两个大臣进行交换,对之后的区间的答案并不影响。
就要进行神奇的数学推导%&*%&……()&
推得—>如果

aibi<a(i+1)b(i+1)
1 1