CodeForces 680A&680B&680C&680D Round#356
2016-06-09 21:07
555 查看
昨天晚上实在是=_=困。。。(浪了一天)就没有去打Codeforces
中午醒来看看题,还不太难。
A题:模拟(水题 3minAC)
B:(水题 5minAC)
C:一道数学题。
枚举50以内的素数,最后判断有没有i*i(i^2<50)的即可。
一个yes—>素数
否则—->合数
(呃其实没有“8”,当时多打了一个,不过也没关系,AC就是王道)
D:
http://www.cnblogs.com/macinchang/p/5572070.html
照着他的题解写得。 没有什么思路。。。。
E:第10个点WA了,并不知道怎么改。 大数据挂了。。。
E题已挂。
中午醒来看看题,还不太难。
A题:模拟(水题 3minAC)
// by Sirius_Ren #include <cstdio> #include <cstring> #include <algorithm> using namespace std; int a[6],sum=0,ans; bool cmp(int a,int b){return a>b;} int main() { for(int i=1;i<=5;i++)scanf("%d",&a[i]),sum+=a[i]; ans=sum; sort(a+1,a+6,cmp); for(int i=1;i<=5;i++) for(int j=1;j<=2;j++){ if(a[i]!=a[i+j])break; ans=min(ans,sum-a[i]-a[i]); if(j==2)ans=min(ans,sum-a[i]-a[i]-a[i]); } printf("%d",ans); }
B:(水题 5minAC)
// by Sirius_Ren #include <cstdio> #include <cstring> #include <algorithm> using namespace std; int n,a,ans=0; bool v[105]; int main(){ scanf("%d%d",&n,&a); for(int i=1;i<=n;i++)scanf("%d",&v[i]); for(int i=0;i<=n;i++){ if(a-i>0&&a+i<=n&&v[a-i]&&v[a+i]&&i)ans+=2; else if(a-i>0&&a+i<=n&&v[a-i]&&v[a+i]&&!i)ans++; else if(a-i<=0&&a+i<=n&&v[a+i])ans++; else if(a-i>0&&a+i>n&&v[a-i])ans++; } printf("%d",ans); }
C:一道数学题。
枚举50以内的素数,最后判断有没有i*i(i^2<50)的即可。
一个yes—>素数
否则—->合数
// by Sirius_Ren #include <cstdio> #include <iostream> using namespace std; int a[20]={2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,4,8,9,25,49},ans=0; char s[20][5]; int main() { for(int i=0;i<20;i++){printf("%d\n",a[i]);fflush(stdout);scanf("%s",s[i]);} for(int i=0;i<20;i++)if(s[i][0]=='y')ans++; if(ans>=2)printf("composite\n"); else printf("prime\n"); }
(呃其实没有“8”,当时多打了一个,不过也没关系,AC就是王道)
D:
http://www.cnblogs.com/macinchang/p/5572070.html
照着他的题解写得。 没有什么思路。。。。
// by Sirius_Ren #include <cstdio> #include <algorithm> using namespace std; long long a; long long p(long long x){return x*x*x;} pair<int,long long>b; void w(long long x,int y,long long z){ if(!x){b=max(b,make_pair(y,z));return;} long long t=1; while(p(t+1)<=x)++t; w(x-p(t),y+1,z+p(t)); if(x)w(p(t)-1-p(t-1),y+1,z+p(t-1)); } int main(){ scanf("%I64d",&a),w(a,0,0); printf("%d %I64d",b.first,b.second); }
E:第10个点WA了,并不知道怎么改。 大数据挂了。。。
// by Sirius_Ren #include <set> #include <queue> #include <cstdio> #include <algorithm> #define ff(aa,bb,cc,dd) for(int i=aa;i<=bb;i++)for(int j=cc;j<=dd;j++) #define f(aa,bb) for(int i=aa;i<=bb;i++) using namespace std; set<int>s; queue<int>que; set<int>::iterator it; int n,k,tot=0,jy,vis[501][501],v[500000],q[500000],ans=0,Q=0; char xx[]={1,-1,0,0},yy[]={0,0,1,-1},a[501][501]; void Dfs(int x,int y){ jy++,vis[x][y]=tot; f(0,3)if(!vis[x+xx[i]][y+yy[i]]&&a[x+xx[i]][y+yy[i]]=='.')Dfs(x+xx[i],y+yy[i]); } void dfs(int x,int y) { while(!que.empty())s.erase(que.front()),que.pop(); for(int i=0;i<k;i++) if(vis[x+i][y-1]) { q[vis[x+i][y-1]]--; if(!q[vis[x+i][y-1]])s.erase(vis[x+i][y-1]); } else if(a[x+i][y-1]=='X')jy--; for(int i=0;i<k;i++) if(vis[x+i][y+k-1]) { if(!q[vis[x+i][y+k-1]])s.insert(vis[x+i][y+k-1]); q[vis[x+i][y+k-1]]++; } else if(a[x+i][y+k-1]=='X')jy++; for(int i=0;i<k;i++)if(vis[x-1][y+i]&&s.find(vis[x-1][y+i])==s.end())s.insert(vis[x-1][y+i]),que.push(vis[x-1][y+i]); for(int i=0;i<k;i++)if(vis[x+k][y+i]&&s.find(vis[x+k][y+i])==s.end())s.insert(vis[x+k][y+i]),que.push(vis[x+k][y+i]); for(int i=0;i<k;i++)if(vis[x+i][y-1]&&s.find(vis[x+i][y-1])==s.end())s.insert(vis[x+i][y-1]),que.push(vis[x+i][y-1]); for(int i=0;i<k;i++)if(vis[x+i][y+k]&&s.find(vis[x+i][y+k])==s.end())s.insert(vis[x+i][y+k]),que.push(vis[x+i][y+k]); int temp=jy; for(it=s.begin();it!=s.end();it++)temp+=v[*it]; ans=max(ans,temp); if(y+k<=n)dfs(x,y+1); for(int i=0;i<k;i++) if(vis[x+i][y-1]) { if(!q[vis[x][i-1]])s.insert(vis[x][i-1]); q[vis[x][i-1]]++; } else if(a[x+i][y-1]=='X')jy++; for(int i=0;i<k;i++) if(vis[x+i][y+k-1]) { q[vis[x+i][y+k-1]]--; if(!q[vis[x+i][y+k-1]])s.erase(vis[x+i][y+k-1]); } else if(a[x+i][y+k-1]=='X')jy--; if(x+k<=n&&y==1) { for(int i=1;i<k;i++) { if(vis[x][i]) { q[vis[x][i]]--; if(!q[vis[x][i]])s.erase(vis[x][i]); } else if(a[x][i]=='X')jy--; } for(int i=1;i<k;i++) { if(vis[x+k][i]) { q[vis[x+k][i]]++; } else if(a[x+k][i]=='X')jy++; } dfs(x+1,1); } } int main(){ scanf("%d%d",&n,&k); ff(1,n,0,n)scanf("%c",&a[i][j]); ff(1,n,1,n)if(!vis[i][j]&&a[i][j]=='.')jy=0,tot++,Dfs(i,j),v[tot]=jy; jy=0; ff(1,k,1,k-1) if(a[i][j]=='X')jy++; else{ if(!q[vis[i][j]])s.insert(vis[i][j]); q[vis[i][j]]++; } dfs(1,1); printf("%d",ans); }
E题已挂。
相关文章推荐
- Flex Namespace的用法
- ajax使用不同namespace的action的方法
- 浅谈几种常见语言的命名空间(Namespace)
- thinkphp autoload 命名空间自定义 namespace
- PHP命名空间(namespace)的使用基础及示例
- php中namespace use用法实例分析
- C++ namespace相关语法实例分析
- PHP命名空间(Namespace)简明教程
- PHP命名空间(Namespace)的使用详解
- JavaScript创建命名空间(namespace)的最简实现
- ASP.Net中命名空间Namespace浅析和使用例子
- C++ 匿名namespace的作用以及它与static的区别
- 这个小例子也许能帮助大家理解一下SIGUSR1的用法
- 不要在头文件中使用 using
- Introducing Linux Network Namespaces
- network namespace与veth pair
- namespace的用法
- PHP的命名空间的实现
- 数据结构实验一
- Codeforces Round #197 (Div. 2)