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> ...
随机推荐
- 1062 Talent and Virtue (25 分)
1062 Talent and Virtue (25 分) About 900 years ago, a Chinese philosopher Sima Guang wrote a history ...
- win2003 server的域用户加入本地管理员组
很久没有搞windows的域管理,今天碰到一个问题,一直找不到解决方法,一直在网络找资料,直到刚刚才找到方法,方法如下: C:\>net localgroup administrators li ...
- Mysql 於lampp xampp LinuxUbuntu下的配置
默认执行Lampp/Xampp 於Ubuntu下完成后,需要对mysql进行一系列的配置,方可进行更好的操作 lampp下的mysql配置文件路径: /opt/lampp/etc/my.cnf 1 配 ...
- [CoentOS] MySQL删除和安装
删除 MySQL yum remove mysql mysql-server mysql-libs mysql-server; find / -name mysql 将找到的相关东西delete掉(r ...
- uva-10194-排序
题意: 如果一个队伍的得分比对方高,那么就赢得这场游戏,很明显,如果得分低那就是输了,如果俩个队伍的得分一样,那么就是平局,赢得比较获得3个点的得分,平手1个点的得分,输了0分.排序规则如下1:得分点 ...
- (11/24) css进阶:Less文件的打包和分离
写在前面:在前面我们对css打包和分离进行了描述.此节我们开始学习如何对less文件进行打包和分离. Less 是一门 CSS 预处理语言,它扩展了 CSS 语言,增加了变量.Mixin.函数等特性, ...
- java 调用apache.commons.codec的包简单实现MD5加密
转自:https://blog.csdn.net/mmd1234520/article/details/70210002/ import java.security.MessageDigest; im ...
- JS实现让滚轮控制网页头部显示与隐藏
在很多网站中都有鼠标网上滚动头部就会滑出,继续往下滚动就会隐藏,下面看看实现方法 scroll(); function scroll(){// 入口方法 这个方法是获取事件的兼容,获取delta -- ...
- Java编程最差实践
原文地址:http://www.odi.ch/prog/design/newbies.php 每天在写Java程序, 其实里面有一些细节大家可能没怎么注意, 这不, 有人总结了一个我们编程中常见的问题 ...
- UI5-文档-4.16-Dialogs and Fragments
在这一步中,我们将进一步研究另一个可以用来组装视图的元素:the fragment. 片段是轻量级UI部件(UI子树),可以重用,但是没有任何控制器.这意味着,每当你想定义一个特定UI的一部分是跨多个 ...