20131006组队赛-Regionals 2010, Europe - Southeastern
来源:互联网 发布:全国中小学数据库 编辑:程序博客网 时间:2024/06/05 07:38
A. The Table
java题目,就是求每一列的数字的乘积,求最大的乘积的那一个列号:
代码:
import java.io.*;import java.math.*;import java.util.*;import java.text.*;public class Main{ public static void main(String[] args) { Scanner cin = new Scanner (new BufferedInputStream(System.in)); int a,b; BigInteger n; BigInteger array[]= new BigInteger[28]; while(cin.hasNext()) { for(int i=0;i<=25;i++) array[i]=BigInteger.valueOf(1); a=cin.nextInt(); b=cin.nextInt(); for(int j = 0; j < b; ++j) { for(int i = 0; i < a; ++i) { n = cin.nextBigInteger(); array[i] = array[i].multiply(n); } } BigInteger tt; tt = BigInteger.valueOf(1); tt = tt.multiply(array[0]); int tp = 1; for(int i = 1; i < a; ++i) { if(array[i].compareTo(tt)>=0) { tt = array[i]; tp = i+1; } } System.out.println(tp); } }}
E. Control Points
e题刚开始大家都在交,可是就是WA,后来说是精度的问题,神奇....
代码:
#include <iostream>#include <cstdio>#include <string>#include <string.h>#include <map>#include <vector>#include <cstdlib>#include <algorithm>#include <cmath>#include <queue>#include <set>#include <stack>#include <functional>#include <fstream>#include <sstream>#include <iomanip>#include <numeric>#include <cassert>#include <bitset>#include <stack>#include <ctime>#include <list>#define INF 0x7fffffff#define max3(a,b,c) (max(a,b)>c?max(a,b):c)#define min3(a,b,c) (min(a,b)<c?min(a,b):c)#define mem(a,b) memset(a,b,sizeof(a))#define maxn 100005#define eps 1e-9double num[maxn];using namespace std;int QuickMod(int a,int b,int n){ int r = 1; while(b) { if(b&1) r = (r*a)%n; a = (a*a)%n; b >>= 1; } return r;}int n;int main(){ while(scanf("%d",&n) == 1) { for(int i = 0; i < n; ++i) scanf("%lf",&num[i]); int ans = 1; double tp = num[0]; for(int i = 1; i < n; ++i) { if(num[i] - tp + eps >= 1.0) { tp = num[i]; ans++; } } printf("%d\n", ans); } return 0;}
G. Cosmic Station
这是我们最后A的题,就是说给你一个图的描述。然后对于叶子节点,给出它到后面剩余节点的中间经过的路径数。
问你这幅图里面有多少的内部节点。
我们开始一直在找规律,然后就一直不知道咋搞。其实我们可以这样想:对于给出的数字,我们可以一步一步的构
建出这个图。我们开始存在1到2的图,比如来第三个叶子节点的时候,那么我们就可以计算出1到3的距离和2到3的距
离,那么我们有(1->3)+(2->3)路径长度,然后我们剪掉1-2的路径,那么我们就会得到新添的3的对应的新增的路径
数的二倍。然后我们就可以得到对应的增加的内部节点的数目。然后对于每一个点都会有一个从1-此点和从某个已经
存在的点到此点的对应的增加的点数,这样一直求最小,就可以求出新增的点对应的增加的内部节点的数目。全部累
加起来就可以了:
代码:
#include <iostream>#include <cstdio>#include <string>#include <string.h>#include <map>#include <vector>#include <cstdlib>#include <algorithm>#include <cmath>#include <queue>#include <set>#include <stack>#include <functional>#include <fstream>#include <sstream>#include <iomanip>#include <numeric>#include <cassert>#include <bitset>#include <stack>#include <ctime>#include <list>#define INF 0x7fffffff#define max3(a,b,c) (max(a,b)>c?max(a,b):c)#define min3(a,b,c) (min(a,b)<c?min(a,b):c)#define mem(a,b) memset(a,b,sizeof(a))#define eps 1e-9using namespace std;int QuickMod(int a,int b,int n){ int r = 1; while(b) { if(b&1) r = (r*a)%n; a = (a*a)%n; b >>= 1; } return r;}#define maxn 1050int num[maxn][maxn];int main(){ int n; int t; scanf("%d", &t); while(t--) { scanf("%d", &n); for(int i = 1; i < n; ++i) { for(int j = i+1; j <= n; ++j) { scanf("%d", &num[i][j]); num[j][i] = num[i][j]; } } int ans = 0; ans = num[1][2] - 1; for(int i = 3; i <= n; ++i) { int L = INF; for(int j = 2; j < i; ++j) { L = min(L, num[i][j] + num[1][i] - num[1][j]); } ans += (L/2-1); } cout << ans << endl; } return 0;}
H. Game
这是一道博弈的题目,先一直在搞A的JAVA,没有搞,结果大家都过了,就赶紧过来弄。刚开始就简单考虑了一下拿
走的情况WA了。其实就是在判断后面的点的胜负状态的时候需要用到前面的结果。记忆化搜索,对于每一个点,他都
有每行和每列的情况,当我们面对一个点的时候,我们需要用前面的点来决断当前的点的胜负状态。如果前面的点是
必败态,那么我们这一点就是必胜态。对于行和列我们都会影响到当前点的状态。只要有一种情况使得当前点必胜,
那么此点的状态就是必胜态。
代码:
#include <iostream>#include <cstdio>#include <string>#include <string.h>#include <map>#include <vector>#include <cstdlib>#include <algorithm>#include <cmath>#include <queue>#include <set>#include <stack>#include <functional>#include <fstream>#include <sstream>#include <iomanip>#include <numeric>#include <cassert>#include <bitset>#include <stack>#include <ctime>#include <list>#define INF 0x7fffffff#define max3(a,b,c) (max(a,b)>c?max(a,b):c)#define min3(a,b,c) (min(a,b)<c?min(a,b):c)#define mem(a,b) memset(a,b,sizeof(a))#define eps 1e-9using namespace std;int QuickMod(int a,int b,int n){ int r = 1; while(b) { if(b&1) r = (r*a)%n; a = (a*a)%n; b >>= 1; } return r;}#define maxn 1005int num[maxn][maxn];int NUM[maxn][maxn];int ans[maxn][maxn];int n;void init(){ memset(num, 0, sizeof(num)); memset(NUM, 0, sizeof(NUM)); memset(ans, 0, sizeof(ans));}int solve(){ for(int i = 1; i <= n; ++i) { for(int j = 1; j <= n; ++j) { NUM[i][j] = NUM[i][j-1]^num[i][j]; } } for(int i = 1; i <= n; ++i) { for(int j = 1; j <= n; ++j) num[i][j] ^= num[i-1][j]; } for(int i = 1; i <= n; ++i) { for(int j = 1; j <= n; ++j) { ans[i][j] = 0; if(!num[i][j] && !ans[i][j-1]) ans[i][j] = 1; if(!NUM[i][j] && !ans[i-1][j]) ans[i][j] = 1; } } if(ans[n][n])return 1; else return 0;}int main(){ while(scanf("%d", &n) == 1) { int tt; init(); for(int i = 1; i <= n; ++i) { for(int j = 1; j <= n; ++j) { scanf("%d", &tt); num[i][j] = (tt&1); } } int ans = solve(); if(ans)printf("W\n"); else printf("L\n"); } return 0;}
J. Shares
这是签到题中的签到题,直接求输入的两个数字a,b->b/(a+1):
代码:
#include <iostream>#include <cstdio>#include <string>#include <string.h>#include <map>#include <vector>#include <cstdlib>#include <algorithm>#include <cmath>#include <queue>#include <set>#include <stack>#include <functional>#include <fstream>#include <sstream>#include <iomanip>#include <numeric>#include <cassert>#include <bitset>#include <stack>#include <ctime>#include <list>#define INF 0x7fffffff#define max3(a,b,c) (max(a,b)>c?max(a,b):c)#define min3(a,b,c) (min(a,b)<c?min(a,b):c)#define mem(a,b) memset(a,b,sizeof(a))#define eps 1e-9using namespace std;int QuickMod(int a,int b,int n){ int r = 1; while(b) { if(b&1) r = (r*a)%n; a = (a*a)%n; b >>= 1; } return r;}int main(){ int A, B; while(scanf("%d%d", &A, &B) == 2) printf("%d\n", B/(A+1));}
- 20131006组队赛-Regionals 2010, Europe - Southeastern
- 组队赛131006 Regionals 2010, Europe - Southeastern
- 20131005组队赛-Regionals 2010, Europe - Southwestern
- ACM Regionals 2004 Europe - Southeastern 最大子矩阵(扫描法)
- Bits Equalizer 组队赛第二场Regionals 2012, Europe - Southwestern B题
- Sentry Robots 组队赛第二场 Regionals 2012, Europe - Southwestern F题
- 组队赛131005 Southwestern Europe Regional, SWERC 2010
- 20131004组队赛-Regionals 2010, North America - East Central NA
- 组队赛131004 Regionals 2010, North America - East Central NA
- 20130830组队赛-Regionals 2012, Asia - Jakarta
- 130829组队赛-Regionals 2012, Asia - Jakarta
- 20130902组队赛Regionals 2012, Latin America
- 130902组队赛-Regionals 2012, Latin America
- Regionals 2012, Asia - Hatyai 组队赛130912
- 20130918组队赛Regionals 2011, Asia - Kanpur
- 20130924组队赛-Regionals 2011, Asia - Fukuoka
- 20130926组队赛-Regionals 2011, Latin America
- 组队赛130926 Regionals 2011, Latin America
- Mahout协同过滤算法源码分析(3-3)QR分解数据流
- 注重实效的程序员读书笔记
- RFC822格式转换为date并算出毫秒数
- hdu 4056 并查集处理线段树染色问题
- hdu_2768 Cat vs. Dog 最大独立集
- 20131006组队赛-Regionals 2010, Europe - Southeastern
- ExtJS02:GridPanel中防止重复添加
- ExtJS03:Grid表格中删除一行问题
- mpich+blas+hpl 集群配置
- Windows编程中关于打开对话框的操作
- 黑马程序员-JAVA对象封装构造
- CentOS6.4 安装配置gcc-4.8.1
- Cannot instantiate the type List<Product>
- ExtJS04:解决URL传递中文乱码问题