1 条题解
-
0
自动搬运
来自洛谷,原作者为

Crab_Dave
老博客了,鸽子在东西搬运于
2025-08-24 22:12:54,当前版本为作者最后更新于2019-11-11 17:44:14,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
emmm...
事实证明考试时不会可以借助SPJ和随机序列乱搞在时限范围内随机一个序列,判断是否符合题意,然后输出即可~
详见代码qwq
#include<bits/stdc++.h> using namespace std;//头文件 #define MAX_TIME 0.8//时限,超过0.8s比较危险,就不随机了qwq int n,m; double a[4005],ans[35];//你懂得 bool b[4005]; void Produce()//随机产生一个序列 { for(register int i=1;i<=n;i++) { ans[i]=(rand()%20000-10000)/100;//序列范围[-100.0,100.0] } } bool check()//判断序列合法 { int wrongnum=0;//因为说了错误组数小于等于5组就可以得全分,所以偷个懒qwq double sum; for(register int i=1;i<=m;i++) { sum=0; for(register int j=1;j<=n;j++)//对于每一个条件进行求和 { sum+=pow(a[i],j-1)*ans[j];//因为是double型的,就偷懒用个cmath的pow } if(sum>0&&!b[i])wrongnum++;//不满足wrongnum++ else if(sum<=0&&b[i])wrongnum++;//不满足wrongnum++ if(wrongnum>5)return 0;//错误组数大于5组则序列不合法 } return 1;//序列合法 } int main() { srand(time(0)); scanf("%d%d",&n,&m); for(register int i=1;i<=m;i++) { scanf("%lf%d",&a[i],&b[i]);//读入 } do { Produce();//产生序列 }while(!check()&&(double)clock()/CLOCKS_PER_SEC<MAX_TIME);//序列合法或超出时限就退出 for(register int i=1;i<=n;i++) { printf("%.5lf ",ans[i]);//输出 } return 0;//结束了罪恶的一生qwq }资瓷一下叭qwq
- 1
信息
- ID
- 4604
- 时间
- 1000ms
- 内存
- 125MiB
- 难度
- 5
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者