本来我是不想写的,无奈不会写。蒟蒻 考场就是想不出来 今天得到了100分额外水过了100分我是真的失败。还有一个根本不会check 感觉自己非常之菜。

这道题是这样的 还行吧比较有意思 首先确立一个真命题对于一个入度为2的点其一定是属于链上的一点的。因为 考虑其不在链上的情况如果连接的是不管连接的一定是多度数点>=3和其他的点但其末尾一定是一个度数等于1的点我们将其提上来把当前的点插到直径上即可。为什么不考虑单度数点呢?因为树的直径一定只有两个单度数点我们考虑也没用。

再确定一个假命题 当一棵树的度数一定是这颗树也确定,假的!同分异构体和等效氢的方法将其排除!那么此时对答案的影响就只有多度数点了考虑对答案的贡献是 任意一个多度数点和双度数点一样都可以连在树的直径之上这个我们随便想都是可行的。于是有解法了 对于多度数点删一些边即可当度数>=3时删掉n-2条边然后就没了。

//#include<bits/stdc++.h>
#include<iostream>
#include<queue>
#include<iomanip>
#include<cctype>
#include<cstdio>
#include<deque>
#include<utility>
#include<cmath>
#include<ctime>
#include<cstring>
#include<string>
#include<cstdlib>
#include<vector>
#include<algorithm>
#include<stack>
#include<map>
#include<set>
#include<bitset>
#define max(x,y) ((x)>(y)?(x):(y))
#define min(x,y) ((x)>(y)?(y):(x))
#define INF 1000000000
#define ll long long
#define db double
using namespace std;
char buf[<<],*fs,*ft;
inline char getc()
{
return (fs==ft&&(ft=(fs=buf)+fread(buf,,<<,stdin),fs==ft))?:*fs++;
}
inline int read()
{
int x=,f=;char ch=getc();
while(ch<''||ch>''){if(ch=='-')f=-;ch=getc();}
while(ch>=''&&ch<=''){x=x*+ch-'';ch=getc();}
return x*f;
}
inline void put(int x)
{
x<?putchar('-'),x=-x:;
int num=;char ch[];
while(x)ch[++num]=x%+'',x/=;
num==?putchar(''):;
while(num)putchar(ch[num--]);
putchar('\n');return;
}
const int MAXN=;
int n,flag,ans,cnt,flag1;
int a[MAXN];
int main()
{
freopen("1.in","r",stdin);
//freopen("tree.in","r",stdin);
//freopen("tree.out","w",stdout);
n=read();ans=n-;
for(int i=;i<=n;++i)
{
a[i]=read();
if(a[i]>=)ans-=a[i]-;
if(a[i]==n-&&n>)flag1=;
if(a[i]<=)flag=;
cnt+=a[i];
}
if(cnt!=((n-)<<))flag=;
if(flag==){put(-);return ;}
if(flag1==){put();return ;}
put(ans);
return ;
}

看完题目显然是一个二分 但是我不会check 丢人 check是 找到ad的值域和bc的值域观察是否有交集即可。

我没想到我不知道为什么我会没想到 这我知道了以后感觉很显然就这样判断一下就是100分诶。

//#include<bits/stdc++.h>
#include<iostream>
#include<queue>
#include<iomanip>
#include<cctype>
#include<cstdio>
#include<deque>
#include<utility>
#include<cmath>
#include<ctime>
#include<cstring>
#include<string>
#include<cstdlib>
#include<vector>
#include<algorithm>
#include<stack>
#include<map>
#include<set>
#include<bitset>
#define max(x,y) ((x)>(y)?(x):(y))
#define min(x,y) ((x)>(y)?(y):(x))
#define INF 1000000000
#define ll long long
#define db double
using namespace std;
char buf[<<],*fs,*ft;
inline char getc()
{
return (fs==ft&&(ft=(fs=buf)+fread(buf,,<<,stdin),fs==ft))?:*fs++;
}
inline int read()
{
int x=,f=;char ch=getc();
while(ch<''||ch>''){if(ch=='-')f=-;ch=getc();}
while(ch>=''&&ch<=''){x=x*+ch-'';ch=getc();}
return x*f;
}
inline void put(int x)
{
x<?putchar('-'),x=-x:;
int num=;char ch[];
while(x)ch[++num]=x%+'',x/=;
num==?putchar(''):;
while(num)putchar(ch[num--]);
putchar('\n');return;
}
int a,b,c,d;
inline int check(db x)
{
db maxx,maxx1,minn,minn1;
maxx=maxx1=-(ll)INF*(ll)INF*1.0;
minn=minn1=(ll)INF*(ll)INF*1.0;
db a1=a+x,a2=a-x;
db b1=b+x,b2=b-x;
db c1=c+x,c2=c-x;
db d1=d+x,d2=d-x;
maxx=max(maxx,a1*d1);
maxx=max(maxx,a1*d2);
maxx=max(maxx,a2*d1);
maxx=max(maxx,a2*d2);
minn=min(minn,a1*d1);
minn=min(minn,a1*d2);
minn=min(minn,a2*d1);
minn=min(minn,a2*d2);
maxx1=max(maxx1,c1*b1);
maxx1=max(maxx1,c1*b2);
maxx1=max(maxx1,c2*b1);
maxx1=max(maxx1,c2*b2);
minn1=min(minn1,c1*b1);
minn1=min(minn1,c1*b2);
minn1=min(minn1,c2*b1);
minn1=min(minn1,c2*b2);
if(minn<=maxx1&&minn>=minn1)return ;
if(maxx<=maxx1&&maxx>=minn1)return ;
return ;
}
int main()
{
freopen("1.in","r",stdin);
//freopen("matrix.in","r",stdin);
//freopen("matrix.out","w",stdout);
a=read();b=read();c=read();d=read();
//if(a==1&&b==2&&c==3&&d==4){puts("0.2000000000");return 0;}
db l=,r=1000000000.0;
while(l+0.0000001<r)
{
db mid=(l+r)/;
if(check(mid))r=mid;
else l=mid;
}
if(check(l))printf("%.12lf",l);
else printf("%.12lf",r);
return ;
}

这个简单一个矩阵快速幂解决了。。

//#include<bits/stdc++.h>
#include<iostream>
#include<queue>
#include<iomanip>
#include<cctype>
#include<cstdio>
#include<deque>
#include<utility>
#include<cmath>
#include<ctime>
#include<cstring>
#include<string>
#include<cstdlib>
#include<vector>
#include<algorithm>
#include<stack>
#include<map>
#include<set>
#include<bitset>
#define max(x,y) ((x)>(y)?(x):(y))
#define min(x,y) ((x)>(y)?(y):(x))
#define INF 1000000000
#define ll long long
#define db double
using namespace std;
char buf[<<],*fs,*ft;
inline char getc()
{
return (fs==ft&&(ft=(fs=buf)+fread(buf,,<<,stdin),fs==ft))?:*fs++;
}
inline ll read()
{
ll x=,f=;char ch=getc();
while(ch<''||ch>''){if(ch=='-')f=-;ch=getc();}
while(ch>=''&&ch<=''){x=x*+ch-'';ch=getc();}
return x*f;
}
inline void put(ll x)
{
x<?putchar('-'),x=-x:;
ll num=;char ch[];
while(x)ch[++num]=x%+'',x/=;
num==?putchar(''):;
while(num)putchar(ch[num--]);
putchar('\n');return;
}
const ll MAXN=;
ll n,m;
ll f[MAXN];
ll w=;
struct wy
{
ll A[MAXN][MAXN];
wy(){memset(A,,sizeof(A));}
wy friend operator*(wy a,wy b)
{
wy tmp;
for(ll i=;i<=w;++i)
for(ll j=;j<=w;++j)
for(ll k=;k<=w;++k)
tmp.A[i][j]=(tmp.A[i][j]+a.A[i][k]*b.A[j][k]%m)%m;
return tmp;
}
}c;
inline void fast(ll x)
{
while(x)
{
if(x&)
{
ll tmp1=(f[]*c.A[][]%m+f[]*c.A[][]%m)%m;
ll tmp2=(f[]*c.A[][]%m+f[]*c.A[][]%m)%m;
f[]=tmp1;f[]=tmp2;
}
x=x>>;
c=c*c;
}
}
int main()
{
//freopen("1.in","r",stdin);
freopen("fibonacci.in","r",stdin);
freopen("fibonacci.out","w",stdout);
n=read();m=read();
if(n==||n==){put(%m);return ;}
c.A[][]=;c.A[][]=;
c.A[][]=;c.A[][]=;
f[]=;f[]=;
fast(n);
put(f[]%m);
return ;
}

今天发挥的不太好没有充分利用知识至少第二题的二分我应该是可以想出来的。

最新文章

  1. java语言特性概述
  2. iOS开发 火星坐标转百度坐标
  3. C#环境下,文本框翻屏,怎么一直显示当前插入的内容!!!!!!!!!!!!!!!!
  4. H5开发之Eclipes 编码乱码问题
  5. POJ - 2041Unreliable Message
  6. easyui 上传文件代码
  7. js模拟Map对象,实现key---value
  8. 简单说明Python中的装饰器的用法
  9. Mac 上开启一个简单的服务器
  10. js正则:零宽断言
  11. html、css、js实现简易计算器
  12. Oracle 10gR2分析函数
  13. PHP中关于foreach的简单的用法总结
  14. ubuntu下绑定串口
  15. [20181015]12C SQL Translation Framework.txt
  16. Cetos 中添加bbr服务
  17. 洛谷P3987 我永远喜欢珂朵莉~(set 树状数组)
  18. [daily] socks代理转化为http代理
  19. git clone慢
  20. 解决sqlplus: command not found

热门文章

  1. CSS技术让高度自适应减少很多不必要的检测
  2. # Mysql常用函数总结(一)
  3. Django---进阶7
  4. 《Object Storage on CRAQ: High-throughput chain replication for read-mostly workloads》论文总结
  5. 数据可视化之PowerQuery篇(二)这个方法帮你快速计算列
  6. 基于Three.js的全景---photo-sphere-viewer
  7. GPO - General GPO Settings(3)
  8. P3379 最近公共祖先(LCA) 洛谷
  9. P1050 精卫填海
  10. 「从零单排canal 05」 server模块源码解析