每个加油的站可以确定一个alpha的上下界,比如,第i次加油站a[i],前面加了i次油,a[i]*10≤ alpha*i <(a[i]+1)*10。

取最大的下界,取最小的上界,看看两者之间的满足条件的下一个加油站是否唯一。

因为可以用分数,所有就没用double了

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll gcd(ll a,ll b) { return b?gcd(b,a%b):a; }
struct Fra
{
ll p,q;
Fra(ll x = ,ll y = ):p(x),q(y){ normal(p,q); }
void normal(ll &p,ll &q) { ll g = gcd(p,q); p/=g; q/=g; }
Fra operator = (int x) { p = x; q = ; return *this; }
Fra operator = (ll x) { p = x; q = ; return *this; }
Fra operator - () { return {-p,q}; }
Fra operator + (Fra &r) {
ll m,n;
m = p*r.q+r.p*q;
n = q*r.q;
normal(m,n);
return {m,n};
}
Fra operator += (Fra& r) { return *this = *this+r; }
Fra operator - (Fra &r) { return (-r) + *this; }
Fra operator -= (Fra &r) { return *this = *this-r; }
Fra operator * (Fra &r) {
ll m,n;
m = p*r.p;
n = q*r.q;
normal(m,n);
return {m,n};
}
Fra operator *= (Fra &r) { return (*this) = (*this)*r; }
Fra operator /(Fra &r) { return Fra(r.q,r.p) * (*this); }
Fra operator /=(Fra &r) { return (*this) = (*this)/r; }
bool operator == (const Fra& r) const { return p*r.q == r.p*q; }
bool operator < (const Fra& r) const { return p*r.q < r.p*q; }
void print() { normal(p,q); if(q<)q = -q,p = -p; printf("%lld/%lld\n",p,q); }
}; const int maxn = 1e3+; const ll INF = 1e16;
int main()
{
//freopen("in.txt","r",stdin);
int n; scanf("%d",&n);
Fra Low(),High(INF);
for(int i = ; i <= n; i++){
int t; scanf("%d",&t);
Low = max(Fra(t*,i),Low);
High = min(Fra(t*+,i),High);
}
Low = Fra(n+)*Low;
High = Fra(n+)*High;
int u = (High.p-)/High.q;
int d = (Low.p)/Low.q;
if(u/ != d/) {
puts("not unique");
}else {
printf("unique\n%d",d/);
}
return ;
}

最新文章

  1. Linux中find常见用法
  2. modelsim do文件仿真
  3. 转-JS中document对象详解
  4. DataTables给每一列添加下拉框搜索
  5. c#接口定义与应用
  6. 高级UIKit-01(总结基础UIKit)
  7. netty(4)高级篇-Websocket协议开发
  8. 详细的SQL中datediff用法
  9. 解决反序列化(Deserialize)无法找到程序集的错误
  10. AttributeError: module &#39;enum&#39; has no attribute &#39;IntFlag&#39;
  11. python 模拟百度搜索
  12. Linux记录-配置sudoers无密登录和环境变量
  13. 从零开始一起学习SLAM | 给点云加个滤网
  14. js 基础知识总结
  15. Android-okhttp下载网络图片并设置壁纸
  16. 4-4 R语言函数 tapply
  17. webpack超详细配置, 使用教程(图文)
  18. form表单序列化serialize-object.js
  19. yii2 RESTful API 405 Method Not Allowed
  20. node之log4js

热门文章

  1. 项目debug2
  2. jquery动态创建标签
  3. 自定义TabWidget
  4. echarts学习的一些笔记
  5. 深入理解JVM的类加载
  6. 字符串split函数
  7. ubuntu 设置字符集 locale(解决乱码问题)
  8. Java NIO 必知必会(Example)
  9. 微信小程序 笔记
  10. ES6新特性使用小结(六)