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灯, 水草

请输入看板名称,例如:Boy-Girl站内搜寻

TOP