Codeforces Beta Round#2

http://codeforces.com/contest/2

A

模拟题

 #include<bits/stdc++.h>
using namespace std;
typedef long long ll; map<string,ll>mp;
struct sair{
string str;
int id;
ll num;
}a[]; bool cmp(sair a,sair b){
if(a.num==b.num) return a.id<b.id;
return a.num>b.num;
} int main(){ int n;
cin>>n;
string ans;
ll Max=-0x3f3f3f3f;
for(int i=;i<=n;i++){
cin>>a[i].str>>a[i].num;
a[i].id=i;
}
for(int i=;i<=n;i++){
mp[a[i].str]+=a[i].num;
a[i].num=mp[a[i].str];
}
for(int i=;i<=n;i++){
if(mp[a[i].str]>Max){
Max=mp[a[i].str];
}
}
sort(a+,a+n+,cmp);
map<string,ll>tmp;
for(int i=;i<=n;i++){
if(mp[a[i].str]==Max){
tmp[a[i].str]=;
}
}
int idmin=0x3f3f3f3f;
for(int i=;i<=n;i++){
if(tmp[a[i].str]==){
if(idmin>a[i].id&&a[i].num>=Max){
idmin=a[i].id;
ans=a[i].str;
}
}
}
cout<<ans<<endl;
//system("pause"); }

B

DP

能让末尾有0的情况是由2的倍数和5的倍数相乘,所以只要预处理出每个数中因子为2的个数和因子为5的个数,取最小值DP即可

 #include<bits/stdc++.h>
using namespace std;
#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1
typedef long long ll; int n;
int dp[][][];///dp[i][j][0] 表示2的数量,dp[i][j][1] 表示5的数量
int pre[][][]; void print(int i,int j,int k,int flag){
if(i==&&j==);
else if(i==) print(i,j-,k,);
else if(j==) print(i-,j,k,);
else{
if(dp[i][j][k]==dp[i][j-][k]+pre[i][j][k])
print(i,j-,k,);
else
print(i-,j,k,);
}
if(flag==) return;
cout<<(flag?"D":"R");
} int main(){
#ifndef ONLINE_JUDGE
freopen("1.txt","r",stdin);
#endif
std::ios::sync_with_stdio(false);
cin>>n;
int num,tmp;
int x=-,y=-;
memset(dp,0x3f,sizeof(dp));
for(int i=;i<=n;i++){
for(int j=;j<=n;j++){
cin>>num;
if(!num){
pre[i][j][]++;
pre[i][j][]++;
x=i,y=j;
continue;
}
tmp=num;
while(tmp%==){
pre[i][j][]++;
tmp/=;
}
tmp=num;
while(tmp%==){
pre[i][j][]++;
tmp/=;
}
}
} for(int i=;i<=n;i++){
for(int j=;j<=n;j++){
for(int k=;k<;k++){
if(i>){
dp[i][j][k]=min(dp[i][j][k],dp[i-][j][k]);
}
if(j>){
dp[i][j][k]=min(dp[i][j][k],dp[i][j-][k]);
}
if( i== && j== ){
dp[i][j][k]=;
}
dp[i][j][k]+=pre[i][j][k];
}
}
}
int ans=min(dp[n][n][],dp[n][n][]);
if(x!=-&&y!=-&&ans>=){
cout<<<<endl;
for(int i=;i<x;i++){
cout<<"D";
}
for(int i=;i<y;i++){
cout<<"R";
}
for(int i=x;i<n;i++){
cout<<"D";
}
for(int i=y;i<n;i++){
cout<<"R";
}
cout<<endl;
}
else{
cout<<ans<<endl;
if(dp[n][n][]>dp[n][n][]){
print(n,n,,);
}
else{
print(n,n,,);
}
cout<<endl;
}
return ;
}

C

几何题+模拟退火

题意: 找一个点对每个圆切线的角度一样,如果有多个,就找角度最大的点

思路:asin(L/r)  只要L/r一样,它们的角度一定一样,所以用模拟退火枚举就好,感觉和2018icpc南京站的题很像

 #include<bits/stdc++.h>
using namespace std;
#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1
#define sqr(x) ((x)*(x))
typedef long long ll; struct circle{
double x,y,r;
}c[]; double angle[]; double Check(double x,double y){
for(int i=;i<;i++){
angle[i]=sqrt(sqr(x-c[i].x)+sqr(y-c[i].y))/c[i].r;
}
double ans=;
for(int i=;i<;i++){
ans+=sqr(angle[i]-angle[(i+)%]);
}
return ans;
} int main(){
#ifndef ONLINE_JUDGE
freopen("1.txt","r",stdin);
#endif
for(int i=;i<;i++){
scanf("%lf %lf %lf",&c[i].x,&c[i].y,&c[i].r);
}
double ansx,ansy;
ansx=(c[].x+c[].x+c[].x)/;
ansy=(c[].y+c[].y+c[].y)/;
double step=1.0;
int flag;
double tmp;
while(step>1e-){
flag=;
tmp=Check(ansx,ansy);
if(tmp>Check(ansx+step,ansy)) ansx+=step,flag=;
else if(tmp>Check(ansx-step,ansy)) ansx-=step,flag=;
else if(tmp>Check(ansx,ansy+step)) ansy+=step,flag=;
else if(tmp>Check(ansx,ansy-step)) ansy-=step,flag=;
if(!flag) step*=0.8;
}
if(Check(ansx,ansy)<1e-) printf("%.6f %.6f\n",ansx,ansy); }

Codeforces Beta Round#2的更多相关文章

  1. Codeforces Beta Round #80 (Div. 2 Only)【ABCD】

    Codeforces Beta Round #80 (Div. 2 Only) A Blackjack1 题意 一共52张扑克,A代表1或者11,2-10表示自己的数字,其他都表示10 现在你已经有一 ...

  2. Codeforces Beta Round #62 题解【ABCD】

    Codeforces Beta Round #62 A Irrational problem 题意 f(x) = x mod p1 mod p2 mod p3 mod p4 问你[a,b]中有多少个数 ...

  3. Codeforces Beta Round #83 (Div. 1 Only)题解【ABCD】

    Codeforces Beta Round #83 (Div. 1 Only) A. Dorm Water Supply 题意 给你一个n点m边的图,保证每个点的入度和出度最多为1 如果这个点入度为0 ...

  4. Codeforces Beta Round #13 C. Sequence (DP)

    题目大意 给一个数列,长度不超过 5000,每次可以将其中的一个数加 1 或者减 1,问,最少需要多少次操作,才能使得这个数列单调不降 数列中每个数为 -109-109 中的一个数 做法分析 先这样考 ...

  5. Codeforces Beta Round #79 (Div. 2 Only)

    Codeforces Beta Round #79 (Div. 2 Only) http://codeforces.com/contest/102 A #include<bits/stdc++. ...

  6. Codeforces Beta Round #77 (Div. 2 Only)

    Codeforces Beta Round #77 (Div. 2 Only) http://codeforces.com/contest/96 A #include<bits/stdc++.h ...

  7. Codeforces Beta Round #76 (Div. 2 Only)

    Codeforces Beta Round #76 (Div. 2 Only) http://codeforces.com/contest/94 A #include<bits/stdc++.h ...

  8. Codeforces Beta Round #75 (Div. 2 Only)

    Codeforces Beta Round #75 (Div. 2 Only) http://codeforces.com/contest/92 A #include<iostream> ...

  9. Codeforces Beta Round #74 (Div. 2 Only)

    Codeforces Beta Round #74 (Div. 2 Only) http://codeforces.com/contest/90 A #include<iostream> ...

随机推荐

  1. Java堆外内存之五:堆外内存管理类ByteBuffer

    本篇主要讲解如何使用直接内存(堆外内存),并按照下面的步骤进行说明: 相关背景-->读写操作-->关键属性-->读写实践-->扩展-->参考说明 希望对想使用直接内存的朋 ...

  2. [转]常用字符与ASCII代码对照表

    常用字符与ASCII代码对照表 为了便于查询,以下列出ASCII码表:第128-255号为扩展字符(不常用) ASCII码 键盘 ASCII 码 键盘 ASCII 码 键盘 ASCII 码 键盘 27 ...

  3. 用HTML5播放IPCamera视频

    HTML5增加了vedio标签,能直接播放视频,但是播放的格式是有限的. 这里将IPCamera的视频转换OGG格式,再通过HTML5网页播放,播放还是很清晰的.IPCamera要支持RTSP等视频流 ...

  4. Matlab2013a打开M文件乱码解决

    win10开发者英文版x64    Matlab2013a 解决方法:format改为chinese 

  5. 【BZOJ】1101 [POI2007]Zap(莫比乌斯反演)

    题目 传送门:QWQ 分析 莫比乌斯反演. 还不是很熟练qwq 代码 //bzoj1101 //给出a,b,d,询问有多少对二元组(x,y)满足gcd(x,y)=d.x<=a,y<=b # ...

  6. Hive基础之Hive的存储类型

    Hive常用的存储类型有: 1.TextFile: Hive默认的存储类型:文件大占用空间大,未压缩,查询慢: 2.Sequence File:将属于以<KEY,VALUE>的形式序列化到 ...

  7. 学习MongoDB 二:MongoDB添加、删除、修改

    一.简介 MongoDB是一个高性能,开源,无模式的文档型数据库,是当前NoSQL数据库产品中最热门的一种.数据被分组存储在数据集中,被称为一个集合(Collenction)和对于存储在MongoDB ...

  8. PHP图片压缩

    <?php /** * 分享请保持网址.尊重别人劳动成果.谢谢. * 图片压缩类:通过缩放来压缩.如果要保持源图比例,把参数$percent保持为1即可. * 即使原比例压缩,也可大幅度缩小.数 ...

  9. three3D地图设置两点之间的连线

    点:可以用THREE.Vector3D来表示 现在来看看怎么定义个点,假设有一个点x=4,y=8,z=9.你可以这样定义它: var point1 = new THREE.Vecotr3(4,8,9) ...

  10. java 执行sql错误 传入的表格格式数据流(TDS)远程过程调用(RPC)协议流不正确。参数 1 (""): 数据类型 0x38 未知

    连接数据库时设置:Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE ,ResultSet.CONCUR_R ...