洛谷3月月赛 R1 Step! ZERO to ONE

普及组难度 290.25/310滚粗


t1

10分的日语翻译题....太难了不会...


t2

真·普及组。略

注意长为1的情况

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
typedef long long ll;
const int N=;
inline int read(){
char c=getchar();int x=,f=;
while(c<''||c>''){if(c=='-')f=-;c=getchar();}
while(c>=''&&c<=''){x=x*+c-'';c=getchar();}
return x*f;
} int n,m,k;
char s[N][N];
int f[N][N],ans;
void dp(){
for(int i=;i<=m;i++)
for(int j=;j<=n;j++){
if(s[i][j]=='.') f[i][j]=f[i][j-]+;
ans+= f[i][j]>=k;
}
memset(f,,sizeof(f));
for(int i=;i<=m;i++)
for(int j=;j<=n;j++){
if(s[i][j]=='.') f[i][j]=f[i-][j]+;
ans+= f[i][j]>=k;
}
}
int main(){
//freopen("in","r",stdin);
m=read();n=read();k=read();
for(int i=;i<=m;i++) scanf("%s",s[i]+);
dp();
if(k==) ans>>=;
printf("%d",ans);
}

t3

不需要树状数组+差分,直接$O(n)$模拟...但是为什么这么慢呢?

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
typedef long long ll;
const int N=2e5+;
inline int read(){
char c=getchar();int x=,f=;
while(c<''||c>''){if(c=='-')f=-;c=getchar();}
while(c>=''&&c<=''){x=x*+c-'';c=getchar();}
return x*f;
}
int n,Q,s,t,l,r,v;
ll f[N],g[N],ans;
int main(){
//freopen("in","r",stdin);
n=read();Q=read();s=read();t=read();
for(int i=;i<=n;i++){
f[i]=g[i]=read();
if(f[i-]<f[i]) ans+=s*(f[i-]-f[i]);
else ans+=t*(f[i-]-f[i]);
}
while(Q--){
l=read();r=read();v=read();
if(l!=){
ll a=g[l-],b=f[l];
if(a<b) ans-=s*(a-b);else ans-=t*(a-b);
f[l]+=v; b=f[l];
if(a<b) ans+=s*(a-b);else ans+=t*(a-b);
}
if(r!=n){
ll a=g[r],b=f[r+];
if(a<b) ans-=s*(a-b);else ans-=t*(a-b);
g[r]+=v; a=g[r];
if(a<b) ans+=s*(a-b);else ans+=t*(a-b);
}
printf("%lld\n",ans);
}
}

t4

比较有意思吧

“给出一个有向环套树森林,修改一些点的父亲使得形成一个有向环,每个点修改有花费,求最小花费”

首先找出环,然后外向树上有多个孩子的点贪心把权值小断开,这样变成了外向链

每个外向链要接入环里,环必须断开,每个外向链的根可以选择断开环上的孩子或链上的孩子

然后沙茶的我忘记可能不连通了,竟然有60分

然后又加上不连通的情况,各种处理写的好乱....乐多赛90.25......

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
typedef long long ll;
const int N=1e5+,INF=2e9+;
inline int read(){
char c=getchar();int x=,f=;
while(c<''||c>''){if(c=='-')f=-;c=getchar();}
while(c>=''&&c<=''){x=x*+c-'';c=getchar();}
return x*f;
} int n,fa[N],val[N],de[N]; struct edge{
int v,ne;
}e[N<<];
int h[N],cnt=;
inline void ins(int u,int v){
cnt++;
e[cnt].v=v;e[cnt].ne=h[u];h[u]=cnt;
} int a[N],cir,tot,vis[N];
int c[N],m;
int mark[N];
struct Graph{
struct edge{int v,ne;}e[N<<];
int cnt,h[N];
inline void ins(int u,int v){
cnt++;
e[cnt].v=v;e[cnt].ne=h[u];h[u]=cnt;
cnt++;
e[cnt].v=u;e[cnt].ne=h[v];h[v]=cnt;
}
int vis[N];
bool dfsDot(int u,int fa){
vis[u]=;
for(int i=h[u];i;i=e[i].ne){
int v=e[i].v;
if(v==fa) continue;
if(vis[v]) {cir=v;return true;}
else if(dfsDot(v,u)) return true;
}
return false;
}
void dfsMar(int u){
mark[u]=;
c[++m]=u;
for(int i=h[u];i;i=e[i].ne)
if(!mark[e[i].v]) dfsMar(e[i].v);
}
}G; bool dfsCir(int u){
vis[u]=;
a[++tot]=u;
for(int i=h[u];i;i=e[i].ne)
if(vis[e[i].v] || dfsCir(e[i].v)) return true;
vis[u]=;
tot--;
return false;
} int q[N],chain[N],circle[N];
ll ans[N],sum;
int cc,ori[N];
inline bool cmp(int a,int b){return val[a]<val[b];}
void solve(int cir){//printf("\nsolve %d\n",cir);
tot=; dfsCir(cir);
m=; G.dfsMar(cir);//printf("m %d %d\n",m,tot); if(tot==m){
int mn=INF;
for(int i=;i<=tot;i++) mn=min(mn,val[a[i]]);
ans[cc]=mn; ori[cc]=;
return;
} for(int j=;j<=m;j++){
int u=c[j];
if(de[u]){//printf("u %d %d\n",u,de[u]);
int p=;
for(int i=h[u];i;i=e[i].ne){
if(!vis[e[i].v]) q[++p]=e[i].v;
else circle[u]=e[i].v;
}
sort(q+,q++p,cmp);
for(int i=;i<p;i++) ans[cc]+=val[q[i]];
chain[u]=q[p];
//printf("q");for(int i=1;i<=p;i++) printf("%d ",q[i]);puts("");
//printf("chaincircle %d %d\n",chain[u],circle[u]);
}
} int mn=INF;
for(int i=;i<=tot;i++){//printf("hi %d\n",a[i]);
int u=a[i],value=val[circle[u]]-val[chain[u]];
mn=min(mn,value);
if(de[u]>) ans[cc]+=min(val[chain[u]],val[circle[u]]);
}
ans[cc]+=max(mn,);
}
int main(){
//freopen("in","r",stdin);
n=read();
for(int i=;i<=n;i++) fa[i]=read(),val[i]=read(),ins(fa[i],i),de[fa[i]]++,G.ins(fa[i],i); for(int i=;i<=n;i++) if(!mark[i]) G.dfsDot(i,),cc++,solve(cir); //printf("cc %d\n",cc);
//for(int i=1;i<=cc;i++) printf("ci %d %lld\n",ori[i],ans[i]); for(int i=;i<=cc;i++)
if(!ori[i] || cc>) sum+=ans[i];
printf("%lld",sum);
}

洛谷3月月赛 R1 Step! ZERO to ONE的更多相关文章

  1. 洛谷4月月赛R1

    T1.题目大意:n个人站成一排,有m个团队,每个人有且属于一个团队,可以让若干个人出队,任意交换这些人的位置后再站回去,问要让所有同一团队的人连续地站在一起,至少要出队几个.(n<=10^5,m ...

  2. 洛谷4月月赛R1 Happy Poppin' Party Train

    来自FallDream的博客,未经允许,请勿转载,谢谢. 听学长说的就来玩一玩,随便乱打打  没想到一堆人被取消了成绩,莫名混了个Rank3 还有第一题数据肯定是有问题 --------------- ...

  3. 洛谷4月月赛R2

    洛谷4月月赛R2 打酱油... A.koishi的数学题  线性筛约数和就可以\(O(N)\)了... #include <iostream> #include <cstdio> ...

  4. 【洛谷5月月赛】玩游戏(NTT,生成函数)

    [洛谷5月月赛]玩游戏(NTT,生成函数) 题面 Luogu 题解 看一下要求的是什么东西 \((a_x+b_y)^i\)的期望.期望显然是所有答案和的平均数. 所以求出所有的答案就在乘一个逆元就好了 ...

  5. 【LGR-054】洛谷10月月赛II

    [LGR-054]洛谷10月月赛II luogu 成功咕掉Codeforces Round #517的后果就是,我\(\mbox{T4}\)依旧没有写出来.\(\mbox{GG}\) . 浏览器 \( ...

  6. 【LGR-051】洛谷9月月赛

    [LGR-051]洛谷9月月赛 luogu 签到题 description 给出\(K\)和质数\(m\),求最小的\(N\)使得\(111....1\)(\(N\)个\(1\))\(\equiv k ...

  7. 「LGR-049」洛谷7月月赛 D.Beautiful Pair

    「LGR-049」洛谷7月月赛 D.Beautiful Pair 题目大意 : 给出长度为 \(n\) 的序列,求满足 \(i \leq j\) 且 $a_i \times a_j \leq \max ...

  8. 洛谷9月月赛round2

    洛谷9月月赛2 t1 题意:懒得说了 分析:模拟 代码: program flag; var a:..,..]of char; n,i,m,j,x,y,ans,k:longint; begin ass ...

  9. 「P4996」「洛谷11月月赛」 咕咕咕(数论

    题目描述 小 F 是一个能鸽善鹉的同学,他经常把事情拖到最后一天才去做,导致他的某些日子总是非常匆忙. 比如,时间回溯到了 2018 年 11 月 3 日.小 F 望着自己的任务清单: 看 iG 夺冠 ...

随机推荐

  1. Parade(单调队列优化dp)

    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=2490 Parade Time Limit: 4000/2000 MS (Java/Others)    ...

  2. c与c++d的typedef

    一.基本概念剖析 int* (*a[5])(int, char*);       //#1 void (*b[10]) (void (*)()); //#2 double(*)() (*pa)[9]; ...

  3. Entity Framework Core 懒加载

    众所周知在EF 6 及以前的版本中,是支持懒加载(Lazy Loading)的,可惜在EF Core 并不支持,必须使用Include方法来支持导航属性的数据加载.不过现在EF Core的开发团队打算 ...

  4. c#中winform窗口的隐藏与显示

    最近在做一个C# 的winform客户端程序,要实现在打开新的窗口时将原来打开的窗口关闭,但是想在关闭新打开的窗口是将原来的那个窗口再次打开,在网上查找各种资料,找了很多代码,都是通过窗口.Hide( ...

  5. 让BLE设备的名称包含MAC地址

    对于研发和测试BLE来说,经常看到同名的设备,是极为不方便的,一大堆设备同时上电会让同事不知道哪一个设备才是自己真正想操作的目标.再说一下小米手环,家中有三支小米手环,打开设备搜索全是“MI”,都不知 ...

  6. 应用fstream格式化输出

    我举一个我应用的例子 file.open("shoroud.jrf" ,ios_base::trunc); //打开文件,清空文件内容 if(!file.good()) { pri ...

  7. 初窥React Native

    这两天在学习react native,被虐得布耀布耀的,运行一个hello world花了一天时间(手动捂脸). 由于是跟着官网走,所以一开始便是开发环境的搭建.其他的就不说了(详情见 React N ...

  8. 任务驱动 搭建SSM开发环境

    本篇主要阐述(IntelliJ IDEA + Maven + Spring + Spring MVC + Mybatis)搭建 为什么想要搭建ssm? 近期正好自己有一个小的点子要实现,恰好这学期开了 ...

  9. addslashes() 函数返回在预定义字符之前添加反斜杠的字符串

    . 预定义字符是: 单引号(') 双引号(") 反斜杠(\) NULL 提示:该函数可用于为存储在数据库中的字符串以及数据库查询语句准备字符串. 注释:默认地,PHP 对所有的 GET.PO ...

  10. html dl dt dd标签元素语法结构与使用

    dl dt dd认识及dl dt dd使用方法 标签用于定义列表类型标签. dl dt dd目录 dl dt dd介绍 结构语法 dl dt dd案例 dl dt dd总结 一.dl dt dd认识 ...