• 2014 Multi-University Training Contest 6


    官方解题报告:http://blog.sina.com.cn/s/blog_a19ad7a10102uz2v.html

    Apple Tree http://acm.hdu.edu.cn/showproblem.php?pid=4925

     1 #include<cstdio>
     2 const int M=100;
     3 int a[M][M];
     4 int dx[]={0,0,1,-1};
     5 int dy[]={1,-1,0,0};
     6 int main(){
     7     int t,n,m;
     8     while(~scanf("%d",&t)){
     9         while(t--){
    10             scanf("%d%d",&n,&m);
    11             for(int i=0;i<n;i++){
    12                 for(int j=0;j<m;j++){
    13                     a[i][j]=1;
    14                 }
    15             }
    16             for(int i=0;i<n;i++){
    17                 for(int j=0;j<m;j++){
    18                     if((i+j)&1){
    19                         a[i][j]=0;
    20                         for(int k=0;k<4;k++){
    21                             int tx=i+dx[k];
    22                             int ty=j+dy[k];
    23                             if(tx>=0&&tx<n&&ty>=0&&ty<m){
    24                                 a[tx][ty]<<=1;
    25                             }
    26                         }
    27                     }
    28                 }
    29             }
    30             int sum=0;
    31             for(int i=0;i<n;i++){
    32                 for(int j=0;j<m;j++){
    33                     sum+=a[i][j];
    34                 }
    35             }
    36             printf("%d
    ",sum);
    37         }
    38     }
    39     return 0;
    40 }
    View Code

    Series 1 http://acm.hdu.edu.cn/showproblem.php?pid=4927

     1 import java.math.BigInteger;
     2 import java.util.Scanner;
     3 
     4 class Main{
     5     public static void main(String args[]){
     6         Scanner cin=new Scanner(System.in);
     7         int t,n,a[]=new int[3000];
     8         BigInteger c[]=new BigInteger[3000];
     9         c[0]=BigInteger.ONE;
    10         while(cin.hasNext()){
    11             t=cin.nextInt();
    12             while(t-->0){
    13                 n=cin.nextInt();
    14                 for(int i=0;i<n;i++){
    15                     a[i]=cin.nextInt();
    16                 }
    17                 for(int i=1;i<n;i++){
    18                     c[i]=c[i-1].multiply(BigInteger.valueOf(n-i)).divide(BigInteger.valueOf(i));
    19                 }
    20                 BigInteger ans=BigInteger.ZERO;
    21                 for(int i=n-1,odd=1;i>=0;i--,odd^=1){
    22                     if(odd%2==1){
    23                         ans=ans.add(c[i].multiply(BigInteger.valueOf(a[i])));
    24                     }
    25                     else{
    26                         ans=ans.subtract(c[i].multiply(BigInteger.valueOf(a[i])));
    27                     }
    28                 }
    29                 System.out.println(ans);
    30             }
    31         }
    32     }
    33 }
    View Code
      1 #include<cstdio>
      2 #include<cstring>
      3 #include<algorithm>
      4 #define mt(a,b) memset(a,b,sizeof(a))
      5 using namespace std;
      6 const int M=950;
      7 class Hp { //高精度类
      8     int len,s[M];
      9 public:
     10     void init() {
     11         len=1;
     12         mt(s,0);
     13     }
     14     void init(char ch[]) {
     15         len=1;
     16         mt(s,0);
     17         int i=0;
     18         while(ch[i]=='0'&&ch[i]!=0) i++;
     19         if(ch[i]!=0) {
     20             len=strlen(ch)-i;
     21             for(i=0; i<len; i++) {
     22                 s[i]=ch[len-i-1]-48;
     23             }
     24         }
     25     }
     26     void init(int x) {
     27         len=1;
     28         mt(s,0);
     29         while(x) {
     30             s[len-1]=x%10;
     31             x/=10;
     32             if(x) len++;
     33         }
     34     }
     35     void init(const Hp& a) {
     36         len=a.len;
     37         for(int i=0; i<M; i++) {
     38             s[i]=a.s[i];
     39         }
     40     }
     41     void print() { //输出
     42         int i=len-1;
     43         while(s[i]==0&&i>0) i--;
     44         for(; i>=0; i--) {
     45             printf("%d",s[i]);
     46         }
     47     }
     48     int cmp(Hp a) { //比较,类似于char数组比较
     49         if(len<a.len) return -1;
     50         else if(len>a.len) return 1;
     51         else {
     52             int temp=len-1;
     53             while(temp>=0&&s[temp]==a.s[temp]) temp--;
     54             if(temp==-1) return 0;
     55             else if(s[temp]<a.s[temp]) return -1;
     56             else return 1;
     57         }
     58     }
     59     void add(Hp a) { //高精度与高精度相加
     60         int templen=max(len,a.len);
     61         for(int i=0; i<templen; i++) {
     62             s[i]+=a.s[i];
     63             if(s[i]>9) {
     64                 s[i]-=10;
     65                 s[i+1]++;
     66             }
     67         }
     68         len=templen;
     69         if(s[len]!=0) len++;
     70     }
     71     void add(int x) { //高精度加单精度
     72         int temp=0;
     73         s[0]+=x;
     74         while(s[temp]>9) {
     75             s[temp]-=10;
     76             temp++;
     77             s[temp]++;
     78         }
     79         if(s[len]!=0) len++;
     80     }
     81     void subtract(Hp a) { //高精度减高精度
     82         for(int i=0; i<len; i++) {
     83             s[i]-=a.s[i];
     84             if(s[i]<0) {
     85                 s[i]+=10;
     86                 s[i+1]--;
     87             }
     88         }
     89         while(len>1&&s[len-1]==0) len--;
     90     }
     91     void multiply10() { //高精度乘10
     92         for(int i=len-1; i>=0; i--) {
     93             s[i+1]=s[i];
     94         }
     95         len++;
     96         if(s[len-1]==0) len--;
     97     }
     98     void multiply(int b) { //高精度乘单精度
     99         int temp=0;
    100         for(int i=0; i<len; i++) {
    101             temp+=s[i]*b;
    102             s[i]=temp%10;
    103             temp/=10;
    104         }
    105         s[len++]=temp;
    106         while(s[len-1]>10) {
    107             s[len]+=s[len-1]/10;
    108             s[len-1]%=10;
    109             len++;
    110         }
    111         while(len>1&&s[len-1]==0) len--;
    112     }
    113     void multiply(Hp b) { //高精度乘高精度
    114         Hp c;
    115         mt(c.s,0);
    116         for(int i=0; i<len; i++) {
    117             for(int j=0; j<b.len; j++) {
    118                 c.s[i+j]+=s[i]*b.s[j];
    119                 c.s[i+j+1]+=c.s[i+j]/10;
    120                 c.s[i+j]%=10;
    121             }
    122         }
    123         len=len+b.len;
    124         for(int i=0; i<len; i++) {
    125             s[i]=c.s[i];
    126         }
    127         while(len>1&&s[len-1]==0) len--;
    128     }
    129     int divide(int b) { //高精度除单精度
    130         int ret=0;
    131         for(int i=len-1; i>0; i--) {
    132             s[i-1]+=(s[i]%b)*10;
    133             s[i]/=b;
    134         }
    135         ret=s[0]%b;
    136         s[0]/=b;
    137         while(len>1&&s[len-1]==0) len--;
    138         return ret;
    139     }
    140     Hp divide(Hp b) { //高精度除高精度
    141         Hp c,d;
    142         mt(c.s,0);
    143         mt(d.s,0);
    144         d.len=1;
    145         for(int i=len-1; i>=0; i--) {
    146             d.multiply10();
    147             d.s[0]=s[i];
    148             while(d.cmp(b)>=0) {
    149                 d.subtract(b);
    150                 c.s[i]++;
    151             }
    152         }
    153         for(int i=0; i<len; i++) {
    154             s[i]=c.s[i];
    155         }
    156         while(len>1&&s[len-1]==0) len--;
    157         while(d.len>1&&d.s[d.len-1]==0) d.len--;
    158         return d;
    159     }
    160 } c[3000],ans,tmp;
    161 int a[3000];
    162 int main(){
    163     int t,n;
    164     while(~scanf("%d",&t)){
    165         while(t--){
    166             scanf("%d",&n);
    167             for(int i=0;i<n;i++){
    168                 scanf("%d",&a[i]);
    169             }
    170             c[0].init(1);
    171             for(int i=1;i<n;i++){
    172                 c[i].init(c[i-1]);
    173                 c[i].multiply(n-i);
    174                 c[i].divide(i);
    175             }
    176             for(int i=0;i<n;i++){
    177                 c[i].multiply(a[i]);
    178             }
    179             ans.init(0);
    180             tmp.init(0);
    181             for(int i=n-1,odd=1;i>=0;i--,odd^=1){
    182                 if(odd&1) ans.add(c[i]);
    183                 else      tmp.add(c[i]);
    184             }
    185             if(ans.cmp(tmp)<0){
    186                 putchar('-');
    187                 tmp.subtract(ans);
    188                 tmp.print();
    189             }
    190             else{
    191                 ans.subtract(tmp);
    192                 ans.print();
    193             }
    194             puts("");
    195         }
    196     }
    197     return 0;
    198 }
    View Code

    Fighting the Landlords http://acm.hdu.edu.cn/showproblem.php?pid=4930

      1 #include<cstdio>
      2 #include<cstring>
      3 #define mt(a,b) memset(a,b,sizeof(a))
      4 const int M=32;
      5 char my[M],his[M];
      6 int summy[M],sumhis[M],nummy[M],numhis[M];
      7 int getid(char c){
      8     if(c>='3'&&c<='9') return c-'0';
      9     if(c=='T') return 10;
     10     if(c=='J') return 11;
     11     if(c=='Q') return 12;
     12     if(c=='K') return 13;
     13     if(c=='A') return 14;
     14     if(c=='2') return 15;
     15     if(c=='X') return 16;
     16     if(c=='Y') return 17;
     17 }
     18 void yes(){
     19     puts("Yes");
     20 }
     21 void no(){
     22     puts("No");
     23 }
     24 int findbigid(int a[],int num){
     25     for(int i=17;i>=3;i--){
     26         if(a[i]>=num){
     27             return i;
     28         }
     29     }
     30     return -1;
     31 }
     32 int main(){
     33     int t;
     34     while(~scanf("%d",&t)){
     35         while(t--){
     36             scanf("%s%s",my,his);
     37             mt(summy,0);
     38             for(int i=0;my[i];i++){
     39                 summy[getid(my[i])]++;
     40             }
     41             mt(sumhis,0);
     42             for(int i=0;his[i];i++){
     43                 sumhis[getid(his[i])]++;
     44             }
     45             mt(nummy,0);
     46             for(int i=3;i<=17;i++){
     47                 nummy[summy[i]]++;
     48             }
     49             mt(numhis,0);
     50             for(int i=3;i<=17;i++){
     51                 numhis[sumhis[i]]++;
     52             }
     53             if(nummy[4]){
     54                 if(nummy[4]==1&&!nummy[3]){
     55                     if(!nummy[2]&&!nummy[1]){
     56                         yes();
     57                         continue;
     58                     }
     59                     if(!nummy[2]&&nummy[1]==2){
     60                         yes();
     61                         continue;
     62                     }
     63                     if(nummy[2]==1&&!nummy[1]){
     64                         yes();
     65                         continue;
     66                     }
     67                 }
     68             }
     69             else{
     70                 if(nummy[3]){
     71                     if(nummy[3]==1){
     72                         if(!nummy[2]&&!nummy[1]){
     73                             yes();
     74                             continue;
     75                         }
     76                         if(nummy[2]==1&&!nummy[1]){
     77                             yes();
     78                             continue;
     79                         }
     80                         if(!nummy[2]&&nummy[1]==1){
     81                             yes();
     82                             continue;
     83                         }
     84                     }
     85                 }
     86                 else{
     87                     if(nummy[2]){
     88                         if(nummy[2]==1&&!nummy[1]){
     89                             yes();
     90                             continue;
     91                         }
     92                     }
     93                     else{
     94                         if(nummy[1]==1){
     95                             yes();
     96                             continue;
     97                         }
     98                         if(nummy[1]==2&&summy[16]==1&&summy[17]==1){
     99                             yes();
    100                             continue;
    101                         }
    102                     }
    103                 }
    104             }
    105             if(summy[16]==1&&summy[17]==1){
    106                 yes();
    107                 continue;
    108             }
    109             if(sumhis[16]==1&&sumhis[17]==1){
    110                 no();
    111                 continue;
    112             }
    113             if(numhis[4]){
    114                 if(!nummy[4]){
    115                     no();
    116                     continue;
    117                 }
    118                 int my4id=findbigid(summy,4);
    119                 int his4id=findbigid(sumhis,4);
    120                 if(my4id>his4id){
    121                     yes();
    122                 }
    123                 else{
    124                     no();
    125                 }
    126                 continue;
    127             }
    128             if(nummy[4]){
    129                 yes();
    130                 continue;
    131             }
    132             if(nummy[3]){
    133                 if(!numhis[3]){
    134                     yes();
    135                     continue;
    136                 }
    137                 int my3id=findbigid(summy,3);
    138                 int his3id=findbigid(sumhis,3);
    139                 if(my3id>his3id){
    140                     yes();
    141                     continue;
    142                 }
    143                 if(nummy[2]&&!numhis[2]){
    144                     yes();
    145                     continue;
    146                 }
    147                 if(nummy[1]&&!numhis[1]){
    148                     yes();
    149                     continue;
    150                 }
    151             }
    152             if(nummy[2]){
    153                 if(!numhis[2]&&!numhis[3]){
    154                     yes();
    155                     continue;
    156                 }
    157                 int my2id=findbigid(summy,2);
    158                 int his2id=findbigid(sumhis,2);
    159                 if(my2id>his2id){
    160                     yes();
    161                     continue;
    162                 }
    163             }
    164             int my1id=findbigid(summy,1);
    165             int his1id=findbigid(sumhis,1);
    166             if(my1id>his1id){
    167                 yes();
    168                 continue;
    169             }
    170             no();
    171         }
    172     }
    173     return 0;
    174 }
    View Code

    end

  • 相关阅读:
    第四周进度条
    单元测试
    第四周开发日志(psp)
    软件工程个人作业03
    第四周课堂作业——单元测试
    进度条 第三周
    开发日志
    软件工程个人作业2
    《构建之法》阅读笔记01
    第一二周进度条
  • 原文地址:https://www.cnblogs.com/gaolzzxin/p/3898021.html
Copyright © 2020-2023  润新知