码迷,mamicode.com
首页 > 其他好文 > 详细

[bzoj3360] [Usaco2004 Jan]算二十四

时间:2016-06-18 18:15:58      阅读:243      评论:0      收藏:0      [点我收藏+]

标签:

  O(3^9)枚举符号。。

  成功垫底QAQ...幸好没破坏这题100%的AC率。。

技术分享
 1 #include<cstdio>
 2 #include<iostream>
 3 #include<cstring>
 4 using namespace std;
 5 int l[11],r[11];
 6 int fh[11],num[11],a[11];
 7 int i,j,k,n,m,ans;
 8  
 9 int ra;char rx;
10 inline int read(){
11     rx=getchar(),ra=0;
12     while(rx<0||rx>9)rx=getchar();
13     while(rx>=0&&rx<=9)ra*=10,ra+=rx-48,rx=getchar();return ra;
14 }
15 inline int calc(){
16     int i,j,k;
17     for(i=1;i<=n;i++)l[i]=r[i]=i;
18     for(i=1;i<n;i++){
19         for(j=i;fh[j]==3;j++);
20         for(k=i;k<=j;k++)l[k]=i,r[k]=j;
21         i=j;
22     }
23     for(i=1;i<=n;i=r[i]+1)
24         for(j=l[i]+1,num[r[i]]=a[i];j<=r[i];j++)num[r[i]]*=a[j];
25     int now=0;
26     for(i=1;i<=n;i++)if(i==r[i])
27         if(l[i]==1||fh[l[i]-1]==1)now+=num[i];else now-=num[i];
28     return now;
29 }
30 void dfs(int dep){
31     if(dep==n){
32         if(calc()==24)ans++;
33         return;
34     }
35     fh[dep]=1,dfs(dep+1),
36     fh[dep]=2,dfs(dep+1),
37     fh[dep]=3,dfs(dep+1);
38 }
39 int main(){
40     n=read();for(i=1;i<=n;i++)a[i]=read();
41     dfs(1);
42     printf("%d\n",ans);
43 }
View Code

 

[bzoj3360] [Usaco2004 Jan]算二十四

标签:

原文地址:http://www.cnblogs.com/czllgzmzl/p/5596438.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!