Codeforces Beta Round#2
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的更多相关文章
- Codeforces Beta Round #80 (Div. 2 Only)【ABCD】
Codeforces Beta Round #80 (Div. 2 Only) A Blackjack1 题意 一共52张扑克,A代表1或者11,2-10表示自己的数字,其他都表示10 现在你已经有一 ...
- 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]中有多少个数 ...
- Codeforces Beta Round #83 (Div. 1 Only)题解【ABCD】
Codeforces Beta Round #83 (Div. 1 Only) A. Dorm Water Supply 题意 给你一个n点m边的图,保证每个点的入度和出度最多为1 如果这个点入度为0 ...
- Codeforces Beta Round #13 C. Sequence (DP)
题目大意 给一个数列,长度不超过 5000,每次可以将其中的一个数加 1 或者减 1,问,最少需要多少次操作,才能使得这个数列单调不降 数列中每个数为 -109-109 中的一个数 做法分析 先这样考 ...
- Codeforces Beta Round #79 (Div. 2 Only)
Codeforces Beta Round #79 (Div. 2 Only) http://codeforces.com/contest/102 A #include<bits/stdc++. ...
- Codeforces Beta Round #77 (Div. 2 Only)
Codeforces Beta Round #77 (Div. 2 Only) http://codeforces.com/contest/96 A #include<bits/stdc++.h ...
- Codeforces Beta Round #76 (Div. 2 Only)
Codeforces Beta Round #76 (Div. 2 Only) http://codeforces.com/contest/94 A #include<bits/stdc++.h ...
- Codeforces Beta Round #75 (Div. 2 Only)
Codeforces Beta Round #75 (Div. 2 Only) http://codeforces.com/contest/92 A #include<iostream> ...
- Codeforces Beta Round #74 (Div. 2 Only)
Codeforces Beta Round #74 (Div. 2 Only) http://codeforces.com/contest/90 A #include<iostream> ...
随机推荐
- ie下 iframe在页面中显示白色背景 如何去掉的问题
ie下:
- Hadoop 2.7.3 分布式集群安装
1. 集群规划: 192.168.1.252 palo252 Namenode+Datanode 192.168.1.253 palo253 YarnManager+Datanode+Secondar ...
- AFNetworkingErrorDomain 错误解决方法
首先我们来看一下错误信息: Error Domain=AFNetworkingErrorDomain Code=-1011 "Expected status code in (200-299 ...
- MySQL 删除数据库的两种方法
使用 mysqladmin 删除数据库 使用普通用户登陆mysql服务器,你可能需要特定的权限来创建或者删除 MySQL 数据库. 所以我们这边使用root用户登录,root用户拥有最高权限,可以使用 ...
- DRL 教程 | 如何保持运动小车上的旗杆屹立不倒?TensorFlow利用A3C算法训练智能体玩CartPole游戏
本教程讲解如何使用深度强化学习训练一个可以在 CartPole 游戏中获胜的模型.研究人员使用 tf.keras.OpenAI 训练了一个使用「异步优势动作评价」(Asynchronous Advan ...
- HTML+CSS实现页面
使用HTML和CSS实现以下页面: 抽屉首页 个人博客首页 小米官网首页 登录注册页面 一.抽屉首页 1.实现目标:https://dig.chouti.com/ 2.代码: HTML: <!- ...
- Windows下OpenCV 3.1.0 在 Qt Creator 4.0.2 (Qt 5.7.0 MinGW) 中的开发环境配置
2017-2-23 Update: 修改并添加了部分细节 最近正在学习OpenCV ,为毕业设计做准备.Windows版本的OpenCV都默认提供对VS的支持,其在VS中的配置比较简单,网上也有大批教 ...
- ngnix配置thinkphp5隐藏index.php的方法亲测有效
在需要访问的域名的conf文件中,比如 vim /etc/nginx/.com.conf location / { // …..省略部分代码 if (!-e $request_filename) { ...
- 使用再生龙Clonezilla备份还原Linux系统
一位老哥推荐给我的,产地是祖国宝岛台湾,实测效果非常好,解决了我的一个大问题. 为了减少篇幅,方便阅读,把备份还原的过程单独写一篇随笔. 官网简介:http://clonezilla.nchc.org ...
- Sqlserver查询数据库文件大小和剩余空间
在MS Sql Server中可以能过以下的方法查询出磁盘空间的使用情况及各数据库数据文件及日志文件的大小及使用利用率: 1.查询各个磁盘分区的剩余空间:Exec master.dbo.xp_fixe ...