Educational Codeforces Round 81 + Gym 102267
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不加分,为啥子勒?、
这题我自己光判断-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的更多相关文章
- [Educational Codeforces Round 81 (Rated for Div. 2)]E. Permutation Separation(线段树,思维,前缀和)
[Educational Codeforces Round 81 (Rated for Div. 2)]E. Permutation Separation(线段树,思维,前缀和) E. Permuta ...
- Educational Codeforces Round 81 (Rated for Div. 2) B. Infinite Prefixes
题目链接:http://codeforces.com/contest/1295/problem/B 题目:给定由0,1组成的字符串s,长度为n,定义t = sssssss.....一个无限长的字符串. ...
- 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 ...
- Educational Codeforces Round 81 (Rated for Div. 2) A-E简要题解
链接:https://codeforces.com/contest/1295 A. Display The Number 贪心思路,尽可能放置更多位,如果n为奇数,消耗3去放置一个7,剩下的放1 AC ...
- 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 ...
- Educational Codeforces Round 81 (Rated for Div. 2) 题解
过了n天补的题解:D AB就不用说了 C. Obtain The String 思路挺简单的,就是贪心,但是直接贪心的复杂度是O(|s|*|t|),会超时,所以需要用到序列自动机 虽然名字很高端但是就 ...
- Educational Codeforces Round 81 (Rated for Div. 2)E(线段树)
预处理把左集划分为大小为1~i-1时,把全部元素都移动到右集的代价,记作sum[i]. 然后枚举终态时左集的大小,更新把元素i 留在/移动到 左集的代价. 树状数组/线段树处理区间修改/区间查询 #d ...
- 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)= ...
- 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 ...
随机推荐
- 8.7-Day1T1
题目大意: T组测试数据,每组测试数据给出一个n,求[0,n-1]所有逆元的和.(n可能不为质数) 题解: 我的想法: 求出每一个数的逆元,再相加.由于有n为质数的时候,所以,我将它分为两种情况:(1 ...
- Educational Codeforces Round 76 (Rated for Div. 2) A. Two Rival Students
You are the gym teacher in the school. There are nn students in the row. And there are two rivalling ...
- SpringMVC--提交表单
今天使用AbstractCommandController做一个提交表单的样例 (1)首先,建立一个User.java package com.zk.domain; import java.util. ...
- FromBase64String 输入的不是有效的 Base-64 字符串,因为它包含非 Base-64 字符、两个以上的填充字符,或者填充字符间包含非法字符
js前台: <input id="upload_img_input" v-on:change="onFileChange" type="file ...
- Spring - 周边设施 - H2 embedded 版本引入
1. 概述 在 Spring 开发中, 引入 H2 做辅助测试数据库 2. 场景 复习 Spring, 复习到 持久化 部分 需要一个 数据库 来做测试 方案 方案1: 搭建 MySQL 实例 虽然现 ...
- 433B.Kuriyama Mirai's Stones
Kuriyama Mirai has killed many monsters and got many (namely n) stones. She numbers the stones from ...
- 从centos7镜像到搭建kubernetes集群(kubeadm方式安装)
在网上看了不少关于Kubernetes的视频,虽然现在还未用上,但是也是时候总结记录一下,父亲常教我的一句话:学到手的东西总有一天会有用!我也相信在将来的某一天会用到现在所学的技术.废话不多扯了... ...
- 洛谷 P5018 对称二叉树(搜索)
嗯... 题目链接:https://www.luogu.org/problem/P5018 其实这道题直接搜索就可以搜满分: 首先递归把每个点作为根节点的儿子的数量初始化出来,然后看这个节点作为根节点 ...
- 我来给你讲清楚Pythony广播
初学python广播搞的人头大,今天老师上课讲了一下,茅塞顿开,zt老师nb 首先说一下后向纬度(这个后向纬度书里边称作低维),举例:(3,4,5)后向纬度是:3*4*5或4*5或5 向量广播的条件有 ...
- java 工程idea 添加依赖几种方式:
1.add jar and dependecy derictory: 2.add Libary: 点击new library 选取java: 选择libs文件夹作为library: 选择 maven ...