1001 Interesting Integers

http://www.tzcoder.cn/acmhome/problemdetail.do?&method=showdetail&id=4731

给你[a,b]区间,问有几个数是有趣的数(数字只有一个数不同的),臣妾不行;

1002 Longest Prefix

http://www.tzcoder.cn/acmhome/problemdetail.do?&method=showdetail&id=3559

1003 Count Color

http://www.tzcoder.cn/acmhome/problemdetail.do?&method=showdetail&id=6036

t种颜色上到原色为颜色1的板子上面。线段树

 #include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=;
ll add[maxn<<];
ll ans[maxn<<];
void update(int rt)
{
ans[rt]=ans[rt<<]|ans[rt<<|];
}
void Push(int rt)
{
if(add[rt])
{
add[rt<<]=add[rt];
add[rt<<|]=add[rt];
ans[rt<<]=add[rt];
ans[rt<<|]=add[rt];
add[rt]=;
}
}
void buildtree(int left,int right,int rt)
{
add[rt]=;
if(left==right)
{
ans[rt]=;
return;
}
int mid=(left+right)>>;
buildtree(left,mid,rt<<);
buildtree(mid+,right,rt<<|);
update(rt);
}
void updatetree(int a,int b,int c,int Left,int Right,int rt)
{
if(a<=Left&&b>=Right)
{
add[rt]=<<(c-);
ans[rt]=<<(c-);
return;
}
Push(rt);
int mid=(Left+Right)>>;
if(a<=mid) updatetree(a,b,c,Left,mid,rt<<);
if(mid<b) updatetree(a,b,c,mid+,Right,rt<<|);
update(rt);
}
ll query(int a,int b,int Left,int Right,int rt)
{
if(a<=Left&&b>=Right) return ans[rt];
Push(rt);
int mid=(Left+Right)>>;
ll res=;
if(a<=mid) res|=query(a,b,Left,mid,rt<<);
if(mid<b) res|=query(a,b,mid+,Right,rt<<|);
return res;
}
int main()
{
int L,T,O;scanf("%d%d%d",&L,&T,&O);
buildtree(,L,);
while(O--)
{
getchar();
char ch;scanf("%c",&ch);
if(ch=='C')
{
int a,b,c;scanf("%d%d%d",&a,&b,&c);
if(a>b) swap(a,b);
updatetree(a,b,c,,L,);
}
else{
int a,b;scanf("%d%d",&a,&b);
if(a>b) swap(a,b);
ll res=query(a,b,,L,);
ll num=;
while(res)
{
if(res&) num++;
res>>=;
}
printf("%lld\n",num);
}
}
}

1004 Get Many Persimmon Trees

http://www.tzcoder.cn/acmhome/problemdetail.do?&method=showdetail&id=6045

二维树状数组,以(s,t)的矩形暴力找过去,得到最大的ans。

 #include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define N 105
int ma[N][N];
int n,m;
inline int lowbit(int x){return x&-x;}
void updata(int x,int y)
{
for(int i=x;i<=n;i+=lowbit(i))
for(int j=y;j<=m;j+=lowbit(j)) ma[i][j]++;
}
int query(int x,int y)
{
int res=;
for(int i=x;i>;i-=lowbit(i))
for(int j=y;j>;j-=lowbit(j)) res+=ma[i][j];
return res;
}
int main()
{
int T;
while(~scanf("%d",&T),T)
{
scanf("%d%d",&n,&m);
memset(ma,,sizeof(ma));
while(T--)
{
int a,b;scanf("%d%d",&a,&b);
updata(a,b);
}
int s,t;scanf("%d%d",&s,&t);
int ans=;
for(int i=;i<=n;i++)
for(int j=;j<=m;j++)
{
int upi=i,upj=j,downi=i+s-,downj=j+t-;
if(downi>n||downj>m) continue;
int sum=query(upi-,upj-)+query(downi,downj)-query(downi,upj-)-query(upi-,downj);
ans=ans>sum?ans:sum;
}
printf("%d\n",ans);
}
}

1005 Travelling

http://www.tzcoder.cn/acmhome/problemdetail.do?&method=showdetail&id=6062

 #include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define N 60005
int mp[][],n,m,ans,dp[][N];
int in[],three[];
void init(int n)
{
for(int i=;i<n;i++)
{
for(int j=;j<in[n];j++)
dp[i][j]=-;
for(int j=;j<n;j++)
mp[i][j]=-;
}
}
int arr(int three[],int sum)
{
int res=;
for(int i=;i<n;i++)
{
three[i]=sum%;
sum/=;
if(three[i]) res++;
}
return res;
}
void bfs()
{
for(int kk=;kk<in[n];kk++)
{
int k=arr(three,kk);
for(int i=;i<n;i++)
{
if(three[i])
{
if(k==) dp[i][kk]=;
if(dp[i][kk]==-) continue;
if(k==n)
{
if(ans==-) ans=dp[i][kk];
else ans=min(ans,dp[i][kk]);
}
for(int j=;j<n;j++)
{
if(i!=j&&three[j]<&&mp[i][j]!=-)
{
int mark=kk+in[j];
if(dp[j][mark]==-) dp[j][mark]=dp[i][kk]+mp[i][j];
else dp[j][mark]=min(dp[i][kk]+mp[i][j],dp[j][mark]);
}
}
}
}
}
}
int main()
{
in[]=;
for(int i=;i<=;i++) in[i]=in[i-]*;
while(~scanf("%d%d",&n,&m))
{
init(n);
while(m--)
{
int a,b,c;scanf("%d%d%d",&a,&b,&c);
a--,b--;
if(mp[a][b]!=-) mp[a][b]=mp[b][a]=min(mp[a][b],c);
else mp[a][b]=mp[b][a]=c;
}
ans=-;
bfs();
printf("%d\n",ans);
}
}

1006 A/B

http://www.tzcoder.cn/acmhome/problemdetail.do?&method=showdetail&id=6065

(A/B)%MOD->(A%MOD)*(B-1%MOD)

这里用了求出m的欧拉函数值再进行一次快速幂f(b,phi[M]-1)求逆元

 #include<bits/stdc++.h>
using namespace std;
const int M=;
typedef long long ll;
ll phi[];
void euler()
{
for(int i=;i<=M;++i)
phi[i]=i;
for (int i=;i<=M;i++)
if (phi[i]==i)
for (int j=i;j<=M;j+=i)
phi[j]=phi[j]/i*(i-);
}
ll f(ll a,ll b)
{
ll res=,x=a%M;
while(b)
{
if(b&) res=(res*x)%M;
b>>=;
x=x*x%M;
}
return res;
}
int main()
{
euler();
int t;scanf("%d",&t);
while(t--)
{
ll n,b;scanf("%lld%lld",&n,&b);
printf("%lld\n",n*f(b,phi[M]-)%M);
}
}

拓展欧几里得算法,a*x+b*y=GCD,当a==GCD,b==0时停止查找,可推出最后状态a*1+b*0==GCD。前后等式分别为a*x+b*y=gcd、b*x1+(a%b)*y1=gcd,补上条件递归。

 #include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int M=;
ll ans,re;
void e_gcd(ll a,ll b)
{
if(b==)
{
ans=,re=;
return;
}
e_gcd(b,a%b);
ll temp=ans;
ans=re;
re=temp-a/b*re;
}
int main()
{
int t;scanf("%d",&t);
while(t--)
{
ll n,b;scanf("%lld%lld",&n,&b);
e_gcd(b,M);
ans<?ans+=M:ans+=;
printf("%lld\n",n*ans%M);
}
}

1007 Road Construction

http://www.tzcoder.cn/acmhome/problemdetail.do?&method=showdetail&id=6085

缩点,(叶子节点+1)/2

 #include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define N 1005
vector<int> G[N];
int n,r,low[N],degree[N],mp[N][N],cnt;
void init()
{
for(int i=;i<=n;i++) G[i].clear();
memset(low,,sizeof(low));
memset(degree,,sizeof(degree));
memset(mp,,sizeof(mp));
}
void dfs(int u,int x)
{
int l=G[u].size();
low[u]=cnt++;
for(int i=;i<l;i++)
{
int v=G[u][i];
if(v==x) continue;
if(!low[v]) dfs(v,u);
low[u]=min(low[u],low[v]);
}
}
int tarjan()
{
for(int i=;i<=n;i++)
{
int l=G[i].size();
for(int j=;j<l;j++)
if(low[i]!=low[G[i][j]]) degree[low[i]]++;
}
int res=;
for(int i=;i<=n;i++)
if(degree[i]==) res++;
return res;
}
int main()
{
scanf("%d%d",&n,&r);
init();
while(r--)
{
int a,b;scanf("%d%d",&a,&b);
if(mp[a][b]) continue;
mp[a][b]=mp[b][a]=;
G[a].push_back(b),G[b].push_back(a);
}
cnt=;
dfs(,);
int res=tarjan();
printf("%d\n",(res+)/);
}

1008 Currency Exchange

http://www.tzcoder.cn/acmhome/problemdetail.do?&method=showdetail&id=6097

spfa算法,判断是否存在环路。

 #include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define N 105
double ma1[N][N],ma2[N][N],ans[N];
int n,m,s,a,b;
int vis[N];
double v,x_ab,x_ba,y_ab,y_ba;
bool spfa()
{
ans[s]=v;
vis[s]=;
queue<int> qu;
qu.push(s);
while(!qu.empty())
{
int node=qu.front();
qu.pop();
vis[node]=;
for(int i=;i<=n;i++)
{
if(ans[i]<(ans[node]-ma2[node][i])*ma1[node][i])
{
ans[i]=(ans[node]-ma2[node][i])*ma1[node][i];
if(ans[s]>v) return true;
if(!vis[i]) qu.push(i),vis[i]=;
}
}
}
return false;
}
void init()
{
memset(vis,,sizeof(vis));
for(int i=;i<=n;i++)
{
for(int j=;j<=n;j++)
{
ma1[i][j]=;
ma2[i][j]=ma1[i][j]=;
}
}
}
int main()
{
scanf("%d%d%d%lf",&n,&m,&s,&v);
init();
for(int kk=;kk<m;kk++)
{
scanf("%d%d%lf%lf%lf%lf",&a,&b,&x_ab,&y_ab,&x_ba,&y_ba);
ma1[a][b]=x_ab,ma2[a][b]=y_ab;
ma1[b][a]=x_ba,ma2[b][a]=y_ba;
}
if(spfa()) printf("YES\n");
else printf("NO\n");
}

2019/11/09 TZOJ的更多相关文章

  1. 2019/11/02 TZOJ

    1001 ShaoLin http://www.tzcoder.cn/acmhome/problemdetail.do?&method=showdetail&id=6003 标记一下i ...

  2. 2019.07.09 纪中_B

    错失AK记 2019.07.09[NOIP提高组]模拟 B 组 明明今天的题都很水,可就是没蒟蒻. 写题的时候: T0一眼高精(结果没切)T1看到2啊8啊果断转二进制观察,发现都是左移几位然后空出的位 ...

  3. AWS re:Invent(2019.01.09)

    时间:2019.01.09地点:北京国际饭店

  4. ACM阶段总结(2016.10.07-2016.11.09)

    来这里也有一段时间了…… 总感觉自己练得不是很有效. 最近的一些行动就是不断做比赛,然后不停地补,但是感觉这样像只无头苍蝇,没有效果,学不到什么真正的东西. 最近开始打算补专题,做做codeforce ...

  5. EOJ Monthly 2019.11 E. 数学题(莫比乌斯反演+杜教筛+拉格朗日插值)

    传送门 题意: 统计\(k\)元组个数\((a_1,a_2,\cdots,a_n),1\leq a_i\leq n\)使得\(gcd(a_1,a_2,\cdots,a_k,n)=1\). 定义\(f( ...

  6. [New!!!]欢迎大佬光临本蒟蒻的博客(2019.11.27更新)

    更新于2019.12.22 本蒟蒻在博客园安家啦!!! 本蒟蒻的博客园主页 为更好管理博客,本蒟蒻从今天开始,正式转入博客园. 因为一些原因,我的CSDN博客将彻底不会使用!!!(带来不便,敬请谅解) ...

  7. 2019.11.9 csp-s 考前模拟

    2019.11.9 csp-s 考前模拟 是自闭少女lz /lb(泪奔 T1 我可能(呸,一定是唯一一个把这个题写炸了的人 题外话: 我可能是一个面向数据编程选手 作为一个唯一一个写炸T1的人,成功通 ...

  8. 2021.11.09 P4824 [USACO15FEB]Censoring S与P3121 [USACO15FEB]Censoring G(KMP&&AC自动机)

    2021.11.09 P4824 [USACO15FEB]Censoring S与P3121 [USACO15FEB]Censoring G(KMP&&AC自动机) https://w ...

  9. 2021.11.09 P2292 [HNOI2004]L语言(trie树+AC自动机)

    2021.11.09 P2292 [HNOI2004]L语言(trie树+AC自动机) https://www.luogu.com.cn/problem/P2292 题意: 标点符号的出现晚于文字的出 ...

随机推荐

  1. HDU2094 考新郎

    不容易系列之(4)--考新郎 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) T ...

  2. P3188 [HNOI2007]梦幻岛宝珠

    传送门 注意到 $a,b$ 不大 考虑对每一个 $a*2^b$ 的 $b$ 分别背包 设 $f[i][j]$ 表示只考虑 $b=i$ 的物品时,容量为 $j= \sum a$ 的最大价值 这个就是普通 ...

  3. 【推荐系统】知乎live入门2.细节补充

    参考链接 [推荐系统]知乎live入门 目录 1. 综述 2. 召回 3. 用户画像与标签 4. 特征工程 5. 点击率预估 6. 评估 7. 数据标注 8. 推荐 ================= ...

  4. WannaCry的UWP版,哈哈哈

  5. 命令行运行python -m http.server报错

    最近在学习网站搭建,借助python搭建服务器时,在网站目录启动python服务时报错,如下: UnicodeDecodeError: 'utf-8' codec can't decode byte ...

  6. mui实现分页上拉加载更多 下拉刷新数据的简单实现 移动端下拉上拉

    空下来把mui上拉加载更多,下拉刷新数据做了一个简单的实现,希望可以帮助到需要的朋友 demo项目的结构 <!DOCTYPE html> <html> <head> ...

  7. 基于 VirtualApp 结合 whale hook框架实现hook第三方应用

    要点 1. whale hook framework 使用示例: 2. 参考项目:VirtualHook: 3. 按照 VirtualHook 修改 VirtualApp: 4. 编写 hook pl ...

  8. CF9D How many trees? (dp)

    这题我想了好久 设 \(f_{i,j}\) 为 \(i\) 结点 \(<=j\) 的方案数 固定根,枚举左右子树,就有: \[f_{i,j}=\sum_{k=0}^{n-1}f_{k,j-1}* ...

  9. Python日志库logging总结

    转自  https://cloud.tencent.com/developer/article/1354396 在部署项目时,不可能直接将所有的信息都输出到控制台中,我们可以将这些信息记录到日志文件中 ...

  10. centos 6.5 安装 nginx

    从nginx官网下载安装包:nginx-1.8.1.tar.gz,解压 tar xvf nginx-1.8.1.tar.gz -C /usr/local 安装依赖 yum install gcc yu ...