-
證明過程參考程式設計之美2015資格賽題解
題目1 :2月19日
時間限制:2000ms單點時限:1000ms記憶體限制:256MB描述
給定兩個日期,計算這兩個日期之間有多少個2月29日(包括起始日期)。
只有閏年有2月29日,滿足以下一個條件的年份為閏年:
1. 年份能被4整除但不能被100整除
2. 年份能被400整除
輸入
第一行為一個整數T,表示資料組數。
之後每組資料包含兩行。每一行格式為"month day, year",表示一個日期。month為{"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November" , "December"}中的一個字串。day與year為兩個數字。
資料保證給定的日期合法且第一個日期早於或等於第二個日期。
輸出
對於每組資料輸出一行,形如"Case #X: Y"。X為資料組數,從1開始,Y為答案。
資料範圍
1 ≤ T ≤ 550
小資料:
2000 ≤ year ≤ 3000
大資料:
2000 ≤ year ≤ 2×109
- 樣例輸入
-
4 January 12, 2012 March 19, 2012 August 12, 2899 August 12, 2901 August 12, 2000 August 12, 2005 February 29, 2004 February 29, 2012
- 樣例輸出
-
Case #1: 1 Case #2: 0 Case #3: 1 Case #4: 3
1 #include <iostream> 2 #include <vector> 3 #include <string> 4 #include <algorithm> 5 using namespace std; 6 7 8 string MONTHS[12]={"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November" , "December"}; 9 10 int getMonth(string mon){ 11 for(int i = 0; i < 12; ++ i){ 12 if(mon == MONTHS[i]) return i+1; 13 } 14 return 0; 15 } 16 17 bool judgeLeapYear(int year){ 18 if( (year%4 == 0) && (year%100!=0) || (year%400 == 0)) return true; 19 else return false; 20 21 } 22 23 int main(){ 24 int T; 25 cin >> T; 26 string dot; 27 for( int icase = 1; icase <= T; ++ icase ){ 28 string monthStr; 29 int startDay,startYear; 30 cin >>monthStr>>startDay>>dot>>startYear; 31 int startMonth = getMonth(monthStr); 32 int endDay,endYear; 33 cin >> monthStr >> endDay >> dot>>endYear; 34 int endMonth = getMonth(monthStr); 35 int result= 0; 36 for(int i = startYear+1; i <= endYear-1; ++ i){ 37 if(judgeLeapYear(i)) result++; 38 } 39 if(startYear==endYear){ 40 if(judgeLeapYear(startYear) && startMonth <=2 && (endMonth >= 3 || (endMonth == 2 && endDay == 29))) result++; 41 }else{ 42 if(judgeLeapYear(startYear) && startMonth <= 2) result++; 43 if(judgeLeapYear(endYear) && (endMonth >= 3 || (endMonth == 2 && endDay == 29))) result++; 44 } 45 cout<<"Case #"<<icase<<": "<<result<<endl; 46 } 47 48 }
題目2 : 迴文字元序列
時間限制:2000ms單點時限:1000ms記憶體限制:256MB描述
給定字串,求它的迴文子序列個數。迴文子序列反轉字元順序後仍然與原序列相同。例如字串aba中,迴文子序列為"a", "a", "aa", "b", "aba",共5個。內容相同位置不同的子序列算不同的子序列。
輸入
第一行一個整數T,表示資料組數。之後是T組資料,每組資料為一行字串。
輸出
對於每組資料輸出一行,格式為"Case #X: Y",X代表資料編號(從1開始),Y為答案。答案對100007取模。
資料範圍
1 ≤ T ≤ 30
小資料
字串長度 ≤ 25
大資料
字串長度 ≤ 1000
- 樣例輸入
-
5 aba abcbaddabcba 12111112351121 ccccccc fdadfa
- 樣例輸出
-
Case #1: 5 Case #2: 277 Case #3: 1333 Case #4: 127 Case #5: 17
1 #include <iostream> 2 #include <vector> 3 #include <algorithm> 4 #include <string> 5 #include <cstdlib> 6 #include <cstring> 7 #include <cstdio> 8 9 #define MOD 100007 10 11 using namespace std; 12 13 int main(){ 14 int T; 15 cin >> T; 16 for(int icase = 1; icase <= T; ++ icase){ 17 string str; 18 cin >> str; 19 int dp[1005][1005]={0}; 20 memset(dp,0,sizeof(dp)); 21 for(int i = 0 ; i < str.length(); ++ i) dp[i][i] = 1; 22 for(int i = 1; i < str.length(); ++ i){ 23 for(int j = i-1; j >=0; -- j){ 24 dp[j][i]=(dp[j+1][i]+dp[j][i-1]-dp[j+1][i-1]+MOD)%MOD; 25 if(str[i]==str[j]) 26 dp[j][i]=(dp[j][i]+dp[j+1][i-1]+1+MOD)%MOD; 27 } 28 } 29 cout<<"Case #"<<icase<<": "<<dp[0][str.length()-1]<<endl; 30 } 31 32 }
題目3 : 基站選址
時間限制:2000ms單點時限:1000ms記憶體限制:256MB描述
需要在一個N × M的網格中建立一個通訊基站,通訊基站僅必須建立在格點上。
網格中有A個使用者,每個使用者的通訊代價是使用者到基站歐幾里得距離的平方。
網格中還有B個通訊公司,維護基站的代價是基站到最近的一個通訊公司的路程(路程定義為曼哈頓距離)。
在網格中建立基站的總代價是使用者通訊代價的總和加上維護基站的代價,最小總代價。
輸入
第一行為一個整數T,表示資料組數。
每組資料第一行為四個整數:N, M, A, B。
接下來的A+B行每行兩個整數x, y,代表一個座標,前A行表示各使用者的座標,後B行表示各通訊公司的座標。
輸出
對於每組資料輸出一行"Case #X: Y",X代表資料編號(從1開始),Y代表所求最小代價。
資料範圍
1 ≤ T ≤ 20
1 ≤ x ≤ N
1 ≤ y ≤ M
1 ≤ B ≤ 100
小資料
1 ≤ N, M ≤ 100
1 ≤ A ≤ 100
大資料
1 ≤ N, M ≤ 107
1 ≤ A ≤ 1000
- 樣例輸入
-
2 3 3 4 1 1 2 2 1 2 3 3 2 2 2 4 4 4 2 1 2 2 4 3 1 4 3 1 4 1 3
- 樣例輸出
-
Case #1: 4 Case #2: 13
微軟2程式設計之美2015資格賽
相關文章
- 程式設計之美資格賽--題目2 : 大神與三位小夥伴程式設計
- 2013程式設計之美全國挑戰賽資格賽之傳話遊戲薦程式設計遊戲
- 程式設計之美資格賽 大神與三位小夥伴(推公式)程式設計公式
- 程式設計之美初賽第一場--焦距程式設計
- 程式設計之美初賽第一場--樹程式設計
- 程式設計之美之買票找零程式設計
- 程式設計之美複習筆記程式設計筆記
- 程式設計之美之高效安排見面會程式設計
- 程式設計之美之最短摘要生成程式設計
- 程式設計師聽音樂 遊戲界的”格萊美”程式設計師遊戲
- Go併發程式設計之美-CAS操作Go程式設計
- Go併發程式設計之美-互斥鎖Go程式設計
- .NET框架-微軟C#程式設計風格官方指南框架微軟C#程式設計
- 程式設計之美leetcode之編輯距離程式設計LeetCode
- 技術更高,設計更遠:華為全屋智慧設計大賽的審美之躍
- 演算法字串位包含程式設計之美演算法字串程式設計
- 筆記:《挑戰程式設計競賽(第2版)》(2)筆記程式設計
- [程式設計之美][2.2] 不要被階乘嚇倒程式設計
- 程式設計師必看:程式的美,不止動畫的美程式設計師動畫
- 程式設計大賽WBS程式設計
- 品味Spring Cache設計之美Spring
- 重新領略設計模式之美設計模式
- 程式碼之美---遞迴之美遞迴
- 糟糕程式設計師的程式設計風格程式設計師
- SQL資料庫程式設計大賽隨感SQL資料庫程式設計
- SQL資料庫程式設計大賽開幕SQL資料庫程式設計
- 程式設計之美之電話號碼對應英語單詞程式設計
- 牛客程式設計巔峰賽S2第11場程式設計
- 筆記:《挑戰程式設計競賽(第2版)》(3)筆記程式設計
- 筆記:《挑戰程式設計競賽(第2版)》(1)筆記程式設計
- 2、Dart:非同步程式設計之Futures;Dart非同步程式設計
- 【程式設計開發】之 OAuth2程式設計OAuth
- Javascript程式設計風格JavaScript程式設計
- Java併發程式設計之美-千無萬喚使出來Java程式設計
- 《程式設計之美》舞動’08年IT圖書銷售奇蹟程式設計
- 【JAVA面試資料】程式設計師面試之葵花寶典2Java面試程式設計師
- 某大學程式設計競賽程式設計
- 2020年團體程式設計天梯賽-總決賽 L2-2 口罩發放程式設計