題意:這個題意就是給你一個錯誤的排序方式,要求你在它的這個排序方式下判斷是否存在正確的運行結果。若存在正確的結果,則輸出-1,不然輸出一個例子說明是錯誤的。題目的輸入是元素的個數n。ios
題解:這一題比較有意思,很容易判斷出只有當n=1 or n=2時運行結果是正確的,其他的狀況都是錯誤的。這樣咱們就構造出一個序列出來就能夠了。數組
代碼:spa
#include<iostream> #include<stdio.h> #include<cstring> #include<algorithm> #define ll long long using namespace std; int main(){ int n; cin>>n; if(n<=2){ cout<<-1; }else{ for(int i=n;i>=1;i--){ cout<<i; if(i!=1){ cout<<" "; } } } return 0; }
題意:這一題的大概意思是給你一個長度爲n的int序列。你能夠選擇其中任意兩個數對其分別進行+1和-1操做,問在進行若干次後,最多可存在多少個相同的數。.net
題解:對同一個數組裏面的兩個元素進行+1和-1操做,很容易想到的一點是它的元素和老是必定的,這是一個突破點。這裏咱們判斷元素的和是否能被n整除,若是能,則最多的個數就是n(說明必定存在某種方式將全部的元素變爲同樣的),若是不能,就確定存在一個餘數,這時,咱們就能夠捨去這個元素,對其餘的元素進行操做。則此時的元素個數就是n-1。code
代碼:blog
#include<iostream> #include<stdio.h> #include<cstring> #include<algorithm> #define ll long long using namespace std; int main(){ int n; cin>>n; int num[100005]={0}; int sum=0; for(int i=0;i<n;i++){ cin>>num[i]; sum=sum+num[i]; } if(sum%n==0){ cout<<n<<endl; }else{ cout<<n-1<<endl; } return 0; }
題意:這一題的大概意思是k我的平均分n*k個橘子,特別的是每一個人都有它們各自必須必須須要的一個橘子,其餘的沒有要求。排序
題解:這一題也是比較簡單的(悔不當初),ci
代碼:這裏咱們只須要用一個vis數組記錄一下哪個橘子被分了就能夠,而後依次輸出應有數量的橘子便可(同時特別關注該人特別須要橘子的編號這個須要特別判斷一下)。get
代碼:string
#include<iostream> #include<stdio.h> #include<cstring> #include<algorithm> #define ll long long using namespace std; int main(){ ll n,k; cin>>n>>k; int num[1000]={0}; int vis[1000]={0}; int t; for(int i=0;i<k;i++){ cin>>vis[i]; num[vis[i]]=1; } int len=0; for(int i=0;i<k;i++){ len=0; cout<<vis[i]<<" "; len++; for(int j=1;j<=n*k;j++){ if(len<n&&num[j]==0){ cout<<j; num[j]=1; len++; if(len<=n-1){ cout<<" "; } } } cout<<endl; } return 0; }
題意:這一題的大概意思它定義了一種特別的數,其中這個數字包含的單個數字的種類的數量不超過2種,如今給你n須要你求出在[1,n]之中存在多少個這樣的數字。
題解:比賽想了半天就是沒看出這是一個dfs,這裏咱們能夠這樣想,咱們遍歷[0,9]中所有的2種數字的組合,而後將它們去排列組合,小於n就放入set(能夠去重)中,最後輸出就能夠了。
知識點:dfs 排列組合
代碼:
#include<iostream> #include<set> #include<algorithm> #define ll long long using namespace std; set<ll> st; ll n; void dfs(int a,int b,ll num){ st.insert(num); ll ta=num*10+a; ll tb=num*10+b; if(ta&&ta<=n){ dfs(a,b,ta); } if(tb&&tb<=n){ dfs(a,b,tb); } } int main(){ cin>>n; for(int i=0;i<=9;i++){ for(int j=0;j<=9;j++){ dfs(i,j,0);/*每一個數字都是從0開始的*/ } } cout<<st.size()-1; return 0; }