UPD:变色了!!!历史最高1618~

Educational Codeforces Round 81 (Rated for Div. 2)

The 2019 University of Jordan Collegiate Programming Contest

 

充实的一天,打两场可还行。补的一些题记录一下。

edu81

Educational Codeforces Round 81 (Rated for Div. 2)

还不知道上分还是掉分,还挺可惜的,被B卡了没做出来,C也调了一会儿答案的更新,反而是D做的很快,D直接秒了嘻嘻,大半夜的挺高兴。要是没出CD就血掉分勒。

赛后hack三个别人的B,才知道edu的hack不加分,为啥子勒?、

b.Infinite Prefixes

这题我自己光判断-1的条件就想错了,什么情况有无限的?只有当每个循环节的贡献产出为0( 我们记循环节贡献产出为cir),并且一个循环节内有符合的答案,就是无限个。

这个不难理解,就是存在某个或者某些位置有答案,并且之后的每个循环节的这个位置都依然有答案。

那怎么保证别的情况的答案不是无限呢?这也可以理解(赛中的我没有意识到),如果某个位置的答案符合,那么 cir 或正或负必然会将别的循环节的这个数给搞得不一样。

然后口胡证明完毕。经过这样的思考,我们就发现,一般的情况来说(cir不为0),每个位置最多只有一次答案。

只需观察是否有 k*cir+cur==x  k>=0.

cur表示遍历到当前位置的值 cnt0-cnt1的值。k>=0也是必要的。

然后我这里也搞的很失败, 我一直用的 x%cir==cur?这样的 在x与cir正负不一致的情况,十分的混乱而难搞,无法保证正确性,而且无法保证k的非负性。

(个人理解,有兴趣也可以查阅下对负数取模的问题,我看了感觉稍微明白了一些,都是向0取整,正确性似乎可以,k的非负性的就无法保证了)

不过可以把这个式子稍微改写下,就是  ( (x-cur )%cir ==0  && (x-cur)/cir >= 0 )  用这样一个式子 就非常的完美啦。 保证是倍数,保证有串长不会负(滑稽。

hack别人的时候很多人特判正负的情况,其实还蛮麻烦的我感觉。

然后老生常谈 puts 不要和关同步的cin cout混用,我补的时候puts("-1")那里出大问题。开同步习惯了, 时间不紧的题好像可以不用关同步。关同步反而限制了我用printf 和puts

代码

 #include <bits/stdc++.h>
#ifndef ONLINE_JUDGE
#define debug(x) cout << #x << ": " << x << endl
#else
#define debug(x)
#endif
using namespace std;
typedef long long ll;
const int MAXN=2e5+;
const int INF=0x3f3f3f3f;
const int MOD=1e9+; void solve()
{
int n,x;
string s;
cin>>n>>x>>s;
int sum=;
for(int i=;i<s.size();++i)
{
if(s[i]=='') sum++;
else sum--;
}
int cur=,ans=;
if(x==) ans++;
for(int i=;i<s.size();++i)
{
if(s[i]=='') cur++;
else cur--;
if(!sum)
{
if(cur==x)
{
cout<<-<<endl;
return;
}
}
else if((x-cur)%sum== && (x-cur)/sum>=)
ans++;
}
cout<<ans<<endl;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie();
int t;
cin>>t;
while(t--)
{
solve();
}
return ;
}

C.Obtain The String  思路就是记录每个字母依次出现的位置,然后对于目标串的每个字符去二分查找,更新位置信息,(这里我ans的更新和cur的位置写炸了,调了几十分钟。。。)

D.Same GCDs我眼中的欧拉函数裸题嘻嘻,数论专题没白做,C和D提交只差5min,zdnb。可惜赛后证明不来,只能口胡。。。

Jodran

The 2019 University of Jordan Collegiate Programming Contest

挺有趣的比赛哈哈,水题够多,也有有趣的题和idea.做了8题,补了E和J。

D.Robots Easy,一个机器人的,虽然我自己是疯狂特判模拟移动的,想起来好蠢,还写了好一会儿,思路没那么灵巧。

其实你不用动态更新维护当前的位置,1000次移动以内随便可以自己构造,保证他的启动位置到你的预设地点就行。

比如预设使得他到左下角,不停往左下移动即可,然后随便搞了。

E.Robots Hard  ,四个机器人的,赛后补的,难度比上面那个大挺多,你要控制四个机器人同时移动,同时达到那四个目标点。

在模拟这个过程中,我感觉就在玩pokomon的滑冰或者水流圈,就是卡墙,卡间距和位置的感觉,嘻嘻。

建议还是自己手玩构造。我思路预设使得到左下角,成四个竖起来的。然后再卡。不太好描述,可以在原图上根据代码来画一下。

#include <bits/stdc++.h>
#ifndef ONLINE_JUDGE
#define debug(x) cout << #x << ": " << x << endl
#else
#define debug(x)
#endif
using namespace std;
typedef long long ll;
const int MAXN=2e5+;
const int INF=0x3f3f3f3f;
const int MOD=1e9+; int main()
{
ios::sync_with_stdio(false);
cin.tie();
string s;
for(int i=;i<;++i) s+="DL";
for(int i=;i<;++i)
{
s+="UUULLDDDLLL";
}
s+="UURRRRRRRRRRRRLLDDRULURRRRRRRDRRRRDLLUUUUU";
int n;
cin>>n;
while(n--)
{
int x;
cin>>x>>x>>x>>x>>x>>x>>x>>x;
cout<<s.size()<<endl;
cout<<s<<endl;
}
return ;
}

F.Arena Olympics  ,视野夹角拓扑序,就要按视野夹角建图,在跑个拓扑排序输出顺序即可。主要是建图,我自己又if else 特判了情形。挺不错的题。

J.Zoo   ,上海zoo...我对题面的理解有问题,导致做不了,一直玩不出第二个样例,主要是我一直认为 a->a+1->a画了三步,我数的是点数,那咋做的对。。。

然后可以递推计数,参看题解,毫无破绽的想法,dp[i][j]表示当前i路线的长度,j表示当前的sum,往前走则j+1,往后走则j-1,当前的状态由前一个长度的 j-1,j+1转移来。

最后求的是第二维为0的和。然后在把限制条件都加上。路线i最多到长度m,j最小为0(不能超出范围a)最多到min(i,k),就结束了。 最后乘2n,n个位置,a的头尾选法。

贴个代码

#include <bits/stdc++.h>
#ifndef ONLINE_JUDGE
#define debug(x) cout << #x << ": " << x << endl
#else
#define debug(x)
#endif
using namespace std;
typedef long long ll;
const int MAXN=2e5+;
const int INF=0x3f3f3f3f;
const int mod=1e9+; ll dp[][];
//第一维表示路线长度 第二维表示当前和
int main()
{
ios::sync_with_stdio(false);
cin.tie();
int n,k,m;
cin>>n>>k>>m;
dp[][]=;
for(int i=;i<=m;++i)
{
for(int j=;j<=min(i,k);++j)
{
if(j) dp[i][j]=(dp[i-][j-] + dp[i-][j+])%mod;
else dp[i][j]=dp[i-][j+];
}
}
ll ans=;
for(int i=;i<=m;++i)
{
ans+=dp[i][];
ans%=mod;
}
ans*=*n;
ans%=mod;
cout<<ans<<endl;
return ;
}

K.Birthday Puzzle 基本都是2^n枚举子集水过,然后这题看题解由于或运算的特别性可以O(n),准确来说是O(log(ai)*n)来做,非常优秀。

注意到或运算,只有当选出来的子集中,二进制这位上全部为0,才会没有这个位上的贡献,然后可以统计二进制为0的位的个数。

统计答案时,对于某个二进制位, ( n个数所有的子集个数 - 由这位上都是0的数组成的子集个数)*这位的权值

就结束了。

复杂度 2^n --> n 优化好大

然后其实 n大起来 一定是要对某个数取模的。。。就要用快速幂来算了。

#include <bits/stdc++.h>
#ifndef ONLINE_JUDGE
#define debug(x) cout << #x << ": " << x << endl
#else
#define debug(x)
#endif
using namespace std;
typedef long long ll;
const int MAXN=2e5+;
const int INF=0x3f3f3f3f;
const int MOD=1e9+; int a[MAXN];
int zero[];
int main()
{
ios::sync_with_stdio(false);
cin.tie();
int n;
cin>>n;
for(int i=;i<n;++i) cin>>a[i];
for(int i=;i<;++i)
{
for(int j=;j<n;++j)
{
if(!(a[j] & <<i))
zero[i]++;
}
}
ll ans=;
for(int i=;i<;++i)
ans+=(((1ll<<n)-)-((1ll<<zero[i])-))*(1ll<<i);
cout<<ans<<endl;
return ;
}

G线段树,F字符串构造 好像很难,我是不会补的~~~

结束了,逃

Educational Codeforces Round 81 + Gym 102267的更多相关文章

  1. [Educational Codeforces Round 81 (Rated for Div. 2)]E. Permutation Separation(线段树,思维,前缀和)

    [Educational Codeforces Round 81 (Rated for Div. 2)]E. Permutation Separation(线段树,思维,前缀和) E. Permuta ...

  2. Educational Codeforces Round 81 (Rated for Div. 2) B. Infinite Prefixes

    题目链接:http://codeforces.com/contest/1295/problem/B 题目:给定由0,1组成的字符串s,长度为n,定义t = sssssss.....一个无限长的字符串. ...

  3. Educational Codeforces Round 81 (Rated for Div. 2) C. Obtain The String

    题目链接:http://codeforces.com/contest/1295/problem/C 题目:给定字符串s,t.  给定一个空串z,需要按照规则把z构造成 string z == stri ...

  4. Educational Codeforces Round 81 (Rated for Div. 2) A-E简要题解

    链接:https://codeforces.com/contest/1295 A. Display The Number 贪心思路,尽可能放置更多位,如果n为奇数,消耗3去放置一个7,剩下的放1 AC ...

  5. Educational Codeforces Round 81 (Rated for Div. 2)

    A 0~9需要多少笔画,自取7和1,判奇偶 #include<bits/stdc++.h> using namespace std; #define ll long long #defin ...

  6. Educational Codeforces Round 81 (Rated for Div. 2) 题解

    过了n天补的题解:D AB就不用说了 C. Obtain The String 思路挺简单的,就是贪心,但是直接贪心的复杂度是O(|s|*|t|),会超时,所以需要用到序列自动机 虽然名字很高端但是就 ...

  7. Educational Codeforces Round 81 (Rated for Div. 2)E(线段树)

    预处理把左集划分为大小为1~i-1时,把全部元素都移动到右集的代价,记作sum[i]. 然后枚举终态时左集的大小,更新把元素i 留在/移动到 左集的代价. 树状数组/线段树处理区间修改/区间查询 #d ...

  8. Educational Codeforces Round 81 (Rated for Div. 2) - D. Same GCDs(数学)

    题目链接:Same GCDs 题意:给你两个数$a$,$m(1 \leq a < m \leq 10^{10})$,求有多少个$x$满足:$0 \leq x < m$且$gcd(a,m)= ...

  9. Educational Codeforces Round 40 C. Matrix Walk( 思维)

    Educational Codeforces Round 40 (Rated for Div. 2) C. Matrix Walk time limit per test 1 second memor ...

随机推荐

  1. MyBatis(4)——配置文件优化

    配置文件优化 执行流程:读取配置流程->sqlSessionFactory->sqlSession(连接.读取sql并执行相应操作.关闭) a)配置优化:通过中文参考指南的说明可知-> ...

  2. C++继承、多态与虚表

    继承 继承的一般形式 子类继承父类,是全盘继承,将父类所有的东西都继承给子类,除了父类的生死,就是父类的构造和析构是不能继承的. 继承的访问权限从两方面看: 1.对象:对象只能直接访问类中公有方法和成 ...

  3. Nginx的相关介绍

    前言 说到服务器,一定会想到apache的httpd和Nginx Apache的发展时期很长,而且是毫无争议的世界第一大服务器.它有着很多优点:稳定.开源.跨平台等等.它出现的时间太长了,它兴起的年代 ...

  4. CTF_论剑场 名侦探柯南

    首先看一下是一个压缩包然后下载 解压后会发现一个图片和另一个压缩包 打开图片 发现是这个 用HxD分析一下这张图片通过搜索 zip jpg...... 然后会发现这张图片里有一个png 图片 所以判断 ...

  5. html标签的快捷

    https://www.jianshu.com/p/8f330e3571ee 一: <ul> <li><a href=""></a> ...

  6. Flutter 开发入门实践

    前言: Flutter 是 Google 推出的跨平台解决方案, 开发语言:Dart 优势: 劣势: 学习推荐: 官方网站:https://flutter.io/ 书籍:<Flutter技术入门 ...

  7. Python学习(四)—— 列表和元组的类中方法

    列表 list:用中括号括起来,用“,”分割每个元素,列表中的元素可以是 数字.字符串.列表.布尔值......所有东西,可以说就是一个“集合” li = [1,3,5,'alex','age',[' ...

  8. 未来的flags

    完了大致一扫..... (1)P,NP,NPC,NP-Hard 二分图(2)二分图的判定 Tarjan(3)有向图的Tarjan算法(4)无向图的Tarjan算法 (5)A*算法 环套树(6)环套树的 ...

  9. iOS 开发之使用链式编程思想实现简单的计算器

    链式编程思想是将多个操作(多行代码)通过点号(.)链接在一起成为一句代码,使代码可读性好.例如 a(1).b(2).c(3). 链式编程思想最为关键的是,方法的返回值是block,block必须返回对 ...

  10. SpringCloud全家桶学习之消息总线---SpringCloud Bus

    一.概述 ConfigClient(微服务)从ConfigServer端获取自己对应的配置文件,但是目前的问题是:当远程git仓库配置文件发生改变时,每次都是需要重启ConfigCient(微服务), ...