2017年8月12日(模拟四(smoj2193,2194,2195)强连通分量、勾股定理探索、动态规划+容斥原理)
来源:互联网 发布:工资数据分析 编辑:程序博客网 时间:2024/06/04 17:45
#include <stdio.h>#include <stack>#include <cstring>#include <stdlib.h>#define maxN 100010using namespace std;stack <int> sta;struct Tnode{int nxt,v;}edge[maxN];int first[maxN];int dfn[maxN],low[maxN],vis[maxN],instack[maxN],f[maxN],chu[maxN],ru[maxN];int tot,k,cnt;int n,m;int ans;void init(){memset(first,-1,sizeof first);memset(dfn,-1,sizeof dfn);memset(f,0,sizeof f);ans=tot=k=cnt=0;} void add(int u,int v){edge[++tot].v=v,edge[tot].nxt=first[u];first[u]=tot;}void tarjan(int v){dfn[v]=low[v]=++k;instack[v]=1;sta.push(v);for (int i=first[v]; i!=-1; i=edge[i].nxt){//printf("i:%d\n",i);int u=edge[i].v;if (!instack[u]){tarjan(u);low[v]=min(low[v],low[u]);}elselow[v]=min(low[v],dfn[u]);}if (dfn[v]==low[v]){cnt++;while (!sta.empty()){int u=sta.top();sta.pop(); vis[u]=cnt;instack[u]=0;if (u==v) break;} }}int main(){freopen("2193.in","r",stdin);freopen("2193.out","w",stdout);scanf("%d%d",&n,&m);init();for (int i=1; i<=m; i++){int x,y;scanf("%d%d",&x,&y);add(x,y);chu[x]++; ru[y]++;}for (int i=1; i<=n; i++) if (dfn[i]==-1) tarjan(i);for (int u=1; u<=n; u++){bool flag=0;if (chu[u]==0 && ru[u]==0) ans=-1;for (int i=first[u]; i!=-1; i=edge[i].nxt){int v=edge[i].v;if (ru[v]<=1) flag=1;if (vis[u]!=vis[v]) f[vis[v]]=1;}if (ru[u]==0 && !flag) ans=-1;}for (int i=1; i<=cnt; i++) if (!f[i]) ans++;printf("%0.6lf",(double)(n-ans)/(double)n);return 0;}#include <stdio.h>#include <cmath>using namespace std;#define ll long longll ans=0,r;long long gcd(ll a,ll b){ return a%b==0?b:gcd(b,a%b);}bool check(ll a,double b){if (floor(b)==b){ll x=(long long)floor(b);if (gcd(a*a,x*x)==1 && a*a!=x*x) return true;}return false;}int main(){freopen("2194.in","r",stdin);freopen("2194.out","w",stdout);scanf("%lld",&r);for (ll i=1; i<=(ll)sqrt(2*r); i++)if ((2*r)%i==0){for (ll j=1; j<=(ll)sqrt(2*r/(i*2)); j++){double k=sqrt(((2*r)/i)-(j*j));if (check(j,k)) ans++;}if (i!=(2*r)/i)for (ll j=1; j<=(ll)sqrt(i/2); j++){double k=sqrt(i-j*j);if (check(j,k)) ans++;} }printf("%lld\n",ans*4+4);return 0;}#include <stdio.h>#include <algorithm>#include <cstring>using namespace std;#define maxN 2200#define MOD 1000000009#define F(i,j,n) for (int i=j; i<=n; i++)#define D(i,j,n) for (int i=j; i>=n; i--)#define ll long longint a[maxN],b[maxN],nxt[maxN];ll f[maxN][maxN],d[maxN];ll c[maxN][maxN],Jc[maxN];int n,k;void init(int n){Jc[0]=1;F(i,1,n) Jc[i]=Jc[i-1]*i%MOD;memset(c,0,sizeof c);F(i,0,n) c[i][0]=1;F(i,1,n) F(j,1,i) c[i][j]=(c[i-1][j]+c[i-1][j-1])%MOD;}int main(){freopen("2195.in","r",stdin);freopen("2195.out","w",stdout);scanf("%d%d",&n,&k);F(i,1,n) scanf("%d",&a[i]);F(i,1,n) scanf("%d",&b[i]);sort(a+1,a+n+1);sort(b+1,b+n+1);int j=1; F(i,1,n) {for (; a[i]>b[j] && j<=n; j++);nxt[i]=j-1;}memset(f,0,sizeof f);F(i,0,n) f[i][0]=1;F(i,1,n) F(j,1,i) f[i][j]=(f[i-1][j]+(f[i-1][j-1]*max(nxt[i]-j+1,0))%MOD)%MOD;init(n);D(i,n,(n+k)/2){d[i]=(f[n][i]*Jc[n-i])%MOD;F(j,i+1,n) d[i]=(d[i]-(d[j]*c[j][i])%MOD+MOD)%MOD;}printf("%lld\n",d[(n+k)/2]);return 0;}
阅读全文
0 0
- 2017年8月12日(模拟四(smoj2193,2194,2195)强连通分量、勾股定理探索、动态规划+容斥原理)
- 2017年8月18日模拟9(smoj2218、2044、2103,动态规划,动态规划、树链剖分)
- 强连通分量 (转)
- 强连通分量(桥)
- 强连通分量(kosaraju)
- 强连通分量(Tarjan)
- 强连通分量(模板)
- 强连通分量(方法)
- 2017年8月15日(模拟7smoj2063,2064,2065暴力、动态规划、数学方法)
- Codeforces711D-Directed Roads(强连通分量+乘法原理)
- 【HAOI2010】【强连通分量】【树形动态规划】软件安装
- 【SSLGZ 2776】2017年10月19日提高组 整除(number)(容斥原理)
- 2017年8月14日(模拟6 smoj2060,2061,2062暴力模拟、数学方法求gcd(a^b,c^d)、动态规划)
- poj 1236(tarjam)强连通分量
- poj-2553(强连通分量)
- 强连通分量SCC模版(LRJ)
- Strongly connected(hdu4635(强连通分量))
- 迷宫城堡(hdu1269,强连通分量)
- 2017.08.15【NOIP提高组】模拟赛B组 生日聚餐
- Leetcode-Longest Common Prefix-Python
- 谁说90后不靠谱?95后都做CEO了
- bzoj 3238 Ahoi2013 后缀数组+单调栈
- HDU 6130 Kolakoski 打表
- 2017年8月12日(模拟四(smoj2193,2194,2195)强连通分量、勾股定理探索、动态规划+容斥原理)
- 常用正则表达式大全,手机、电话、邮箱、身份证(最严格的验证)、IP地址、网址、日期等,一般前台js验证
- 【已解决】ubuntu插网线无法联网
- android相对布局中@id和@+id的区别(原理)
- 关于ETCD和Zookeeper的一些简单了解(转)
- Linux下安装Elasticsearch5.5
- Jmeter运行原理
- 【拜小白opencv】11-综合示例-两幅图像融合-摄像头采集图像-滑动条
- 2017年8月11日(模拟五 2065,2104,2115数学方法、深度搜索、后缀数组+manacher+树状数组+二分)