POJ 1014 不明白為什麼資料可以縮小到60跟61
Description
Marsha and Bill own a collection of marbles. They want to split the collection among themselves so that both receive an equal share of the marbles. This would be easy if all the marbles had the same value, because then they could
just split the collection in half. But unfortunately, some of the marbles are larger, or more beautiful than others. So, Marsha and Bill start by assigning a value, a natural number between one and six, to each marble. Now they want to divide the marbles so
that each of them gets the same total value. Unfortunately, they realize that it might be impossible to divide the marbles in this way (even if the total value of all marbles is even). For example, if there are one marble of value 1, one of value 3 and two
of value 4, then they cannot be split into sets of equal value. So, they ask you to write a program that checks whether there is a fair partition of the marbles.
Input
Each line in the input file describes one collection of marbles to be divided. The lines contain six non-negative integers n1 , . . . , n6 , where ni is the number of marbles of value i. So, the example from above would be described
by the input-line "1 0 1 2 0 0". The maximum total number of marbles will be 20000.
The last line of the input file will be "0 0 0 0 0 0"; do not process this line.
The last line of the input file will be "0 0 0 0 0 0"; do not process this line.
Output
For each collection, output "Collection #k:", where k is the number of the test case, and then either "Can be divided." or "Can't be divided.".
Output a blank line after each test case.
Output a blank line after each test case.
Sample Input
1 0 1 2 0 0 1 0 0 0 1 1 0 0 0 0 0 0
Sample Output
Collection #1: Can't be divided. Collection #2: Can be divided. #include<iostream> #include<queue> #include<stack> #include<cstdio> #include<string> #include<cstring> #include<algorithm> using namespace std; int num[7]; int tt,sum; int dfs(int rlt) { if(rlt==sum) return 1; if(rlt>sum) return 0; for(int i=6;i>=1;i--) { if(num[i]) { if(i>sum) continue; else { num[i]--; if(dfs(rlt+i)) return 1; num[i]++; } } } return 0; } int main() { int t=1; while(1) { int temp=0; tt=0; for(int i=1;i<=6;i++) { scanf("%d",&num[i]); if(num[i]>60)//為什麼可以這樣做????? { if(num[i]%2) num[i]=61; else num[i]=60; } temp+=num[i]*i; } sum=temp/2; if(temp==0) break; printf("Collection #%d:\n",t++); if(temp%2 || (sum%2==1 && num[1]==0 && num[3]==0 && num[5]==0))//第二個判斷條件是怎麼得來的,求解啊?????? { printf("Can't be divided.\n"); printf("\n"); continue; } if(dfs(0)) printf("Can be divided.\n"); else printf("Can't be divided.\n"); printf("\n"); } return 0; }
相關文章
- 為什麼61%的CIO認為員工會惡意洩露資料
- 資料要素為什麼可以發揮數乘效果?
- 哪些人可以學習資料分析?為什麼學資料分析?
- 大資料能做什麼,為什麼學大資料大資料
- 【資料庫】簡單聊聊資料庫可以做什麼,有什麼用?資料庫
- 資料庫mysql儲存是什麼?可以存什麼?資料庫MySql
- 為什麼Proxy可以優化vue的資料監聽機制優化Vue
- 程式設計師可以跟銷售學什麼?程式設計師
- “一直不明白,程式設計師為什麼要加班。”程式設計師
- 為什麼Swoole可以加速phpPHP
- 為什麼需要資料治理
- 資料治理為什麼要清洗資料
- 還不明白 Docker 的映象跟容器?Docker
- js中為什麼基本型別資料可以使用屬性和方法JS型別
- 什麼是行為資料?企業為什麼要使用它?
- image是什麼資料夾可以刪除嗎
- 為什麼小資料更重要?
- 為什麼資料備份那麼重要?
- 指路大資料 學大資料可以從事什麼職業大資料
- documents是什麼資料夾 documents資料夾可以刪除嗎
- drivers是什麼資料夾 drivers資料夾可以刪除嗎
- Docker入門為什麼可以這麼簡單?Docker
- 我選單為什麼跟著滑動了?!!—— 固定定位為什麼會失效?
- 什麼是資料實時同步,為什麼資料實時同步很重要
- 什麼是資料視覺化,為什麼資料視覺化很重要?視覺化
- WebSocket 是什麼原理?為什麼可以實現持久連線?Web
- WebSocket 是什麼原理?為什麼可以實現持久連線Web
- perflogs是什麼資料夾可以刪除嗎
- customemotions是什麼資料夾可以刪除嗎
- 什麼工具可以採集獨立站點資料?如何分析資料?
- 為什麼要學資料結構?資料結構
- 企業為什麼要做資料整合?
- 為什麼要做資料視覺化視覺化
- PG資料庫為什麼要用autovacuum資料庫
- 為什麼需要大資料安全分析?大資料
- 為什麼現在要談大資料?大資料
- 為什麼大資料不等於BI?大資料
- 為什麼 Go 裡值為 nil 可以呼叫函式?Go函式