ACMCLUB 板


LINE

我是TLE 然後我是先找一個邊 再繼續找下一個 找到三個就輸出yes 停止並且輸入no的條件是 退後到第一個邊找不到 貼一下code好了 不過太長了應該很難有人想看 我想請教的事情是 我寫的程式都很慢 我不知道怎麼樣才能快 有一題叫做f91的那一題10696吧如果我記得沒錯的話我連那提都比別人慢 還有就是我10299也是TLE但是10179過了我也覺得我方法對了而且我想了很久才想出來的 但是還是不行 我想進步所以想請教你們我該怎麼做 我的程式背景是學了大一上下學期的程式語言課 然後經過同學介紹acm然後就開始寫題目 但我以前沒算過什麼數學所以有的題目是想的很痛苦之後才想出來的 大概就是這樣建議一下我該看什麼書該怎麼做 目前計畫是寫名題一百然後學學離散數學這樣... 不好意思打擾你們了... #include <iostream> using std::cout; using std::cin; using std::endl; void swap(int &a,int &b) { int c; c=a; a=b; b=c; } void bbsort(int *p,int n) { int i,j; for (i=n-1;i>0;i--) for (j=1;j<=i;j++) if (p[j-1]<p[j]) swap(p[j-1],p[j]); } int sum(int *p,int n) { int i; int summation=0; for (i=0;i<n;i++) summation+=p[i]; return summation; } bool judge(int *p,int n,int length) { int i; for (i=0;i<n;i++) if (p[i]>length) return 1; return 0; } void initial(int *q,int n) { int i; for (i=0;i<n;i++) q[i]=0; } char *solve(int *p,int n) { int length; int total=1; int position[3]={0,0,0}; int *q; int pointer=0; int i,j; int temp; int summation; if (sum(p,n)%4) return "no"; length=sum(p,n)/4; if (judge(p,n,length)) return "no"; bbsort(p,n); q=new int[n]; initial(q,n); for (i=0;i<n;i++) if (p[i]==length) q[i]=total,position[pointer]++,total++; if (p[position[pointer]]+p[n-1]>length) return "no"; summation=0; summation+=p[position[pointer]]; q[position[pointer]]=total; temp=position[pointer]; i=position[pointer]+1; while (total<4) { for (;i<n;i++) { if (q[i]==0 && p[i]<=length-summation) q[i]=total,summation+=p[i],temp=i; if (summation==length) { summation=0; for (j=0;j<n;j++) if (q[j]==0) { position[++pointer]=j; q[j]=++total; break; } summation+=p[j]; for (j=position[pointer]+1;j<n;j++) if (q[j]==0) { i=temp=j; break; } break; } } if (i>=n) { if (pointer==0) return "no"; if (temp==position[pointer]) { q[position[pointer]]=0; pointer--; total--; summation=length; for (j=n-1;j>=0;j--) if (q[j]==total) { q[j]=0; summation-=p[j]; break; } for (;j>=0;j--) if (q[j]==total) { q[j]=0; temp=j; i=j; summation-=p[j]; break; } } else { q[temp]=0; for (j=temp+1;j<n;j++) if (q[j]==0) { summation-=p[temp]; i=j; temp=j; break; } } } } return "yes"; } main() { int *p; int n; int N; int i; cin>>N; while (N>0) { cin>>n; p=new int[n]; for (i=0;i<n;i++) cin>>p[i]; cout<<solve(p,n)<<endl; delete [] p; N--; } return 0; } --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.161.11.9







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:e-shopping站內搜尋

TOP