codeforces round #332
2015-11-21 16:33
337 查看
A题讨论四种情况就行,不多说。
B题建立hash表就行了,找不到就是impossible,对应的坐标多了就是第二种,否则就是第一种,输出就行了,
代码写的有点乱:
其实只要判断每个位置的前面最大数小于等于后面的最小数就行了,赶紧写了一发AC,悔恨啊。
然后可以发现n已知的情况下,公式对于n来说是一个一次方程,同时知道答案是对称的,只需要求n<=m的情况,n>m的情况添加进去就行了。
这题总的来说就是一个数学题,而且公式很容易想到,关键是去拆开,当时早知道先做这个题了。
具体细节看代码:
B题建立hash表就行了,找不到就是impossible,对应的坐标多了就是第二种,否则就是第一种,输出就行了,
代码写的有点乱:
#include<iostream> #include<cstdio> #include<cstring> #include<string> #include<queue> #include<set> #include<algorithm> #include<cmath> #include<cstdlib> #include<map> #define LL __int64 using namespace std; const double pi=acos(-1.0); const int N=1e5+10; int hash ,re ,a ,b ; int main() { int n,m; while(cin>>n>>m){ memset(hash,0,sizeof(hash)); int flag=1; for(int i=1;i<=n;i++) { int x; scanf("%d",&x); if(hash[x]!=0) hash[x]=-1; else hash[x]=i; } for(int i=1;i<=m;i++) scanf("%d",&b[i]); for(int i=1;i<=m;i++) re[i]=hash[b[i]]; for(int i=1;i<=m;i++) { if(re[i]==-1) flag=2; } for(int i=1;i<=m;i++) if(re[i]==0) flag=0; if(flag==1) { cout<<"Possible"<<endl; for(int i=1;i<m;i++) cout<<re[i]<<' '; cout<<re[m]<<endl; } else if(!flag) cout<<"Impossible"<<endl; else cout<<"Ambiguity"<<endl; } return 0; }C题其实也不难,当时有点乱了,其实就差一步就对了,我想的是判断每一个位置前面的最大数,和后面的最小数,然后就乱了,
其实只要判断每个位置的前面最大数小于等于后面的最小数就行了,赶紧写了一发AC,悔恨啊。
#include<iostream> #include<cstdio> #include<cstring> #include<string> #include<queue> #include<set> #include<algorithm> #include<cmath> #include<cstdlib> #include<map> #define LL __int64 using namespace std; const double pi=acos(-1.0); const int N=1e5+10; int a ,b ,c ; int main() { int n; while(cin>>n) { memset(b,0,sizeof(b)); memset(c,0,sizeof(c)); int sum=0; for(int i=0;i<n;i++) scanf("%d",&a[i]); int ans=0; for(int i=0;i<n;i++) { ans=max(a[i],ans); b[i]=ans; } ans=(int)1e9+10; for(int i=n-1;i>=0;i--) { c[i]=ans; ans=min(a[i],ans); } // for(int i=0;i<n;i++) // cout<<b[i]<<' '<<c[i]<<endl; for(int i=0;i<n;i++) if(b[i]<=c[i]) sum++; cout<<sum<<endl; } return 0; }D题其实也不难,很容易可以想到求一个矩形内部包含的正方形的公式,然后把公式展开,就可以知道n只需要枚举到n的1/3次方即可,
然后可以发现n已知的情况下,公式对于n来说是一个一次方程,同时知道答案是对称的,只需要求n<=m的情况,n>m的情况添加进去就行了。
这题总的来说就是一个数学题,而且公式很容易想到,关键是去拆开,当时早知道先做这个题了。
具体细节看代码:
相关文章推荐
- [笔记] Convex Optimization 2015.11.18
- 索引 概述
- Markdown简介
- 在Linux里设置环境变量的方法(export PATH)
- 话说正确率、召回率和F值
- win7系统怎么用笔记本做wifi热点
- Loadrunner11不能调用IE8解决方法大全
- python模块之JSON
- centos6.5安装Mysql5.6版本
- NYOJ 17 单调递增最长子序列(LIS)
- AnkhSVN 安装
- android handler机制简单介绍
- C语言简单实现接口
- 神经网络训练中的训练集、验证集以及测试集合
- Android SharePreference框架Favor详解
- tomcat无法启动问题
- Android Studio 打包、生成jks密钥、签名Apk、多渠道打包
- 二叉树已知先序序列(后序序列)、中序序列求解后序序列(先序序列)
- web service系列二(几个广义的web service实现).md
- 补间动画