程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> CF #137 DIV2

CF #137 DIV2

編輯:C++入門知識

A題。
給你一個序列,給你兩個操作。第一個操作是將第K個數加到序列最後,第二個操作是將第一個數刪除。
問經過幾次這個序列變成完全一樣的序列,輸出次數,否則輸出-1.
大水題,先判斷第K個數之後是否都相等,然後找出這個序列從哪一位開始是相等的,輸出這一位-1就是操作的次數。
[cpp] 
while(scanf("%d%d",&n,&m)!=EOF) 
 
   for(int i=1; i<=n; i++) 
       scanf("%d",&a[i]); 
   bool flag=0; 
   for(int i=m; i<=n; i++) 
   { 
       if(a[i]!=a[n]) 
       { 
           flag=1; 
           break; 
       } 
 
   } 
   if(flag) 
       cout<<-1<<endl; 
   else 
       { 
           int i; 
           for(i=m;i>=1;i--) 
           { 
               if(a[i]!=a[m]) 
               { 
                   cout<<i<<endl; 
                   break; 
               } 
           } 
           if(i<1) 
           cout<<0<<endl; 
       } 
B,給你一個矩陣,裡面有一些數字,現在進行一些行變化和列變化之後叫你輸出x行y列的數字。
[cpp]
int hang[2000],lie[2000]; 
int Map[2000][2000]; 
int main() 

    int n,m,k; 
    while(scanf("%d%d%d",&n,&m,&k)!=EOF) 
    { 
        char a; 
        int x,y; 
        for(int i=1; i<=n; i++) 
        { 
            hang[i]=i; 
            for(int j=1; j<=m; j++) 
            { 
                lie[j]=j; 
                scanf("%d",&Map[i][j]); 
            } 
        } 
        while(k--) 
        { 
            cin>>a; 
            scanf("%d%d",&x,&y); 
            if(a=='g') 
            { 
                printf("%d\n",Map[hang[x]][lie[y]]); 
            } 
            else if(a=='r') 
            { 
                int temp=hang[x]; 
                hang[x]=hang[y]; 
                hang[y]=temp; 
            } 
            else 
            { 
                int temp=lie[x]; 
                lie[x]=lie[y]; 
                lie[y]=temp; 
            } 
        } 
    } 
 
 
    return 0; 

C。
D,給出n,m.
然後是n*2個數據,代表第一輪的成績和第二輪的成績。m是Vasya的最低成績。
輸出最好排名和最差排名。
顯而易見,最好排名就是第一名。
最差排名就是貪心找最多的大於m的組數。
[cpp]
bool cmp(int a,int b) 

    return a>b; 

int a[100001],b[100001]; 
int main()  

    int n,m; 
    while(scanf("%d%d",&n,&m)!=EOF) 
    { www.2cto.com
        for(int i=0;i<n;i++) 
        { 
            scanf("%d",&a[i]); 
        } 
        for(int j=0;j<n;j++) 
        { 
            scanf("%d",&b[j]); 
        } 
        sort(a,a+n,cmp); 
        sort(b,b+n); 
        int ans=0; 
        for(int i=0;i<n;i++) 
        { 
            if(a[ans]+b[i]>=m) 
            ans++; 
        } 
        cout<<1<<" "<<ans<<endl; 
    } 

E。

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved