ACM ICPC 2017 Warmup Contest 4(ACM Northeastern European Regional Contest,Northern Subregion 2015)
来源:互联网 发布:嗨氏黑历史知乎 编辑:程序博客网 时间:2024/05/24 01:50
返校后的第一场,还是只做了三题水题,对于字符串,又放弃了,趁这段时间还是得看看,虽然不主攻这方面,但做一个完全盲,无法与队友交流也不好啊
先看看这三个水题吧
A. Alex Origami Squares
思路:将一个矩形内分割出三个同样大小的正方形,由于同样大小和并且是边长相同的正方形而且确定了数目为三个,那么一切都变得简单了,三个正方形只有1*3,2*2,3*1三种摆法,将这三种取个最大值即可
#include <iostream>#include <cstdio>#include <algorithm>#include <vector>#include <cstring>#include <map>#include <cmath>#include <string>#include <queue>#include <stack>using namespace std;const int maxn = 1e5+10;int main(){ int h,w; while(scanf("%d%d",&h,&w)!=EOF) { double dh = h; double dw = w; double d1 = min(dw,dh/3); double d2 = min(dh,dw/3); double d12 = max(d1,d2); double d3 = min(dw/2,dh/2); double dd = max(d12,d3); printf("%.6lf\n",dd); } return 0;}
L. Lucky Chances
思路:又是一个遍历搜索的问题,一开始把数据范围看错了,一维是1e3的于是直接将自己想到的O(n^3)的算法否定了,想着先O(n^2)预处理每个位置四个方向的最大值,即是否可以取该方向,然后再O(n^2)判断一遍,后来发现数据范围只有1e2,O(n^3)的暴力也完全可以,其实也无妨,写个预处理也并没有花费太多时间,就这样吧,反正过了就好
#include <iostream>#include <cstdio>#include <algorithm>#include <vector>#include <cstring>#include <map>#include <cmath>#include <string>#include <queue>#include <stack>using namespace std;const int maxn = 1e3+10;int l[maxn][maxn];bool up[maxn][maxn];bool down[maxn][maxn];bool rig[maxn][maxn];bool lef[maxn][maxn];int main(){ int r,c; while(scanf("%d%d",&r,&c)!=EOF) { memset(up,false,sizeof(up)); memset(down,false,sizeof(down)); memset(rig,false,sizeof(rig)); memset(lef,false,sizeof(lef)); for(int i=0;i<r;i++) { for(int j=0;j<c;j++) { scanf("%d",&l[i][j]); } } for(int i=0;i<r;i++) { int maxl = 0; for(int j=0;j<c;j++) { if(l[i][j]>maxl) { lef[i][j] = true; maxl = l[i][j]; } } maxl = 0; for(int j=c-1;j>=0;j--) { if(l[i][j]>maxl) { rig[i][j] = true; maxl = l[i][j]; } } } for(int j=0;j<c;j++) { int maxl = 0; for(int i=0;i<r;i++) { if(l[i][j]>maxl) { up[i][j] = true; maxl = l[i][j]; } } maxl = 0; for(int i=r-1;i>=0;i--) { if(l[i][j]>maxl) { down[i][j] = true; maxl = l[i][j]; } } } int sum = 0; for(int i=0;i<r;i++) { for(int j=0;j<c;j++) { if(up[i][j]) { sum++; } if(down[i][j]) { sum++; } if(lef[i][j]) { sum++; } if(rig[i][j]) { sum++; } } } printf("%d\n",sum); } return 0;}
E. Easy Arithmetic
思路:这是一个细节题,改写数学表达式,可以合法地添加任意符合使表达式值最大,那么思路很简单,“+”后面肯定不用动,毕竟越加越大,“-”后面肯定要填“+”,一开始想了好多细节,后来发现越细越容易出错,越容易有疏漏,归一化处理,才会比较容易考虑全面。最后的思路就是,寻找到“-”,在“-”后面第二个数字开始计算,找到第一个不为0的数,在该数和其前面的0前都添加“+”就可以了,如此归一化成一个完整操作,注意一下全0的提前终止就好了,最后,一定要注意char型字符‘0’和整型数字0的区别,确实有坑
#include <iostream>#include <cstdio>#include <algorithm>#include <vector>#include <cstring>#include <map>#include <cmath>#include <string>#include <queue>#include <stack>using namespace std;const int maxn = 1e5+10;char s[maxn];bool add[maxn];int main(){ while(scanf("%s",s)!=EOF) { memset(add,false,sizeof(add)); int len = strlen(s); for(int sta=0;sta<len;sta++) { if(s[sta] == '-') { int pos = sta+1; if(pos==len-1) { break; } else if(s[pos+1]>='0'&&s[pos+1]<='9') { while(pos+1<len&&s[pos+1]=='0') { pos++; add[pos] = true; } if((pos+1 < len) && (s[pos+1]>'0')&& (s[pos+1] <= '9')) { //cout << pos <<"*"<< endl; //cout << s[pos+1] << endl; //cout << (s[pos+1]>'0')<<"*"<< (s[pos+1] <= '9') << endl; add[pos+1] = true; pos++; } } sta = pos; } } for(int p=0;p<len;p++) { if(add[p]) { printf("+"); } printf("%c",s[p]); } printf("\n"); } return 0;}
文章地址:http://blog.csdn.net/owen_q/article/details/78171645
阅读全文
1 0
- ACM ICPC 2017 Warmup Contest 4(ACM Northeastern European Regional Contest,Northern Subregion 2015)
- ACM ICPC 2017 Warmup Contest 2(ACM Northeastern European Regional Contest,Northern Subregion 2016)
- 2017-2018 ACM-ICPC Northern Eurasia (Northeastern European Regional) Contest (NEERC 17) A
- 2014-2015 ACM-ICPC Northeastern European Regional Contest (NEERC 14)
- 2015-2016 ACM-ICPC Northeastern European Regional Contest (NEERC 15)
- 2014-2015 ACM-ICPC Northeastern European Regional Contest (NEERC 14) 解题报告
- 2015-2016 ACM-ICPC Northeastern European Regional Contest (NEERC 15)题解
- 2016-2017 ACM-ICPC Northeastern European Regional Contest (NEERC 16) Gym
- 2016-2017 ACM-ICPC Northeastern European Regional Contest (NEERC 16) Gym
- Gym 101334(ACM ICPC 2005–2006, Northeastern European Regional Contest)
- 2008-2009 ACM-ICPC Northeastern European Regional Contest (NEERC 08) (2013区域赛练习)
- Gym 101308(ACM ICPC 2009–2010, Northeastern European Regional Contest)
- 2010-2011 ACM-ICPC Northeastern European Regional Contest (NEERC 10) G
- 并查集 xtu-2170 ACM ICPC 2011–2012, Northeastern European Regional Contest Problem E. Eve
- ACM ICPC 2017 Warmup Contest 1
- ACM ICPC 2017 Warmup Contest 5
- ACM ICPC 2017 Warmup Contest 6 G
- 计蒜客 ACM-ICPC 2017 Warmup Contest 12
- HDU 4804 Campus Design 状压DP
- Java数据结构与算法
- Java构造方法
- hamming distance(汉明距离)
- Java:二叉树的递归遍历
- ACM ICPC 2017 Warmup Contest 4(ACM Northeastern European Regional Contest,Northern Subregion 2015)
- 第7周实践项目2.2 求解报数问题
- 安全性、可靠性及性能评价总结
- 【超分辨率】FSRCNN--Accelerating the Super-Resolution Convolutional Neural Network
- Miller-Rabin
- Portlet 通信(二) Portlet URL
- Python Re正则表达式
- java-web开发学习路线参考
- JZOJ 5398. 【NOIP2017提高A组模拟10.7】Adore