网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

本吧头图、背景、导航顶部以及页面右侧信息由第三方提供,可能存在广告,请您仔细甄别。
之星交流吧
关注:3,935贴子:56,388
 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
06月26日漏签0天

百度之星大赛官方贴吧 官方邮箱:astar@baidu.com

了解更多关于之星交流>>

  • 2019百度之星Astar2019百度之星Astar
  • 2018百度之星Astar2018百度之星Astar
  • 2017百度之星Astar2017百度之星Astar
  • 2016百度之星Astar2016百度之星Astar
  • 看贴
  • 图片
    0
  • 视频
    0
  • 精品
    0
  • 1 2 3 下一页 尾页
  • 41回复贴,共3页
  • ,跳到 页  
<<返回之星交流吧
>0< 加载中...

发发b,c自己的做法。。

  • 只看楼主
  • 收藏

  • 回复
  • noip9
  • 星途起步
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
1个小时做了2题 然后看到a,d头大 直接无视了
以下内容仅供参考
b题:二分答案 然后check 类似bfs 从每一个没标号的点出发 距离小于mid的都标上号 看看用了几个号码 如果比k多就满足条件 check 复杂度为O(n)
c题:。。像我这种菜鸡最适合做这种题了。。。dp10分钟秒杀
f[i][j]=f[i][j]=max(f[i][j-1]+human[i+j].a*a2+human[i+j].b*b2,f[i-1][j]+human[i+j].a*a1+human[i+j].b*b1);
建议使用滚动数组
b代码:
# include<stdio.h># include<string.h># define EC(a) ((a)*(a))# define mod 10000000int n,k;struct node{ double x,y,z;}web[1001];double s[1001][1001];int vis[1001];bool tank(double define){ memset(vis,0,sizeof(vis)); int i,j,tot=0; int q[1010],front,rear; for(i=1;i<=n;i++) {if(!vis[i]) vis[i]=++tot; front=0,rear=1,q[0]=i; while(front<rear) { for(j=1;j<=n;j++) if(!vis[j]&&s[q[front]][j]<=define) {vis[j]=vis[i];q[rear++]=j; } front++; } } if(tot>=k) return true; return false;}int main(){ scanf("%d%d",&n,&k); double x,y,z; int i,j; for(i=1;i<=n;i++) {scanf("%lf%lf%lf",&x,&y,&z),web[i].x=x,web[i].y=y,web[i].z=z;} for(i=1;i<=n;i++) for(j=1;j<=n;j++) s[i][j]=EC(web[i].x-web[j].x)+EC(web[i].y-web[j].y)+EC(web[i].z-web[j].z); double left=0,right=1,mid; while(left+0.0000001<right) {mid=(left+right)/(2.0); // printf("left:%.7lf right:%.7lf mid:%.7lf\n",left,right,mid); if(!tank(mid)) right=mid-0.0000001; else left=mid; } double ans=right; printf("%.6lf\n",ans);//电脑会四舍五入 return 0;}
c题:
# include<stdio.h># include<string.h># include<algorithm>using namespace std;int f[1001];struct node{ int a,b;}human[1001];int num1,num2,a1,b1,a2,b2;int main(){ int n; scanf("%d",&n); int i,j; for(i=1;i<=n;i++) {scanf("%d%d",&human[i].a,&human[i].b); } scanf("%d%d%d",&num1,&a1,&b1); scanf("%d%d%d",&num2,&a2,&b2); memset(f,-1000,sizeof(f)); for(i=0;i<=min(n,num2);i++) f[i]=human[i].a*a2+human[i].b*b2; f[0]=human[1].a*a1+human[1].b*b1; int ans=-1000000; for(i=1;i<=min(num1,n);i++) {for(j=1;j<=min(n-i,num2);j++) {f[j]=max(f[j-1]+human[i+j].a*a2+human[i+j].b*b2,f[j]+human[i+j].a*a1+human[i+j].b*b1); //printf("i:%d j:%d f:%d\n",i,j,f[j]); } if(f[n-i]>ans) ans=f[n-i]; } printf("%d\n",ans); return 0;}



  • 冰火梦幻
  • 百度明星
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
BFS……这么简单吗?


2025-06-26 16:40:28
广告
  • cyrussu
  • 星入坦途
    5
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
看得好辛苦


  • ljydeniangzi
  • 星途起步
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
# include<stdio.h># include<string.h># include<algorithm>using namespace std;int f[1001];struct node{ int a,b;}human[1001];int num1,num2,a1,b1,a2,b2;int main(){ int n; scanf("%d",&n); int i,j; for(i=1;i<=n;i++) {scanf("%d%d",&human[i].a,&human[i].b); } scanf("%d%d%d",&num1,&a1,&b1); scanf("%d%d%d",&num2,&a2,&b2); memset(f,-1000,sizeof(f)); for(i=0;i<=min(n,num2);i++) f[i]=human[i].a*a2+human[i].b*b2; f[0]=human[1].a*a1+human[1].b*b1; int ans=-1000000; for(i=1;i<=min(num1,n);i++) {for(j=1;j<=min(n-i,num2);j++) {f[j]=max(f[j-1]+human[i+j].a*a2+human[i+j].b*b2,f[j]+human[i+j].a*a1+human[i+j].b*b1); //printf("i:%d j:%d f:%d\n",i,j,f[j]); } if(f[n-i]>ans) ans=f[n-i]; } printf("%d\n",ans); return 0;}


  • ljydeniangzi
  • 星途起步
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <iostream>
using namespace std;
struct objcet{
int a;
int b;
}ob[1000] = {0};
struct person{
int x;
int y;
}pe[1000] = {0}; int main()
{
int n,i,j,temp;
int s= 0,t = 0,lastsum = 0;
int k[2] = {0};
int sum[1000] = {0};
int tmp[1000] = {0};
int max[1000] = {0};
cin >>n;
for(i = 0;i<n;i++)
{
cin>>pe[i].x;
cin>>pe[i].y;
}
for(j = 0;j <2;j++)
{
cin>>k[j];
cin>>ob[j].a;
cin>>ob[j].b;
}
for(i = 0;i < n;i++)
{
for(j = 0;j<2;j++)
{ if(j == 0)
tmp[i] = ob[j].a * pe[i].x + ob[j].b*pe[i].y;
if(j == 1)
sum[i] = ob[j].a * pe[i].x + ob[j].b*pe[i].y;
}
}
for(i = 0;i<n;i++)
{
for(j = i+1;j<n;j++)
{
if(sum[i]<=sum[j])
{ temp = sum[i];
sum[i] = sum[j];
sum[j] = temp;
}
if(tmp[i]<=tmp[j])
{
temp = tmp[i];
tmp[i] = tmp[j];
tmp[j] = temp;
}
}
}
s = 0;
t = 0;
for(i = 0;i<n;i++)
{
if((sum[i]>= tmp[i]) )
{ if(s <= k[1])
{ max[i] = sum[i];
s++;
}
else
max[i] = tmp[i];
}
else
{ if(t<= k[0])
{ max[i] =tmp[i];
t++;}
else
max[i] = sum[i];
}
}
for(i = 0;i<n;i++)
{ lastsum += max[i];
}
cout<<lastsum<<endl;
return 0;
}


  • wwwaaannngggrs
  • 百度小星
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
C题哦
3
22 96
73 81
12 54
3 32 78
2 33 47
答案应该是21442哦。。


  • wwwaaannngggrs
  • 百度小星
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
B题也有问题哦
10 5
0.4993 0.8789 0.6746
0.6242 0.4409 0.15933
0.16274 0.5510 0.3210
0.2229 0.11532 0.8209
0.1820 0.4363 0.6150
0.3797 0.14556 0.6722
0.5915 0.7942 0.1819
0.15790 0.8826 0.15262
0.5715 0.15787 0.952
0.13801 0.2182 0.4727
答案是0.126400呢
二分次数太少了哦


  • shenaoyouxuan
  • 星入坦途
    5
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
楼上我爱你.以为我也是.



2025-06-26 16:34:28
广告
  • ferry007
  • 稳踏星途
    4
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
呵呵了


  • 11YY_YY11
  • 星途起步
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
至少这组数据我跑出来是和你一样的……
不过我方法和楼主不同啊……用的费用流……


  • tcet030840zxp
  • 百度牛星
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
我用的km算法,彼此彼此


  • noip9
  • 星途起步
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
0.126399。。。精度不够?7位不行?
c题写太快了没调试TT


  • iamzhengjintao
  • 百度小星
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
B题不需要二分吧?对所有对的s进行从小到大排序,然后再并查集。。。


  • noip9
  • 星途起步
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
楼主犯2了
没有考虑只取一个的情况TT


2025-06-26 16:28:28
广告
  • 蓝云海
  • 百度小星
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
答案一样,不过提交时弄掉了一句,结果一直wait直到结束。。


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 1 2 3 下一页 尾页
  • 41回复贴,共3页
  • ,跳到 页  
<<返回之星交流吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示