AtCoder Beginner Contest 139 解题报告
F
- 题意: 给出n个点,可以任意选择其中一些点相加,求离源点的最远距离
- 思路: 将每个点都看着一个向量,相加满足平行四边形法则,则向量夹角只有锐角和直角时才会变长.对每个向量按极角排序,由于n只有100,顺序枚举剩下的n-1个向量(贪心加角度最相近的)并更新答案.
using namespace std;
typedef pair<int,int> pii;
const int N = 1e3+10;
struct point {
double x,y;
point(double x=0,double y=0):x(x),y(y){}
bool operator < (const point &rhs)const{
return atan2(y,x) < atan2(rhs.y, rhs.x);
}
}p[N];
int main(){
int n;
scanf("%d",&n);
for(int i=0;i<n;++i){
scanf("%lf%lf",&p[i].x,&p[i].y);
}
sort(p,p+n);
double ans = 0;
for(int i=0;i<n;++i){
double x = 0,y = 0;
int j = i;
do{
x += p[j].x, y += p[j].y;
ans = max(ans,x*x+y*y);
j = (j+1)%n;
}while(i!=j);
}
printf("%.15lf\n",sqrt(ans));
return 0;
}
E
- 题意: 给出n*(n-1)的矩阵A,每一列代表一个人表示第i个人第j次的对战目标,求满足每个人都按顺序对战且一轮最多对战一次的最小对战轮数
- 思路: 每个人记录当前对战的位置和上一轮对战的轮数,将当前可以进行的对战信息加入队列中,然后在队列中取得当前轮的对战,再去更新下一轮即可.
const int N = 1e3+10;
int a[N][N],ci[N],ls[N];
int n;
struct node{
int u,v,w;
node(int u=0,int v=0,int w=0):u(u),v(v),w(w){}
};
int main(){
cin >> n;
for(int i=1;i<=n;++i){
for(int j=1;j<n;++j){
cin >> a[i][j];
}
ci[i] = 1; ls[i] = 0;
}
int sign = 0;
int r =0;
queue<node> q;
node cur;
for(int i=1;i<=n;++i){ // 第一轮
if(ls[i]==1) continue;
int to = a[i][1];
if(a[to][1]==i){
ls[to] = 1; ls[i] = 1;
q.push({i,to,1});
}
}
while(!q.empty()){
cur = q.front(); q.pop(); r = cur.w;
// cout << cur.u << ' ' << cur.v << ' ' << cur.w << endl;
ci[cur.u]++; ci[cur.v]++;
int to = a[cur.u][ci[cur.u]];
if(a[to][ci[to]]==cur.u && ls[to]<=cur.w){
ls[to] = cur.w+1; ls[cur.u] = cur.w+1;
q.push(node{cur.u,to,cur.w+1});
}
to = a[cur.v][ci[cur.v]];
if(a[to][ci[to]]==cur.v && ls[to]<=cur.w){
ls[to] = cur.w+1; ls[cur.v] = cur.w+1;
q.push(node{cur.v,to,cur.w+1});
}
}
for(int i=1;i<=n;++i){
if(ci[i]!=n){
sign = 1;break;
}
}
if(sign) cout << -1 << endl;
else cout << r << endl;
return 0;
}
标签:
题目代码
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义