2014年携程程序设计大赛 预赛第一场 A,B,C
来源:互联网 发布:香港好用的化妆水知乎 编辑:程序博客网 时间:2024/04/29 00:50
A.
题解:
反面来想...一个数列如果到不了-1..说明这个数列所有数的最大公约数不是1...所以用B^A-到不了的数目=答案..
Program:
#include<iostream>#include<algorithm>#include<stdio.h>#include<queue>#include<stack>#include<map>#include<set>#define ll long long#define oo 1<<29#define MAXN 100000+5using namespace std;ll sum,A,B,P[21]={0,2,3,5,7,11,13,17,19,23};int gcd(int a,int b){ if (a%b==0) return b; return gcd(b,a%b);}ll POW(ll p,int k){ ll x=1; while (k--) x*=p; return x; }void dfs(ll now,ll data,ll num){ ll m=0,j; if (B%data!=0) return; for (j=data;j<=B;j++) if (j%data==0) m++; if (num%2) sum+=POW(m,A); else sum-=POW(m,A); for (now=now+1;now<=8;now++) dfs(now,data*P[now],num+1); }int main(){ ll k,x; freopen("input.txt","r",stdin); freopen("output.txt","w",stdout); scanf("%I64d",&k); while (k--) { scanf("%I64d%I64d",&A,&B); sum=0; for (x=1;x<=8;x++) dfs(x,P[x],1); printf("%I64d\n",POW(B,A)-sum); } return 0;}
B.
题解:
很简单的二位dp..dp[l][r]代表区间[l,r]为一个合法的括号序列所需要加的最少括号..
Program:
#include<iostream>#include<algorithm>#include<string.h>#include<stdio.h>#include<queue>#include<stack>#include<map>#include<set>#define ll long long#define oo 1<<29#define MAXN 100+5using namespace std; int dp[MAXN][MAXN];char s[MAXN];int count(int l,int r){ if (s[l]=='(' && s[r]==')') return 0; if (s[l]=='[' && s[r]==']') return 0; return 2;}int main(){ int k,len,LEN,x,l,r,i; freopen("input.txt","r",stdin); freopen("output.txt","w",stdout); scanf("%d",&k); while (k--) { scanf("%s",s+1); len=strlen(s+1); memset(dp,0x7f,sizeof(dp)); for (x=1;x<=len;x++) dp[x][x]=1,dp[x+1][x]=0; for (LEN=1;LEN<len;LEN++) for (x=1;x<=len-LEN;x++) { l=x,r=x+LEN; dp[l][r]=dp[l+1][r-1]+count(l,r); dp[l][r]=min(dp[l][r],dp[l+1][r]+1); dp[l][r]=min(dp[l][r],dp[l][r-1]+1); for (i=l;i<r;i++) dp[l][r]=min(dp[l][r],dp[l][i]+dp[i+1][r]); } printf("%d\n",dp[1][len]); } return 0;}
C.
题解:
主要是要算下球面距离公式.然后就是裸的最小生成树了.
Program:
#include<iostream>#include<algorithm>#include<string.h>#include<stdio.h>#include<queue>#include<cmath>#include<stack>#include<map>#include<set>#define ll long long#define oo 1<<29#define MAXN 100+5#define eps 1e-5using namespace std; const double pi=3.14159265358979323846;struct point{ double x,y;}P[MAXN];double D,L,sum,m,A[MAXN][MAXN];bool used[MAXN];double calc(point a,point b){ double ans=(D/2)*acos(sin(a.x)*sin(b.x)+cos(a.x)*cos(b.x)*cos(a.y-b.y)); return ans;}int main(){ int k,C,t,i,j,x; freopen("input.txt","r",stdin); freopen("output.txt","w",stdout); scanf("%d",&k); while (k--) { scanf("%lf%lf",&D,&L); scanf("%d",&C); for (i=1;i<=C;i++) { scanf("%lf%lf",&P[i].x,&P[i].y); P[i].x=P[i].x/180*pi; P[i].y=P[i].y/180*pi; } for (i=1;i<=C;i++) for (j=1;j<=C;j++) A[i][j]=calc(P[i],P[j]); sum=0; memset(used,0,sizeof(used)); used[1]=true; for (t=2;t<=C;t++) { m=-1; for (i=1;i<=C;i++) if (used[i]) for (j=1;j<=C;j++) if (!used[j]) if (A[i][j]<m || m<0) m=A[i][j],x=j; sum+=m; used[x]=true; } if (L>=sum) puts("Y"); else puts("N"); } return 0;}
0 0
- 2014年携程程序设计大赛 预赛第一场 A,B,C
- CodingTrip - 携程编程大赛 (预赛第一场)
- CodingTrip - 携程编程大赛 (预赛第一场)
- 携程编程大赛 (预赛第一场)
- CodingTrip - 携程编程大赛 (预赛第一场)
- C程序设计大赛B题
- 携程编程大赛 (预赛第一场)1004旋转的二进制
- CodingTrip - 携程编程大赛 (预赛第一场) 括号匹配
- CodingTrip - 携程编程大赛 (预赛第一场)旋转的二进制
- CodingTrip - 携程编程大赛 (预赛第一场)第四题
- CodingTrip - 携程编程大赛 (预赛第一场)第三题 携程全球数据中心建设
- CodingTrip - 携程编程大赛 (预赛第一场)第二题 括号匹配
- CodingTrip - 携程编程大赛 (预赛第一场) :1002 括号匹配
- 携程编程大赛 (预赛第二场)第一题【剪刀石头布】
- 百度之星2009程序设计大赛 初赛第一场试题
- 携程编程大赛预赛第二场
- 2014 编程之美 预赛第一场 活动中心 三分
- 2014 蓝桥杯 预赛 c/c++ 本科B组 第一题:啤酒和饮料(4' )
- 第六周
- ubuntu安装SVN并设置开机启动
- 代码面试最常用的10大算法
- QWidget.QDialog.QMainWindow初步了解
- 无法将类型为Microsoft.office.interop.Excel.ApplicationClass的COM对象强制转换为Microsoft.office.interop.Excel._Appl
- 2014年携程程序设计大赛 预赛第一场 A,B,C
- 转载 由笑话体悟人生
- C语言学习之extern "C"
- fcitx ----------------------------------
- poj-Relatives(欧拉函数)
- 怎样将Oracle一张表的多个字段更新到另一张表中去
- tomcat启动后马上又自动关闭的问题
- 大汉版通JCMS扩展功能链接地址
- java 连接飞信API