Educational Codeforces Round 58 Div. 2 自闭记
明明多个几秒就能场上AK了。自闭。
A:签到。
- #include<iostream>
- #include<cstdio>
- #include<cmath>
- #include<cstdlib>
- #include<cstring>
- #include<algorithm>
- using namespace std;
- #define ll long long
- char getc(){char c=getchar();while ((c<'A'||c>'Z')&&(c<'a'||c>'z')&&(c<''||c>'')) c=getchar();return c;}
- int gcd(int n,int m){return m==?n:gcd(m,n%m);}
- int read()
- {
- int x=,f=;char c=getchar();
- while (c<''||c>'') {if (c=='-') f=-;c=getchar();}
- while (c>=''&&c<='') x=(x<<)+(x<<)+(c^),c=getchar();
- return x*f;
- }
- int T,l,r,d;
- signed main()
- {
- /*#ifndef ONLINE_JUDGE
- freopen("a.in","r",stdin);
- freopen("a.out","w",stdout);
- const char LL[]="%I64d\n";
- #endif*/
- T=read();
- while (T--)
- {
- l=read(),r=read(),d=read();
- if (d<l) cout<<d<<endl;
- else cout<<1ll*(r/d+)*d<<endl;
- }
- return ;
- //NOTICE LONG LONG!!!!!
- }
B:签到。
- #include<iostream>
- #include<cstdio>
- #include<cmath>
- #include<cstdlib>
- #include<cstring>
- #include<algorithm>
- using namespace std;
- #define ll long long
- #define N 500010
- char getc(){char c=getchar();while ((c<'A'||c>'Z')&&(c<'a'||c>'z')&&(c<''||c>'')) c=getchar();return c;}
- int gcd(int n,int m){return m==?n:gcd(m,n%m);}
- int read()
- {
- int x=,f=;char c=getchar();
- while (c<''||c>'') {if (c=='-') f=-;c=getchar();}
- while (c>=''&&c<='') x=(x<<)+(x<<)+(c^),c=getchar();
- return x*f;
- }
- int n;
- char s[N];
- signed main()
- {
- /*#ifndef ONLINE_JUDGE
- freopen("a.in","r",stdin);
- freopen("a.out","w",stdout);
- const char LL[]="%I64d\n";
- #endif*/
- scanf("%s",s+);n=strlen(s+);
- bool flag=;int x=n+,y=;
- for (int i=;i<=n;i++)
- {
- if (s[i]=='[') flag=;
- if (s[i]==':') if (flag) {x=i;break;}
- }
- flag=;
- for (int i=n;i>=;i--)
- {
- if (s[i]==']') flag=;
- if (s[i]==':') if (flag) {y=i;break;}
- }
- if (x>=y) cout<<-;
- else
- {
- int ans=;
- for (int i=x+;i<y;i++)
- if (s[i]=='|') ans++;
- cout<<ans;
- }
- return ;
- //NOTICE LONG LONG!!!!!
- }
C:wa了无数发。按左端点排序后找一个连续且和其他线段不相交的线段集即可。
- #include<iostream>
- #include<cstdio>
- #include<cmath>
- #include<cstdlib>
- #include<cstring>
- #include<algorithm>
- using namespace std;
- #define ll long long
- #define N 100010
- char getc(){char c=getchar();while ((c<'A'||c>'Z')&&(c<'a'||c>'z')&&(c<''||c>'')) c=getchar();return c;}
- int gcd(int n,int m){return m==?n:gcd(m,n%m);}
- int read()
- {
- int x=,f=;char c=getchar();
- while (c<''||c>'') {if (c=='-') f=-;c=getchar();}
- while (c>=''&&c<='') x=(x<<)+(x<<)+(c^),c=getchar();
- return x*f;
- }
- int T,n,ans[N];
- struct data
- {
- int l,r,i;
- bool operator <(const data&a) const
- {
- return l<a.l;
- }
- }a[N];
- signed main()
- {
- #ifndef ONLINE_JUDGE
- freopen("a.in","r",stdin);
- freopen("a.out","w",stdout);
- const char LL[]="%I64d\n";
- #endif
- T=read();
- while (T--)
- {
- n=read();
- for (int i=;i<=n;i++) a[i].l=read(),a[i].r=read(),a[i].i=i;
- sort(a+,a+n+);
- bool flag=;a[n+].l=;
- int t=,x=a[].r;
- while (t<n&&a[t+].l<=x) t++,x=max(x,a[t].r);
- if (t==n) cout<<-<<endl;
- else
- {
- for (int i=;i<=t;i++) ans[a[i].i]=;
- for (int i=t+;i<=n;i++) ans[a[i].i]=;
- for (int i=;i<=n;i++) printf("%d ",ans[i]);
- cout<<endl;
- }
- }
- return ;
- //NOTICE LONG LONG!!!!!
- }
E:这才是真签到吧?wa了一发自闭啊?
- #include<iostream>
- #include<cstdio>
- #include<cmath>
- #include<cstdlib>
- #include<cstring>
- #include<algorithm>
- using namespace std;
- #define ll long long
- #define N 500010
- char getc(){char c=getchar();while ((c<'A'||c>'Z')&&(c<'a'||c>'z')&&(c<''||c>'')) c=getchar();return c;}
- int gcd(int n,int m){return m==?n:gcd(m,n%m);}
- int read()
- {
- int x=,f=;char c=getchar();
- while (c<''||c>'') {if (c=='-') f=-;c=getchar();}
- while (c>=''&&c<='') x=(x<<)+(x<<)+(c^),c=getchar();
- return x*f;
- }
- int m,u,v;
- signed main()
- {
- #ifndef ONLINE_JUDGE
- freopen("b.in","r",stdin);
- freopen("b.out","w",stdout);
- const char LL[]="%I64d\n";
- #endif
- m=read();
- while (m--)
- {
- char c=getchar();while (c!='+'&&c!='?') c=getchar();
- int x=read(),y=read();if (x>y) swap(x,y);
- if (c=='+')
- {
- u=max(u,x),v=max(y,v);
- }
- else
- {
- if (x>=u&&y>=v) printf("YES\n");
- else printf("NO\n");
- }
- }
- return ;
- //NOTICE LONG LONG!!!!!
- }
D:如果路径经过某点,最后所得的路径gcd显然是该点某些质因子的倍数。对此dp即可。一发wa on 3,3可是样例啊?自闭了啊?
- #include<iostream>
- #include<cstdio>
- #include<cmath>
- #include<cstdlib>
- #include<cstring>
- #include<algorithm>
- using namespace std;
- #define ll long long
- #define N 200010
- char getc(){char c=getchar();while ((c<'A'||c>'Z')&&(c<'a'||c>'z')&&(c<''||c>'')) c=getchar();return c;}
- int gcd(int n,int m){return m==?n:gcd(m,n%m);}
- int read()
- {
- int x=,f=;char c=getchar();
- while (c<''||c>'') {if (c=='-') f=-;c=getchar();}
- while (c>=''&&c<='') x=(x<<)+(x<<)+(c^),c=getchar();
- return x*f;
- }
- int n,a[N],p[N],f[N][],prime[N][],t,ans;
- struct data{int to,nxt;
- }edge[N<<];
- void addedge(int x,int y){t++;edge[t].to=y,edge[t].nxt=p[x],p[x]=t;}
- void dfs(int k,int from)
- {
- for (int i=p[k];i;i=edge[i].nxt)
- if (edge[i].to!=from)
- {
- dfs(edge[i].to,k);
- for (int x=;x<=prime[edge[i].to][];x++)
- for (int y=;y<=prime[k][];y++)
- if (prime[edge[i].to][x]==prime[k][y])
- {
- ans=max(ans,f[k][y]+f[edge[i].to][x]+);
- f[k][y]=max(f[k][y],f[edge[i].to][x]+);
- }
- }
- }
- signed main()
- {
- #ifndef ONLINE_JUDGE
- freopen("a.in","r",stdin);
- freopen("a.out","w",stdout);
- const char LL[]="%I64d\n";
- #endif
- n=read();
- for (int i=;i<=n;i++) a[i]=read();
- bool flag=;
- for (int i=;i<=n;i++) if (a[i]!=) flag=;
- if (flag) {cout<<;return ;}
- for (int i=;i<n;i++)
- {
- int x=read(),y=read();
- addedge(x,y),addedge(y,x);
- }
- for (int i=;i<=n;i++)
- {
- for (int j=;j*j<=a[i];j++)
- if (a[i]%j==)
- {
- prime[i][++prime[i][]]=j;
- while (a[i]%j==) a[i]/=j;
- }
- if (a[i]>) prime[i][++prime[i][]]=a[i];
- }
- dfs(,);
- cout<<ans+;
- return ;
- //NOTICE LONG LONG!!!!!
- }
G:一眼线性基,然后就往别的方面想了。自闭了半天直接乱搞求个前缀异或和搞了个线性基上去就pp了。冷静了半天正确性何在。事实上划分序列相当于选出一些前缀异或和,这是一个裸到不行的线性基。注意虽然最后一个前缀和应该是必须选的,但是不考虑也不会造成什么影响(吧)。
- #include<iostream>
- #include<cstdio>
- #include<cmath>
- #include<cstdlib>
- #include<cstring>
- #include<algorithm>
- using namespace std;
- #define ll long long
- #define N 200010
- char getc(){char c=getchar();while ((c<'A'||c>'Z')&&(c<'a'||c>'z')&&(c<''||c>'')) c=getchar();return c;}
- int gcd(int n,int m){return m==?n:gcd(m,n%m);}
- int read()
- {
- int x=,f=;char c=getchar();
- while (c<''||c>'') {if (c=='-') f=-;c=getchar();}
- while (c>=''&&c<='') x=(x<<)+(x<<)+(c^),c=getchar();
- return x*f;
- }
- int n,a[N],base[],ans;
- signed main()
- {
- #ifndef ONLINE_JUDGE
- freopen("a.in","r",stdin);
- freopen("a.out","w",stdout);
- const char LL[]="%I64d\n";
- #endif
- n=read();
- for (int i=;i<=n;i++) a[i]=a[i-]^read();
- if (a[n]==) {cout<<-;return ;}
- for (int i=;i<=n;i++)
- for (int j=;~j;j--)
- if (a[i]&(<<j))
- {
- if (base[j]) a[i]^=base[j];
- else {base[j]=a[i],ans++;break;}
- }
- cout<<ans;
- return ;
- //NOTICE LONG LONG!!!!!
- }
F:随便都知道是二分答案。但是nmlog显然有些吃力。考虑random_shuffle一发,每次记录当前需要的最大容量,考虑下一辆卡车时先判断当前容量是否能满足其需求,如果不行再二分一下。这样复杂度大约是nm+nlogmlogV,因为只需要对所需容量的单调栈中的卡车进行二分,而排列又是随机的。复杂度证明似乎在一篇cfblog里看到过。(突然发现整个idea都在这篇blog里https://codeforces.com/blog/entry/62602)一开始又没注意到要开long long,交一发in queue了半天,然后wa on 3,结果改了一发又没改全,交一发再次in queue了半天,接着wa on 3。然后就只剩20s了,手速不行,就,自闭了。
- #include<iostream>
- #include<cstdio>
- #include<cmath>
- #include<cstdlib>
- #include<cstring>
- #include<algorithm>
- #include<ctime>
- using namespace std;
- #define ll long long
- #define N 410
- #define M 250010
- char getc(){char c=getchar();while ((c<'A'||c>'Z')&&(c<'a'||c>'z')&&(c<''||c>'')) c=getchar();return c;}
- int gcd(int n,int m){return m==?n:gcd(m,n%m);}
- int read()
- {
- int x=,f=;char c=getchar();
- while (c<''||c>'') {if (c=='-') f=-;c=getchar();}
- while (c>=''&&c<='') x=(x<<)+(x<<)+(c^),c=getchar();
- return x*f;
- }
- int n,m,a[N];
- ll ans;
- struct data{int s,f,c,r;
- }b[M];
- bool check(ll k,int i)
- {
- ll cur=k;int cnt=;
- for (int j=b[i].s;j<b[i].f;j++)
- {
- if (cur>=1ll*b[i].c*(a[j+]-a[j])) cur-=1ll*b[i].c*(a[j+]-a[j]);
- else
- {
- cur=k,cnt++;
- if (cur>=1ll*b[i].c*(a[j+]-a[j])) cur-=1ll*b[i].c*(a[j+]-a[j]);
- else return ;
- }
- if (cnt>b[i].r) return ;
- }
- return ;
- }
- signed main()
- {
- #ifndef ONLINE_JUDGE
- freopen("b.in","r",stdin);
- freopen("b.out","w",stdout);
- const char LL[]="%I64d\n";
- #endif
- srand(time());
- n=read(),m=read();
- for (int i=;i<=n;i++) a[i]=read();
- for (int i=;i<=m;i++) b[i].s=read(),b[i].f=read(),b[i].c=read(),b[i].r=read();
- random_shuffle(b+,b+m+);
- for (int i=;i<=m;i++)
- if (!check(ans,i))
- {
- ll l=ans+,r=1000000000000000000ll;
- while (l<=r)
- {
- ll mid=l+r>>;
- if (check(mid,i)) ans=mid,r=mid-;
- else l=mid+;
- }
- }
- cout<<ans;
- return ;
- //NOTICE LONG LONG!!!!!
- }
Educational Codeforces Round 58 Div. 2 自闭记的更多相关文章
- Codeforces Round #554 (Div. 2)自闭记
A 签到 #include<bits/stdc++.h> using namespace std; ],t[],ans; int main() { scanf("%d%d&quo ...
- Codeforces Round #545 Div. 1自闭记
A:求出该行该列各有多少个比其小的取max,该行该列各有多少个比其大的取max,加起来即可. #include<iostream> #include<cstdio> #incl ...
- Codeforces Round #528 Div. 1 自闭记
整天自闭. A:有各种讨论方式.我按横坐标排了下然后讨论了下纵坐标单调和不单调两种情况.写了15min也就算了,谁能告诉我printf和cout输出不一样是咋回事啊?又调了10min啊?upd:突然想 ...
- Codeforces Round #526 Div. 1 自闭记
日常猝死. A:f[i]表示子树内包含根且可以继续向上延伸的路径的最大价值,统计答案考虑合并两条路径即可. #include<iostream> #include<cstdio> ...
- Codeforces Round #567 (Div. 2)自闭记
嘿嘿嘿,第一篇文章,感觉代码可以缩起来简直不要太爽 打个div2发挥都这么差... 平均一题fail一次,还调不出错,自闭了 又一次跳A开B,又一次B傻逼错误调不出来 罚时上天,E还傻逼了..本来这场 ...
- Codeforces Round #530 Div. 1 自闭记
A:显然应该让未确定的大小尽量大.不知道写了啥就wa了一发. #include<iostream> #include<cstdio> #include<cmath> ...
- Codeforces Round #525 Div. 2 自闭记
A:签到. #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> ...
- Educational Codeforces Round 58 (Rated for Div. 2) 题解
Educational Codeforces Round 58 (Rated for Div. 2) 题目总链接:https://codeforces.com/contest/1101 A. Min ...
- Educational Codeforces Round 84 (Div. 2)
Educational Codeforces Round 84 (Div. 2) 读题读题读题+脑筋急转弯 = =. A. Sum of Odd Integers 奇奇为奇,奇偶为偶,所以n,k奇偶性 ...
随机推荐
- Android 新加几个开源项目
http://www.androidviews.net http://www.theultimateandroidlibrary.com test 最低版本: 简介: 地址: 效果图: test A ...
- CF700E Cool Slogans SAM、线段树合并、树形DP
传送门 在最优的情况下,序列\(s_1,s_2,...,s_k\)中,\(s_i (i \in [2 , k])\)一定会是\(s_{i-1}\)的一个\(border\),即\(s_i\)同时是\( ...
- JS-详解算数运算符"+"
二元加法运算符“+”可以对两个数字做加法,也可以做字符串连接操作: 当两个操作数都是数字或都是字符串的时候,计算结果是显而易见的.然而对于其他情况来说,则要进行一些必要的类型转换,并且运算符的行为依赖 ...
- Mybatis中 collection 和 association 的区别?
public class A{ private B b1; private List<B> b2;} 在映射b1属性时用association标签,(一对一的关系) 映射b2时用colle ...
- 做完小程序项目、老板给我加了5k薪资~
大家好,我是苏南,今天要给大家分享的是最近公司做的一个小程序项目,过程中的一些好的总结和遇到的坑,希望能给其他攻城狮带来些许便利,更希望能做完之后老板给你加薪- 今天是中秋节的第一天,假日的清晨莫名的 ...
- 解密自动CPS变换
7.2 1 前言 我最一开始听到 CPS 变换这个词是在王垠的博客里 (请求不要喷我),就是那篇他第一次宣传他的40行代码的文章. 我当时什么都看不懂,所以没太注意,不过我也正在学程序语言方面的东西, ...
- Charles使用详解
前言: Charles是在 Mac 下常用的网络封包截取工具,在做移动开发时,我们为了调试与服务器端的网络通讯协议,常常需要截取网络封包来分析. 一.主界面介绍 二.网页抓包 启动 Cha ...
- #个人博客作业Week3——必应词典案例分析
第一部分 调研以及评测 一.BUG分析 1. 翻译部分原文语言检测部分 1) 症状: 当选择原文语言是简体中文时,输入英文查询,程序不报错,继续翻译,选择其他类型语言也是如此. 且如果出现这种情况 ...
- Scrum Meeting 5
第五次会议 No_00:工作情况 No_01:任务说明 待完成 已完成 No_10:燃尽图 No_11:照片记录 待更新 No_100:代码/文档签入记录 No_101:出席表 ...
- pandas修改全列的时间格式 无需使用apply
df.date.dt.strftime('%Y%m%d') #实现全列修改时间格式