/*
有谁知道这道题结论是怎么来的?
晚上问问学数学的孩子23333
*/
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<cstring> using namespace std;
typedef long long LL;
LL n,m,d; LL gcd(LL x,LL y)
{
return x%y?gcd(y,x%y):y;
}
int main()
{
freopen("line.in","r",stdin);
freopen("line.out","w",stdout);
cin>>n>>m;
d=gcd(n,m);
n/=d;
m/=d;
if((n+m)&)cout<<"1/2"<<endl;
else cout<<(n*m+)/<<"/"<<n*m<<endl;
return ;
}

/*
数据水...
*/
#include<iostream>
#include<cstdio>
#include<cstring> #define N 100007 using namespace std;
int n,m,opt,x,y,z,ans,cnt;
int col[N]; inline int read()
{
int x=,f=;char c=getchar();
while(c>''||c<''){if(c=='-')f=-;c=getchar();}
while(c>=''&&c<=''){x=x*+c-'';c=getchar();}
return x*f;
} inline void solve(int l,int r,int flag)
{
for(int i=l;i<=r;i++) col[i]=flag;
} inline void find(int x)
{
int L=,R=n;
if(col[x]==) printf("0\n");
else
{
for(int i=x-;i>=;i--) if(col[i]){L=i+;break;}
for(int i=x+;i<=n;i++) if(col[i]){R=i-;break;}
if(L== || R==n){printf("INF\n");}
else printf("%d\n",R-L+);
}
} int main()
{
freopen("explore.in","r",stdin);
freopen("explore.out","w",stdout);
n=read();m=read();
for(int i=;i<=m;i++)
{
opt=read();
if(opt==)
{
x=read();y=read();
solve(x,y,);
}
else if(opt==)
{
x=read();y=read();
solve(x,y,);
}
else x=read(),find(x);
}
return ;
}

70暴力

/*
二分+线段树
By LXT 林欣彤
*/
#include<complex>
#include<cstdio>
using namespace std;
const int N=1e5+;
int n,m;
int Fog[N<<],lazy[N<<];
int qread()
{
int x=;
char ch=getchar();
while(ch<'' || ch>'')ch=getchar();
while(ch>='' && ch<=''){x=x*+ch-'';ch=getchar();}
return x;
}
void PushUp(int rt)
{
Fog[rt]=(Fog[rt<<]==) || (Fog[rt<<|]==);
}
void PushDown(int rt)
{
if(lazy[rt])
{
Fog[rt<<]=Fog[rt<<|]=lazy[rt];
lazy[rt<<]=lazy[rt<<|]=lazy[rt];
lazy[rt]=;
}
}
void Modify(int l,int r,int rt,int nowl,int nowr,int v)
{
if(nowl<=l && r<=nowr)
{
Fog[rt]=lazy[rt]=v;
return;
}
int mid=l+r>>;
PushDown(rt);
if(nowl<=mid)Modify(l,mid,rt<<,nowl,nowr,v);
if(mid<nowr)Modify(mid+,r,rt<<|,nowl,nowr,v);
PushUp(rt);
}
int Query(int l,int r,int rt,int nowl,int nowr)
{
if(nowl<=l && r<=nowr)return Fog[rt];
int mid=l+r>>;
PushDown(rt);
if(nowl<=mid)if(Query(l,mid,rt<<,nowl,nowr)==)return ;
if(mid<nowr)if(Query(mid+,r,rt<<|,nowl,nowr)==)return ;
return ;
}
int main()
{
freopen("explore.in","r",stdin);
freopen("explore.out","w",stdout);
scanf("%d%d",&n,&m);
int p,l,r;
while(m--)
{
p=qread();l=qread();
if(p==)
{
if(Query(,n,,l,l)==){puts("");continue;}
int L=,R=l,res1=l,res2=l;
while(L<=R)
{
int mid=L+R>>;
if(Query(,n,,mid,l)==)
res1=mid,R=mid-;
else L=mid+;
}
L=l;R=n;
while(L<=R)
{
int mid=L+R>>;
if(Query(,n,,l,mid)==)
res2=mid,L=mid+;
else R=mid-;
}
if(res1== || res2==n)puts("INF");
else printf("%d\n",res2-res1+);
}
else
{
r=qread();
Modify(,n,,l,r,p);
}
}
fclose(stdin);fclose(stdout);
return ;
}

#include<complex>
#include<cstdio>
#include<iostream> using namespace std;
const int N=1e5+;
struct node{
int u,v,w,nxt;
}e[N<<]; int n,m,Enum,tim,tot;
long long ans=1ll<<;
int front[N],in[N],b[N],c[N],fat[N],Log[N],Smin[N][];
bool a[N]; int qread()
{
int x=;
char ch=getchar();
while(ch<'' || ch>'')ch=getchar();
while(ch>='' && ch<=''){x=x*+ch-'';ch=getchar();}
return x;
} void Insert(int u,int v,int w)
{
e[++Enum].u=u;
e[Enum].v=v;
e[Enum].w=w;
e[Enum].nxt=front[u];
front[u]=Enum;
} int find(int x)
{
if(fat[x]!=x)fat[x]=find(fat[x]);
return fat[x];
} void dfs1(int num)
{
if(num==n-)
{
long long res=;
for(int i=;i<n;i++)
res+=b[i]*e[i<<].w;
for(int i=;i<=n;i++)
fat[i]=i;
for(int i=;i<n;i++)
if(!b[i])
{
int r1=find(e[i<<].u),r2=find(e[i<<].v);
fat[r2]=r1;
}
for(int i=;i<=m;i++)
for(int j=i+;j<=m;j++)
if(find(c[i])==find(c[j]))return;
ans=min(ans,res);
return;
}
b[num+]=;dfs1(num+);
b[num+]=;dfs1(num+);
} void Solve1()
{
dfs1();
cout<<ans<<endl;
} void dfs(int x,int from,int w)
{
Smin[++tim][]=w;
if(a[x])b[++tot]=tim;
for(int i=front[x];i;i=e[i].nxt)
{
int v=e[i].v;
if(v==from)continue;
dfs(v,x,e[i].w);
}
} int Query(int l,int r)
{
int k=Log[r-l+];
return min(Smin[l][k],Smin[r-(<<k)+][k]);
} void ST()
{
for(int i=;i<=tim;i++)
Log[i]=Log[i>>]+;
for(int j=;j<=Log[tim];j++) for(int i=tim-(<<j-);i;i--)
Smin[i][j]=min(Smin[i][j-],Smin[i+(<<j-)][j-]);
} void Solve2()
{
for(int i=;i<=n;i++)
if(in[i]==)
{
dfs(i,,0x3f3f3f3f);
break;
}
ST();
long long res=;
for(int i=;i<=tot;i++)
res+=Query(b[i-]+,b[i]);
cout<<res<<endl;
} int main()
{
// freopen("apple.in","r",stdin);
// freopen("apple.out","w",stdout);
scanf("%d%d",&n,&m);
int u,v,w;
for(int i=;i<n;i++)
{
u=qread()+;v=qread()+;w=qread();
Insert(u,v,w);Insert(v,u,w);
in[u]++;in[v]++;
}
for(int i=;i<=m;i++)
c[i]=qread()+,a[c[i]]=;
int k=;
for(int i=;i<=n;i++) if(in[i]==)k++;
if(k==n-)Solve2();
else Solve1();
fclose(stdin);fclose(stdout);
return ;
}

60暴力

/*
形 DP。首先任取一个有苹果的结点为根,构建整棵树,接下来自底向上进行动态
规划。设 f[u]表示以 u 为根的子树中苹果互不连通,且子树中的苹果不与树外的苹果连通的
最小代价。g[u]表示以 u 为根的子树中苹果互不连通所需的最小代价
那么当 u 上有苹果时,
g[u] = sum (f[v]) (v 为 u 的所有子节点) ;
f[u] = g[u] + pre[u] (pre[u]为 u 与其父节点连边的权值) 。
当 u 上无苹果时,
设 s[u] = sum (f[v]) (v 为 u 的所有子节点)
则 g[u] = min (s[u] - f[v] + g[v])
f[u] = min(s[u], g[u] + pre[u])
*/
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<iostream>
#include<queue> #define ll long long
#define M 200010 using namespace std;
const ll inf = 10000000000000000ll;
ll f[M], g[M], p[M];
ll nxt[M], head[M], ver[M], to[M], cnt, n, k, sz[M];
bool is[M];
int sta[M]; int read()
{
int nm = , f = ;
char c = getchar();
for(; !isdigit(c); c = getchar()) if(c == '-') f = -;
for(; isdigit(c); c = getchar()) nm = nm * + c - '';
return nm * f;
} void push(int vi, int vj, int v)
{
cnt++, nxt[cnt] = head[vi], head[vi] = cnt, to[cnt] = vj, ver[cnt] = v;
} void dfs1(int now, int fa)
{
if(is[now]) sz[now] = ;
for(int i = head[now]; i; i = nxt[i])
{
int vj = to[i];
if(vj == fa) continue;
dfs1(vj, now);
sz[now] += sz[vj];
}
} void dfs2(int now, int fa)
{
if(sz[now]) f[now] = g[now] = inf;
ll tot = ;
for(int i = head[now]; i; i = nxt[i])
{
int vj = to[i];
if(vj == fa) continue;
if(sz[vj])
{
dfs2(vj, now);
tot += g[vj];
}
}
ll tot2 = , maxx = ;
for(int i = head[now]; i; i = nxt[i])
{
int vj = to[i];
if(vj == fa || !sz[vj]) continue;
ll op = min(ver[i], f[vj] - g[vj]);
tot2 += op;
maxx = max(maxx, op);
}
if(is[now]) f[now] = inf, g[now] = tot + tot2;
else f[now] = tot + tot2, g[now] = tot + tot2 - maxx;
} int main()
{
freopen("apple.in", "r", stdin);
freopen("apple.out", "w", stdout);
n = read(), k = read();
for(int i = ; i < n; i++)
{
int vi = read(), vj = read(), v = read();
push(vi, vj, v);
push(vj, vi, v);
}
for(int i = ; i <= k; i++) is[read()] = true;
dfs1(, );
dfs2(, );
cout << min(f[], g[]) << "\n";
return ;
}

10.12NOIP模拟题(2)的更多相关文章

  1. 10.12NOIP模拟题(1)

    #include<iostream> #include<cstdio> #include<cstring> #include<queue> #defin ...

  2. 9.12NOIP模拟题

    NOIP 2017 全假模拟冲刺                                               hkd 题目名称 Spfa 走楼梯缩小版 滑稽 题目类型 传统 传统 传统 ...

  3. 10.13NOIP模拟题

    /* 容斥原理 考虑到a[i]要么不会太大,要么就对答案贡献很小 dfs即可 */ #include<bits/stdc++.h> #define ll long long #define ...

  4. 10.23NOIP模拟题

    叉叉题目描述现在有一个字符串,每个字母出现的次数均为偶数.接下来我们把第一次出现的字母 a 和第二次出现的 a 连一条线,第三次出现的和四次出现的字母 a 连一条线,第五次出现的和六次出现的字母 a ...

  5. 10.9NOIP模拟题

    /* big模拟 细节不少 remove表示这个玩意儿在这一秒有没有移动 注意在一秒内所有小葱一起移动,所以如果一个一个处理 别忘了“错位”这种情况 */ #include<iostream&g ...

  6. 10.11NOIP模拟题(3)

    /* 可以看出,对于一段区间[L,R]如果统计了答案 若a[L]<a[R],那么当右端点往左移时答案不会更优,a[R]>a[L]同理 所以两个指针分别从头尾往中间扫那边小移哪边即可. */ ...

  7. 10.11NOIP模拟题(2)

    /* string水过 */ #include<bits/stdc++.h> #define N 1001 using namespace std; int n,x,y,m,pre; st ...

  8. poj 1008:Maya Calendar(模拟题,玛雅日历转换)

    Maya Calendar Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 64795   Accepted: 19978 D ...

  9. poj 1888 Crossword Answers 模拟题

    Crossword Answers Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 869   Accepted: 405 D ...

随机推荐

  1. 拥抱变革(More Fearless Change)

    今天从大敏捷群中了解到Tid2017的一个讲演,一位敏捷教练,组织变革的专著的作者Linda的讲演. <More Fearless Change-Strategy for Making Your ...

  2. Fiddler抓取https相关设置

    转自:https://www.cnblogs.com/joshua317/p/8670923.html 很多使用fiddler抓包,对于http来说不需太多纠结,随便设置下就能用,但是抓取https就 ...

  3. Leetcode 207.课程表

    课程表 现在你总共有 n 门课需要选,记为 0 到 n-1. 在选修某些课程之前需要一些先修课程. 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们: [0,1] 给定课程总 ...

  4. Oracle导出txt文本文件

    转自: http://blog.csdn.net/ahngzw77/article/details/8652722 对于SPOOL数据的SQL,最好要自己定义格式,以方便程序直接导入,SQL语句如:  ...

  5. 解决webview.getFavicon()返回值总是为空的问题

    在webview中,我们需要获取网站的favicon.ico图标,但是默认状态下,WebChromeClient中的onReceivedIcon方法获取到的icon总是为null; webview.g ...

  6. Organize Your Train part II 字典树(此题专卡STL)

    Organize Your Train part II Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 8787   Acce ...

  7. 本地配置nginx的https

    前文:因为要用谷歌下的getUserMedia方法,而getUserMedia方法只能在https下才能调用,所以在本地搭建https来测试,现在说说步骤. 步骤1:下载nginx-1.10.3.zi ...

  8. Linux MariaDB 遗忘密码后重置密码

    Linux MariaDB 遗忘密码后重置密码 MariaDB 是 MySQL 的一个分支数据库.处理的办法和 MySQL 相同. 修改 MySQL 配置文件 在 [mysqld] 追加配置项: [r ...

  9. dubbo的jmeter压测时jar包的热加载/动态加载

    在做dubbo的jmeter压测时,需要把jar包放入jmeter的lib/ext目录下,但是jmeter启动的时候会自动加载这个目录lib目录及lib/ext目录,这样启动后放入这些目录下的jar包 ...

  10. javascript statically scope

    在javascript 里面, 函数中使用的未定义的变量,会默认变为全局的变量. 而通过 var 这个关键字定义的变量,就是局部变量. As far as the output is concerne ...