【刷题】AtCoder Regular Contest 001
A.センター採点
题意:给一个只包含1、2、3、4的字符串,求出现次数最多和最少的字符
做法:还能怎么做。。。
#include<bits/stdc++.h>
#define ui unsigned int
#define ll long long
#define db double
#define ld long double
#define ull unsigned long long
#define REP(a,b,c) for(register int a=(b),a##end=(c);a<=a##end;++a)
#define DEP(a,b,c) for(register int a=(b),a##end=(c);a>=a##end;--a)
const int MAXN=100+10;
int n,Mx,Mn,sum[5];
char s[MAXN];
template<typename T> inline void read(T &x)
{
T data=0,w=1;
char ch=0;
while(ch!='-'&&(ch<'0'||ch>'9'))ch=getchar();
if(ch=='-')w=-1,ch=getchar();
while(ch>='0'&&ch<='9')data=((T)data<<3)+((T)data<<1)+(ch^'0'),ch=getchar();
x=data*w;
}
template<typename T> inline void write(T x,char ch='\0')
{
if(x<0)putchar('-'),x=-x;
if(x>9)write(x/10);
putchar(x%10+'0');
if(ch!='\0')putchar(ch);
}
template<typename T> inline void chkmin(T &x,T y){x=(y<x?y:x);}
template<typename T> inline void chkmax(T &x,T y){x=(y>x?y:x);}
template<typename T> inline T min(T x,T y){return x<y?x:y;}
template<typename T> inline T max(T x,T y){return x>y?x:y;}
int main()
{
read(n);scanf("%s",s);Mx=0;Mn=n;
REP(i,0,n-1)sum[s[i]-'0']++;
REP(i,1,4)chkmax(Mx,sum[i]),chkmin(Mn,sum[i]);
printf("%d %d\n",Mx,Mn);
return 0;
}
B.リモコン
题意:给定初始温度,每次操作可以改变1度、5度或10度,问变成要求温度的最小操作次数
做法:由于数据范围太小,于是直接枚举就好了。如果数据范围大的话,可以做一个有负权的背包。
#include<bits/stdc++.h>
#define ui unsigned int
#define ll long long
#define db double
#define ld long double
#define ull unsigned long long
#define REP(a,b,c) for(register int a=(b),a##end=(c);a<=a##end;++a)
#define DEP(a,b,c) for(register int a=(b),a##end=(c);a>=a##end;--a)
const int inf=0x3f3f3f3f;
int L,R,n,ans=inf;
template<typename T> inline void read(T &x)
{
T data=0,w=1;
char ch=0;
while(ch!='-'&&(ch<'0'||ch>'9'))ch=getchar();
if(ch=='-')w=-1,ch=getchar();
while(ch>='0'&&ch<='9')data=((T)data<<3)+((T)data<<1)+(ch^'0'),ch=getchar();
x=data*w;
}
template<typename T> inline void write(T x,char ch='\0')
{
if(x<0)putchar('-'),x=-x;
if(x>9)write(x/10);
putchar(x%10+'0');
if(ch!='\0')putchar(ch);
}
template<typename T> inline void chkmin(T &x,T y){x=(y<x?y:x);}
template<typename T> inline void chkmax(T &x,T y){x=(y>x?y:x);}
template<typename T> inline T min(T x,T y){return x<y?x:y;}
template<typename T> inline T max(T x,T y){return x>y?x:y;}
int main()
{
read(L);read(R);n=abs(R-L);
REP(i,-4,4)REP(j,-8,8)REP(k,-40,40)if(i*10+j*5+k==n)chkmin(ans,abs(i)+abs(j)+abs(k));
write(ans,'\n');
return 0;
}
C.パズルのお手伝い
题意:棋盘确定了一些位置,问能不能摆成八皇后形式
做法:搜索。而且有可能一开始输进来的局面就不合法,我被这个坑到了
#include<bits/stdc++.h>
#define ui unsigned int
#define ll long long
#define db double
#define ld long double
#define ull unsigned long long
#define REP(a,b,c) for(register int a=(b),a##end=(c);a<=a##end;++a)
#define DEP(a,b,c) for(register int a=(b),a##end=(c);a>=a##end;--a)
int row[10],dia[2][20],line[10];
char s[10];
template<typename T> inline void read(T &x)
{
T data=0,w=1;
char ch=0;
while(ch!='-'&&(ch<'0'||ch>'9'))ch=getchar();
if(ch=='-')w=-1,ch=getchar();
while(ch>='0'&&ch<='9')data=((T)data<<3)+((T)data<<1)+(ch^'0'),ch=getchar();
x=data*w;
}
template<typename T> inline void write(T x,char ch='\0')
{
if(x<0)putchar('-'),x=-x;
if(x>9)write(x/10);
putchar(x%10+'0');
if(ch!='\0')putchar(ch);
}
template<typename T> inline void chkmin(T &x,T y){x=(y<x?y:x);}
template<typename T> inline void chkmax(T &x,T y){x=(y>x?y:x);}
template<typename T> inline T min(T x,T y){return x<y?x:y;}
template<typename T> inline T max(T x,T y){return x>y?x:y;}
inline void print()
{
REP(i,1,8)
{
REP(j,1,8)
if(line[i]==j)putchar('Q');
else putchar('.');
putchar('\n');
}
}
inline void dfs(int x)
{
if(x>8)print(),exit(0);
if(line[x])dfs(x+1);
else
REP(i,1,8)if(!row[i]&&!dia[0][x+i]&&!dia[1][x-i+8])
{
line[x]=i;
row[i]=dia[0][x+i]=dia[1][x-i+8]=1;
dfs(x+1);
line[x]=row[i]=dia[0][x+i]=dia[1][x-i+8]=0;
}
}
int main()
{
REP(i,1,8)
{
scanf("%s",s+1);
REP(j,1,8)if(s[j]=='Q')
{
if(line[i]||row[j]||dia[0][i+j]||dia[1][i-j+8])
{
puts("No Answer");
return 0;
}
else line[i]=j,row[j]=dia[0][i+j]=dia[1][i-j+8]=1;
}
}
dfs(1);
puts("No Answer");
return 0;
}
D.レースゲーム
题意:给两条贯穿上下的折线,问从最下方一个点保证在两条折线中间走到最上方一个点的最小距离
做法:一个想法是先确定好每层要走到的点,答案就可以直接算。但是,由于每层中间部分的不确定,所以无法直接确定每层走到的点。但是我们向上走只有两种偏向,向左或向右。所以我们记录从当前点向左和向右走的路径,不断向上扫,如果出现某一层的区间完全在上一区间的左边,那么这次肯定走到上一区间的左端点;反之右端点。一直走上去就是正确路线了。
#include<bits/stdc++.h>
#define ui unsigned int
#define ll long long
#define db double
#define ld long double
#define ull unsigned long long
#define REP(a,b,c) for(register int a=(b),a##end=(c);a<=a##end;++a)
#define DEP(a,b,c) for(register int a=(b),a##end=(c);a>=a##end;--a)
const int MAXN=200000+10;
int n,st,ed,l[MAXN],r[MAXN];
std::pair<db,db> L,R,now,nL,nR;
db ans;
template<typename T> inline void read(T &x)
{
T data=0,w=1;
char ch=0;
while(ch!='-'&&(ch<'0'||ch>'9'))ch=getchar();
if(ch=='-')w=-1,ch=getchar();
while(ch>='0'&&ch<='9')data=((T)data<<3)+((T)data<<1)+(ch^'0'),ch=getchar();
x=data*w;
}
template<typename T> inline void write(T x,char ch='\0')
{
if(x<0)putchar('-'),x=-x;
if(x>9)write(x/10);
putchar(x%10+'0');
if(ch!='\0')putchar(ch);
}
template<typename T> inline void chkmin(T &x,T y){x=(y<x?y:x);}
template<typename T> inline void chkmax(T &x,T y){x=(y>x?y:x);}
template<typename T> inline T min(T x,T y){return x<y?x:y;}
template<typename T> inline T max(T x,T y){return x>y?x:y;}
#define x first
#define y second
inline db hypot(std::pair<db,db> A)
{
return sqrt(A.x*A.x+A.y*A.y);
}
inline db cross(std::pair<db,db> A,std::pair<db,db> B)
{
return A.x*B.y-A.y*B.x;
}
int main()
{
read(n);read(st);read(ed);n++;st++;ed++;
REP(i,1,n)read(l[i]),read(r[i]),l[i]++,r[i]++;
l[1]=r[1]=st;
l[n]=r[n]=ed;
now=std::make_pair(st,1);
for(register int i,j;j<=n;)
{
i=now.y+1,j=i+1;
L=std::make_pair((db)(l[i]-now.x),(db)(i-now.y));
R=std::make_pair((db)(r[i]-now.x),(db)(i-now.y));
while(j<=n)
{
nL=std::make_pair((db)(l[j]-now.x),(db)(j-now.y));
nR=std::make_pair((db)(r[j]-now.x),(db)(j-now.y));
if(cross(R,nL)<0)
{
ans+=hypot(R);
now=std::make_pair(now.x+R.x,now.y+R.y);
break;
}
if(cross(L,nR)>0)
{
ans+=hypot(L);
now=std::make_pair(now.x+L.x,now.y+L.y);
break;
}
if(cross(R,nR)>0)R=nR;
if(cross(L,nL)<0)L=nL;
++j;
}
}
ans+=hypot(std::make_pair((db)ed-now.x,(db)n-now.y));
printf("%.14f\n",ans);
return 0;
}
【刷题】AtCoder Regular Contest 001的更多相关文章
- AtCoder Regular Contest 092
AtCoder Regular Contest 092 C - 2D Plane 2N Points 题意: 二维平面上给了\(2N\)个点,其中\(N\)个是\(A\)类点,\(N\)个是\(B\) ...
- AtCoder Regular Contest 102
AtCoder Regular Contest 102 C - Triangular Relationship 题意: 给出n,k求有多少个不大于n的三元组,使其中两两数字的和都是k的倍数,数字可以重 ...
- AtCoder Regular Contest 096
AtCoder Regular Contest 096 C - Many Medians 题意: 有A,B两种匹萨和三种购买方案,买一个A,买一个B,买半个A和半个B,花费分别为a,b,c. 求买X个 ...
- AtCoder Regular Contest 097
AtCoder Regular Contest 097 C - K-th Substring 题意: 求一个长度小于等于5000的字符串的第K小子串,相同子串算一个. K<=5. 分析: 一眼看 ...
- AtCoder Regular Contest 098
AtCoder Regular Contest 098 C - Attention 题意 给定一个只包含"E","W"字符串,可以花一的花费使他们互相转换.选定 ...
- Atcoder regular Contest 073(C - Sentou)
Atcoder regular Contest 073(C - Sentou) 传送门 每个人对开关的影响区间为a[i]--a[i]+t,因此此题即为将所有区间离散化后求所有独立区间的长度和 #inc ...
- AtCoder Regular Contest 061
AtCoder Regular Contest 061 C.Many Formulas 题意 给长度不超过\(10\)且由\(0\)到\(9\)数字组成的串S. 可以在两数字间放\(+\)号. 求所有 ...
- AtCoder Regular Contest 094 (ARC094) CDE题解
原文链接http://www.cnblogs.com/zhouzhendong/p/8735114.html $AtCoder\ Regular\ Contest\ 094(ARC094)\ CDE$ ...
- AtCoder Regular Contest 093
AtCoder Regular Contest 093 C - Traveling Plan 题意: 给定n个点,求出删去i号点时,按顺序从起点到一号点走到n号点最后回到起点所走的路程是多少. \(n ...
随机推荐
- mvn打包到私服的命令
1.mvn clean package install -Dmaven.test.skip=true deploy 2.docker清楚Nexus私服上包的命令: a) docker exec -it ...
- docker load导入镜像报错:open /var/lib/docker/tmp/docker-import-970689518/bin/json: no such file or directory
今天将之前打包好的mysql5.7.19的tar包通过docker load命令导入到Docker环境中却报出了如下错误: [root@host---- task]# docker load < ...
- Luogu2993 FJOI2014 最短路径树问题 最短路树、长链剖分
传送门 强行二合一最为致命 第一问直接最短路+$DFS$解决 考虑第二问,与深度相关,可以考虑长链剖分. 设$f_{i,j}$表示长度为$i$,经过边数为$j$时的最大边权和,考虑到每一次从重儿子转移 ...
- 【转】分布式一致性算法:Raft 算法(Raft 论文翻译)
编者按:这篇文章来自简书的一个位博主Jeffbond,读了好几遍,翻译的质量比较高,原文链接:分布式一致性算法:Raft 算法(Raft 论文翻译),版权一切归原译者. 同时,第6部分的集群成员变更读 ...
- 【JVM.3】虚拟机性能监控与故障处理工具
一.概述 经过前面两章对于虚拟机内存分配与回收技术各方面的介绍,相信读者已经建立了一套比较完整的理论基础.理论总是作为指导实践的工具,能把这些执行应用到实际工作中才是我们的最终目的.接下来我们会从实践 ...
- 如何使用chrome浏览器进行js调试找出元素绑定的点击事件
大家有没有遇到这样的一个问题,我们在分析一些大型电子商务平台的Web前端脚本时,想找到一个元素绑定的点击事件,并不是那么容易,因为有些前端脚本封装的比较隐蔽,甚至有些加密脚本,用传统的查找元素ID.或 ...
- BugkuCTF 域名解析
前言 写了这么久的web题,算是把它基础部分都刷完了一遍,以下的几天将持续更新BugkuCTF WEB部分的题解,为了不影响阅读,所以每道题的题解都以单独一篇文章的形式发表,感谢大家一直以来的支持和理 ...
- Docker容器学习梳理 - 基础环境安装
以下是centos系统安装docker的操作记录 1)第一种方法:采用系统自带的docker安装,但是这一般都不是最新版的docker安装epel源[root@docker-server ~]# wg ...
- Java awt项目开发
通过Java awt 界面上的知识编写的扫雷游戏 代码中有详细的注解 package com.langsin.saolei; import java.awt.Color;import java.awt ...
- Python小笔记
最近在学习Python 以前也学过一些编程语言 但是都不扎实 由于工作的原因 需要学习Python做一些处理 刚开始学习总有多多少少的不适应 从今天开始打算将我在学习中遇到的困难以及疑问记录下来 ...