位址
a 組成三位數
列舉第乙個數,第二個數第三個數根據關係算出來,然後判斷是否合法就行了。
#include
#define rep(i, a, b) for(int i = a; i <= b; ++i)
using
namespace std;
int vis[10]
=;bool
fun(
int n)
return
true;}
bool
check
(int a,
int b,
int c)
intmain()
}return0;
}
這是牛思琦的全排列做法
//
/*簽到題,沒什麼好說的。
不過第一次看到這道題的時候確實挺開心的,
因為以前了解了next_permutation和prev_permutation函式後
一直沒機會用,哈哈哈哈
*/#include
using
namespace std;
const
int n=
1e6+10;
int a[9]
=,cnt;
intmain()
while
(next_permutation
(a,a+9)
);return0;
}
b new year candles
這就是個數學題,每b根用過的能合成一根新的,模擬一下就可以了。
#include
using
namespace std;
intmain()
cout << cnt;
return0;
}
**c 均分紙牌 **
這題我不會,諾姐原話:這題不是看一眼就出來了???膜拜大佬題目中求的是最快多少次,那麼你完全可以假定為最好情況,既每個大於平均數的數左邊比他小的數剛好和大於平均數部分相等。因為如果大於平均數部分比左邊欠的少的話,可以先通過右邊更多的給他一部分。所以每個數最多只會加一次。
#include
#define rep(i,a,b) for(int i=a;i<=b;++i)
using
namespace std;
intmain()
, sum =0;
scanf
("%d"
,&n)
;rep
(i,1
, n)
sum /
= n;
int tot =
0, cnt =0;
rep(i,
1, n-1)
} cout << cnt;
return0;
}
**d 質因數分解 **
注意判斷質數時候到 i * i 就可以了,否則會超時。
#include
#define rep(i, a, b) for(int i = a; i <= b; ++i)
using
namespace std;
bool
isprime
(int n)
for(
int i =
3; i * i <= n; i +=2
)return n>1;
}int
main()
}return0;
}
第二種方法,不是通解。
首先,題目中告訴我們了n是兩個質數的乘積。而我們知道兩個質數的最大公約數是1,即n只有這兩個質數為因子(1除外),那麼我們可以直接一遍遍歷遇到能整除的就是答案了。
#include
#define rep(i, a, b) for(int i = a; i <= b; ++i)
using
namespace std;
intmain()
}return0;
}
**e jury size **
如果你看懂題目了的話,這就是乙個貪心。用map,可能因為有上一年的會是負數。
當然用陣列也可以,只不過你要初始化的時候先加乙個比ti大的數字。題目中100及以上都可以。
#include
using
namespace std;
int date=
;int
fun(
int m)
return res;
}int
main()
} cout << res << endl;
return0;
}
**f regular bracket sequence **
判斷有多少個合法括號序列,那麼首先一種思路就是用棧模擬一下。
#include
using
namespace std;
intmain()
}}cout << ans;
return0;
}
還可以對空間進行優化,因為只有左右括號,所以我們可以用乙個變數記錄某種括號數量。o(1)空間複雜度
#include
#define rep(i, a, b) for(int i = a; i <= b; ++i)
using
namespace std;
const
int maxn =
1e6;
char s[maxn]
;int
main()
}printf
("%d"
, ans)
;return0;
}
**g 合併果子 **
首先乙個思路就是每次選最小的兩個合併,那麼整體肯定是最優的。
如果用兩重for時間複雜度很高。用優先佇列可以優化到o(nlogn)。
和這題 修理牧場 思路完全一樣
#include
#include
#define rep(i,a,b) for(int i=a;i<=b;++i)
using
namespace std;
intmain()
int sum =0;
while
(q.size()
!=1)printf
("%d"
, sum)
;return0;
}
第二次周賽題解
e題,不懂的看新生訓練題解 includeint main return 0 d題,乙個預處理就ok includeint a 1000005 int main int t scanf d t while t return 0 c題,打表找下規律,會發現是以1 1 2 0 2 2 1 0為迴圈 in...
第二次周賽B
有乙隻經過訓練的蜜蜂只能爬向右側相鄰的蜂房,不能反向爬行。請程式設計計算蜜蜂從蜂房a爬到蜂房b的可能路線數。其中,蜂房的結構如下所示。input 輸入資料的第一行是乙個整數n,表示測試例項的個數,然後是n 行資料,每行包含兩個整數a和b 0sample input 21 2 3 6sample ou...
第二次周賽Problem C
在2 n的乙個長方形方格中,用乙個1 2的骨牌鋪滿方格,輸入n 輸出鋪放方案的總數.例如n 3時,為2 3方格,骨牌的鋪放方案有三種,如下圖 輸入資料由多行組成,每行包含乙個整數n,表示該測試例項的長方形方格的規格是2 n 0題解 列出1 1,2 2,3 3,4 5,5 8可以看出a n a n 1...