A Okabe and Future Gadget Laboratory

暴力

#include<bits/stdc++.h>
using namespace std;
typedef long long int LL;
const LL N=51,M=1,MOD=1;
int num[N][N];int main()
{ios::sync_with_stdio(false);//freopen("t.txt","r",stdin);int n;scanf("%d",&n);for(int i=0;i<n;i++)for(int j=0;j<n;j++)scanf("%d",&num[i][j]);for(int i=0;i<n;i++)for(int j=0;j<n;j++){if(num[i][j]==1)continue;bool flag=false;for(int ii=0;ii<n;ii++){int a=num[i][j]-num[ii][j];for(int jj=0;jj<n;jj++)if(num[i][jj]==a){flag=true;break;}if(flag)break;}if(!flag){printf("No\n");return 0;}}printf("Yes\n"); return 0;
}

B Okabe and Banana Trees

二分优化+等差数列求和

#include<bits/stdc++.h>
using namespace std;
typedef long long int LL;
const LL N=1,M=1,MOD=1;LL m,b;
LL count(LL x,LL y)
{return (y*(y+1)+x*(y+1))*(x+1)/2;
}
const double eps=1e-9;
LL findx(LL y)
{LL l=0,r=100000000000000LL;LL ret=-1;while(l<=r){LL mid=(l+r)/2;if((m*y)>(m*b-mid))r=(mid-1);else ret=mid,l=(mid+1);}return ret;
}int main()
{ios::sync_with_stdio(false);//freopen("t.txt","r",stdin);scanf("%I64d%I64d",&m,&b);LL ans=0;for(int i=b;i>=0;i--){ans=max(ans,count(findx(i),i));}printf("%I64d\n",ans);return 0;
}

C Okabe and Boxes

维护一个平衡树和一个栈 贪心即可

#include<bits/stdc++.h>
using namespace std;
typedef long long int LL;
const LL N=1,M=1,MOD=1;
map<int,int>m;
stack<int>s;
int n;int main()
{ios::sync_with_stdio(false);
// freopen("t.txt","r",stdin);scanf("%d",&n);char c[20];int q,ans=0,sum=0;for(int i=0;i<n*2;i++){memset(c,0,sizeof(c));scanf("%s",&c);if(c[0]=='a'){scanf("%d",&q);s.push(q);}else{sum++;int maxv=0;if(s.size()>0)maxv=s.top();if(m.size()>0){map<int,int>::iterator it=m.begin();maxv=min(maxv,it->first);}if((!s.empty())&&maxv==sum&&maxv==s.top()){s.pop();continue;}else if(s.empty()){map<int,int>::iterator it=m.begin();m.erase(it->first);}else{ans++;while(!s.empty()){m[s.top()]=1;s.pop();}map<int,int>::iterator it=m.begin();m.erase(it->first);}}}printf("%d\n",ans);return 0;
}

D Okabe and City

这道题叙述的有问题 比赛中出现了偏差。。

略过吧,,感觉出题人也完全拎不清这道题。

/*#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>*/
#include <bits/stdc++.h>using namespace std;
//using namespace __gnu_pbds;typedef long long ll;
typedef vector<int> vi;
typedef pair<int, int> pii;
//typedef tree<int,null_type,less<int>,rb_tree_tag,tree_order_statistics_node_update> ordered_set;#define FOR(i, a, b) for (int i=a; i<b; i++)
#define F0R(i, a) for (int i=0; i<a; i++)
#define FORd(i,a,b) for (int i = (b)-1; i >= a; i--)
#define F0Rd(i,a) for (int i = (a)-1; i >= 0; i--)#define mp make_pair
#define pb push_back
#define f first
#define s second
#define lb lower_bound
#define ub upper_boundconst int MOD = 1000000007;
double PI = 4*atan(1);int dr[10001], dc[10001];
vi row[10001], col[10001];
priority_queue<pii> todo;
vector<pii> lights;
int dist[10001];
map<pii,int> label;
int xdir[4] = {1,0,-1,0}, ydir[4] = {0,1,0,-1};
int n,m,k; void filrow(int i, int val){if (i >= 1 && i <= n && dr[i] == 0) {dr[i] = 1;for (int x: row[i]) if (val < dist[x]) {dist[x] = val;todo.push({-dist[x],x});}}
}void filcol(int i, int val) {if (i >= 1 && i <= m && dc[i] == 0) {dc[i] = 1;for (int x: col[i]) if (val < dist[x]) {dist[x] = val;todo.push({-dist[x],x});}}
}void ad(int x, int y, int val) {if (label.find({x,y}) != label.end()) if (dist[label[{x,y}]] > val) {dist[label[{x,y}]] = val;todo.push({-val,label[{x,y}]});}
}int main() {cin >> n >> m >> k;F0R(i,k) {int r,c; cin >> r >> c;lights.pb({r,c});row[r].pb(i);col[c].pb(i);label[{r,c}] = i;}F0R(i,10001) dist[i] = MOD;if (label.find({n,m}) == label.end()) {filrow(n-1,1);filrow(n,1);filcol(m-1,1);filcol(m,1);} else todo.push({0,label[{n,m}]});while (todo.size()) {auto a = todo.top(); todo.pop();a.f = -a.f;if (a.f > dist[a.s]) continue;F0R(i,4) ad(lights[a.s].f+xdir[i],lights[a.s].s+ydir[i],a.f);FOR(i,lights[a.s].f-2,lights[a.s].f+3) filrow(i,a.f+1);FOR(i,lights[a.s].s-2,lights[a.s].s+3) filcol(i,a.f+1);}if (dist[0] != MOD) cout << dist[0];else cout << -1;
}

  

E Okabe and El Psy Kongroo

题意非常简单 数据很特别, n只有100 高度只有16 但是长度很长。

看起来很像矩阵加速DP

考虑每个线段的特点,它可能很长,我们可以对于每个segment给出一个16*16的矩阵 元素(i,j)==1当且仅当可以从高度i转移到高度j

然后对每个区间进行矩阵快速幂,并且将他们相乘 最后一个矩阵的(k,0) 0<=k<=15 求和即是答案。

#include<bits/stdc++.h>
using namespace std;
typedef long long int LL;
const LL N=200,M=20,MOD=1000000007;
const LL mt_MAXN=60;const LL mt_MAXM=60;
struct Matrix{LL n,m;LL MOD;LL a[mt_MAXN][mt_MAXM];void clear(){n=m=0;memset(a,0,sizeof(a));}Matrix operator +(const Matrix &b)const{Matrix tmp;tmp.n=n;tmp.m=m;tmp.MOD=MOD;for(LL i=0;i<n;++i)for(LL j=0;j<m;++j)tmp.a[i][j]=(a[i][j]+b.a[i][j])%MOD;return tmp;}Matrix operator -(const Matrix &b)const{Matrix tmp;tmp.n=n;tmp.m=m;tmp.MOD=MOD;for(LL i=0;i<n;++i)for(int j=0;j<m;++j)tmp.a[i][j]=(a[i][j]-b.a[i][j]+MOD)%MOD;return tmp;}Matrix operator *(const Matrix &b)const{Matrix tmp;tmp.clear();tmp.n=n;tmp.m=b.m;tmp.MOD=MOD;for(LL i=0;i<n;++i)for(LL j=0;j<b.m;++j)for(LL k=0;k<m;++k)tmp.a[i][j]=(tmp.a[i][j]+((a[i][k])*(b.a[k][j]))%MOD+MOD)%MOD;return tmp;}Matrix iden(){Matrix x;memset(x.a,0,sizeof(x.a));x.m=n;x.n=n;x.MOD=MOD;for(LL i=0;i<n;++i)x.a[i][i]=1;return x;}Matrix pow(LL t) {Matrix now;now.n=n;now.m=m;now.MOD=MOD;memset(now.a,0,sizeof(now.a));for(LL i=0;i<n;++i)for(LL j=0;j<m;++j)now.a[i][j]=a[i][j];for(LL i=1;i<t;i++)now=now*now;return now;}Matrix qpow(LL t){if(n==0)return iden();Matrix now;now.clear();now.n=n;now.m=m;now.MOD=MOD;now=pow(1);Matrix ans;ans.clear();ans.n=n;ans.m=m;ans.MOD=MOD;ans=ans.iden();while(true){if(t%2==1)ans=ans*now;t=t/2;now=now*now;if(t==0)break;}return ans;}};LL ab(LL x)
{if(x>0)return x;else return -x;
}
int main()
{//freopen("t.txt","r",stdin);LL n,k;scanf("%I64d%I64d",&n,&k);Matrix id;id.n=id.m=16;id.MOD=MOD;id=id.iden();for(int i=0;i<n;i++){LL a,b,h;scanf("%I64d%I64d%I64d",&a,&b,&h);b=min(b,k);Matrix mn;mn.clear();mn.n=mn.m=16;mn.MOD=MOD;for(int ii=0;ii<=15;ii++)for(int jj=0;jj<=15;jj++){if(ii>h||ii<0||jj>h||jj<0||ab(ii-jj)>1)continue;mn.a[ii][jj]=1;}mn=mn.qpow(b-a);id=id*mn;}printf("%I64d\n",id.a[0][0]);return 0;
}

  

吐槽 ! 刚开始10分钟怎么也打不开网站 开VPN都不行 然后就延时。。

最后竟然还unrated.. 老哥能走点心不? 要不您做收费网站也行啊。

转载于:https://www.cnblogs.com/heisenberg-/p/7078664.html

codeforces round 420 div2 补题 CF 821 A-E相关推荐

  1. codeforces round 421 div2 补题 CF 820 A-E

    A Mister B and Book Reading  O(n)暴力即可 #include<bits/stdc++.h> using namespace std; typedef lon ...

  2. codeforces round 418 div2 补题 CF 814 A-E

    A An abandoned sentiment from past 水题 #include<bits/stdc++.h>using namespace std;int a[300],b[ ...

  3. codeforces round 422 div2 补题 CF 822 A-F

    A I'm bored with life 水题 #include<bits/stdc++.h> using namespace std; typedef long long int LL ...

  4. codeforces round 416 div2补题

    第一题,水题 A. Vladik and Courtes #include<bits/stdc++.h> using namespace std; int main() {long lon ...

  5. 【codeforces Round#801 Div2 D题 Tree Queries】树形贪心结论

    题目链接 题意: 给你一棵树,你需要执行多次询问来确定一个节点x的位置,对于每一次询问,你需要选择一个节点,能得到这个节点与x节点的距离是多少,问至少需要多少次询问才能确定x的位置. 分析: 有一个结 ...

  6. BC div2补题以及 复习模除 逆元__BestCoder Round #78 (div.2)

    第一题没话说 智商欠费 加老柴辅导终于过了 需要在意的是数据范围为2的63次方-1 三个数相加肯定爆了 四边形的定义 任意边小于其余三边之和 换句话说就是 最长边小于其余三边之和 这样的话问题转化为 ...

  7. 【Codeforces Round #420 (Div. 2) B】Okabe and Banana Trees

    [题目链接]:http://codeforces.com/contest/821/problem/B [题意] 当(x,y)这个坐标中,x和y都为整数的时候; 这个坐标上会有x+y根香蕉; 然后给你一 ...

  8. Codeforces Round #652 div2 总结 端午节前小结

    2020.6.24 连着三天熬夜和一连串要处理的事情已然让我的身体有点吃不消.我只是喜欢想题的那种冥想思路开阔的感觉,但是熬夜还是不能行的.端午节前就暂时不碰竞赛了,昨天晚上算是打完了最后一场比赛.今 ...

  9. codeforces Round#429 (Div2)

    2017-08-20 10:00:37 writer:pprp 用头文件#include <bits/stdc++.h>很方便 A. Generous Kefa codeforces 84 ...

最新文章

  1. final、finally、finalize的区别
  2. SQL SERVER数据库中 是否可以对视图进行修改删除
  3. 11选5下期算法_本周六周日【高二直播】辅导网课预告:通用技术电控二三极管、多用电表测量、数字逻辑电路、解析枚举递归算法,2022浙江选考技术...
  4. 提高数据库查询速度的几个思路
  5. 使用Maven Archetype生成工程报错的解决
  6. springboot 修改页面不重启
  7. linux上设置tomcat下web项目只需要ip地址访问省略端口和项目名称
  8. 人生小故事,看完后想十秒钟,你会获益匪浅
  9. 在ubuntu上安装微博AIR
  10. springboot留言板
  11. plc编程及应用_西门子PLC编程与工程应用
  12. 国产快速启动软件ALTRun推荐
  13. python设置excel表样式
  14. PCB正片与负片之分以及实际使用建议
  15. java开花_那是花开-javaweb开发-51CTO博客
  16. [20190328]PPT中的png图片去底色(透明化)
  17. “收藏本站”,“设为首页”的脚本
  18. C语言:添加和显示,数据保存在文件中,下次打开可以获取之前录入的内容
  19. HTML5网页设计练习-选择器的应用
  20. 我的上半年“手相”-----“奔跑中的2015”

热门文章

  1. pythom 16 random 模块
  2. 2022年终总结, 2023 年度规划
  3. 2022.12.8 英语听写
  4. vulkan管线学习8
  5. MATLAB计算数据各种距离矩阵(欧式距离、加权欧式距离...)
  6. sqlsever2019:union合并多个查询结果
  7. 压力传感器的偏移和增益误差
  8. 数字电路复习(时序电路)
  9. 奇葩圣诞礼物idea合辑
  10. Win10如何禁用Windows Defender