A - Plural Form

模拟签到题1

#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0)
#pragma GCC optimize(2)
#include<string>
#include<iostream>
#include<algorithm>
using namespace std;
const int N=100010;
int main()
{IO;int T=1;//cin>>T;while(T--){string s;cin>>s;if(s.back()=='s') s+="es";else s+="s";cout<<s<<'\n';}return 0;
}

B - Go to Jail

签到题2

#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0)
#pragma GCC optimize(2)
#include<iostream>
#include<algorithm>
using namespace std;
const int N=100010;
int main()
{IO;int T=1;//cin>>T;while(T--){int n;cin>>n;int cnt=0;bool ok=0;while(n--){int a,b;cin>>a>>b;if(a==b) {cnt++;if(cnt==3) ok=1; }else cnt=0;}if(ok) cout<<"Yes\n";else cout<<"No\n";}return 0;
}

C - A x B + C

A×B+C=NA ×B + C=NA×B+C=N不难发现只要有A×B<NA ×B <NA×B<N,就会有一组解。因此枚举AAA随便求求即可

#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0)
#pragma GCC optimize(2)
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
const int N=100010;
int main()
{IO;int T=1;//cin>>T;while(T--){int n;cin>>n;ll res=0;for(int i=1;i<=n;i++){ll now=n/i;if(n%i==0) now--;res+=now;}cout<<res<<'\n';}return 0;
}

D - Leaping Tak

动态规划上楼梯升级版
状态表示:fif_ifi​表示目前在第iii个位置的集合
状态转移:枚举可以从哪些位置过来即可,前缀和优化!

// O(nk)
#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0)
#pragma GCC optimize(2)
#include<iostream>
#include<algorithm>
#define l first
#define r second
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
const int N=200010;
const ll mod=998244353;
int n,k;
ll f[N],s[N];
pii a[N];
int main()
{IO;int T=1;//cin>>T;while(T--){cin>>n>>k;for(int i=1;i<=n;i++) cin>>a[i].l>>a[i].r;f[1]=1;s[1]=1;for(int i=2;i<=n;i++){for(int j=1;j<=k;j++)f[i]=(f[i]+s[max(0,i-a[j].l)]-s[max(0,i-a[j].r-1)])%mod;;s[i]=(s[i-1]+f[i])%mod;}    cout<<(f[n]+mod)%mod<<'\n';}return 0;
}

E - Sequence Sum

N≤1010N\leq 10^{10}N≤1010非常大,一定不能暴力枚举,不过M≤105M\leq 10^5M≤105非常小,这意味这余数最多有10510^5105情况,由此对于每一个所求的每一个AiA_iAi​必定会出现循环节,只需要找到循环节即可。

#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0)
#pragma GCC optimize(2)
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
const int N=100010;
ll n,x,m;
int st[N];
ll s[N];
int main()
{IO;int T=1;//cin>>T;while(T--){cin>>n>>x>>m;ll l,r;for(ll a=x,k=1;;a=a*a%m,k++){if(!st[a]) st[a]=k;else{l=st[a],r=k-1;break;}s[k]=s[k-1]+a;}ll len=r-l+1;ll res=0;res+=s[min(n,l-1)];n=max(0ll,n-l+1);if(n) res+=(s[r]-s[l-1])*(n/len)+(s[n%len+l-1]-s[l-1]);cout<<res<<'\n';}return 0;
}

F - Simplified Reversi

还没看,明天看
维护两个数组row[]col[]row[i]表示第i行目前能够覆盖到哪一列。
考虑每次操作,如果目前在第x列(opt=1)放置,那么对于行来说就有一部分被截断,不难知道[1,mrow][1,mrow][1,mrow]被截断,因此需要在row[]进行区间修改,答案会减去col[x]-2需要单点询问,由此只需要用线段树维护这两个数组即可。

#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0)
#pragma GCC optimize(2)
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
const int N=200010;
int n,q;
struct Segment
{struct node{int l,r,val,lazy;}tree[N*4];void build(int u,int l,int r){tree[u]={l,r,n,n+1};if(l==r) return;int mid=l+r>>1;build(u<<1,l,mid);build(u<<1|1,mid+1,r);}void pushdown(int u){if(tree[u].lazy==n+1) return;tree[u<<1].val=min(tree[u<<1].val,tree[u].lazy);tree[u<<1|1].val=min(tree[u<<1|1].val,tree[u].lazy);     tree[u<<1].lazy=min(tree[u<<1].lazy,tree[u].lazy);tree[u<<1|1].lazy=min(tree[u<<1|1].lazy,tree[u].lazy);tree[u].lazy=n+1;}void modify(int u,int l,int r,int val){if(tree[u].l>=l&&tree[u].r<=r){tree[u].lazy=min(tree[u].lazy,val);tree[u].val=min(tree[u].val,val);return;}pushdown(u);int mid=tree[u].l+tree[u].r>>1;if(l<=mid) modify(u<<1,l,r,val);if(r>mid) modify(u<<1|1,l,r,val);}int query(int u,int p){if(tree[u].l==tree[u].r) return tree[u].val;pushdown(u);int mid=tree[u].l+tree[u].r>>1;if(p<=mid) return query(u<<1,p);else return query(u<<1|1,p);}
}row,col;
int mrow,mcol;
int main()
{IO;int T=1;//cin>>T;while(T--){cin>>n>>q;row.build(1,1,n);col.build(1,1,n);ll res=1ll*(n-2)*(n-2);mcol=mrow=n;while(q--){int op,x;cin>>op>>x;if(op==1){mcol=min(mcol,x);res-=col.query(1,x)-2;row.modify(1,1,mrow,x);}else{mrow=min(mrow,x);res-=row.query(1,x)-2;col.modify(1,1,mcol,x);}}cout<<res<<'\n';}return 0;
}

此题貌似我的解法非常复杂,不过我太菜只能用这种稍微暴力的数据结构维护,我 贪心啥的贪心不出来啊啊啊
要加油哦~

AtCoder Beginner Contest 179 总结相关推荐

  1. AtCoder题解——Beginner Contest 179——D - Leaping Tak

    题目相关 题目链接 AtCoder Beginner Contest 179 D 题,https://atcoder.jp/contests/abc179/tasks/abc179_d. Proble ...

  2. AtCoder Beginner Contest 202 D - aab aba baa(组合计数,字典序)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Problem 有 AAA 和 aaa,BBB 个 bbb ,可以使用这 A+BA+BA+B 个字符任 ...

  3. AtCoder Beginner Contest 197 题解(A ~ F)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 A - Rotate B - Visibility C - ORXOR D - Opposite ...

  4. AtCoder Beginner Contest 198 (A ~ F)题解

    目录 A. Div B. Palindrome with leading zeros C. Compass Walking D. Send More Money E. Unique Color F. ...

  5. AtCoder Beginner Contest 215 G - Colorful Candies 2

    AtCoder Beginner Contest 215 G - Colorful Candies 2 有n个糖果,每个糖果有着一个颜色a[i],每次拿k个糖果期望拿到E(x)个不同颜色的糖果,求出k ...

  6. AtCoder Beginner Contest 215 F - Dist Max 2

    AtCoder Beginner Contest 215 F - Dist Max 2 平面上有一系列的点(xi,yi)(x_i,y_i)(xi​,yi​),定义两点(xi,yi),(xj,yj)(x ...

  7. AtCoder Beginner Contest 215 E - Chain Contestant

    AtCoder Beginner Contest 215 E - Chain Contestant 给出一个只包括A~J的字符串,定义一种子序列为:在这个子序列中,相同的字符必定连续出现,求出这样的子 ...

  8. AtCoder Beginner Contest 204 F Hanjo 2

    AtCoder Beginner Contest 204 F Hanjo 2 H宽,W长的二维平面上,用1 * 1或者2 * 1的地砖来铺,要求铺满,求出方案数. 数据范围H <= 6, W & ...

  9. Caddi Programming Contest 2021(AtCoder Beginner Contest 193) 题解

    Caddi Programming Contest 2021(AtCoder Beginner Contest 193) A - Discount 打折浮点数除即可 B - Play Snuke 枚举 ...

最新文章

  1. 爱上MVC3系列~分部视图中的POST
  2. linux/windows nginx安装
  3. Windows server 2012 AD架构 试验 系列22 -ADAC与PowerShell History
  4. WS2812串行可控彩色LED灯珠
  5. JavaScript学习(十)
  6. word activex部件不能创建对象_如何用Word批量制作员工工作证?1分钟搞定1000份!只需三步...
  7. 记一次坑爹报错之旅 -bash: /etc/profile: line 11: syntax error near unexpected token
  8. latex algorithm 引用格式错误
  9. 【Python3之模块及包的导入】
  10. 何建坤:实施能源革命战略 促绿色低碳发展
  11. 修复Lvgl的roller控件点击位置向上偏移的问题
  12. SAR空间自回归模型
  13. 塔塔露也能看懂的服务器配置pytorch,TensorFlow教程
  14. python gevent async_谈谈Python协程技术的演进
  15. Ubuntu16.04 Flash Player播放插件安装
  16. Mysql 构造一个触发器 audit_log
  17. 2018年 中南大学研究生复试机试题(1025~ 1028)
  18. 微博应用 php源码,新版微测试应用平台|微博应用|微趣源码,有后台+2套模版
  19. 微信小程序入门篇(一)
  20. 机器学习实践:超市商品购买关联规则分析

热门文章

  1. leetcode面试题 02.07. 链表相交
  2. 77. 组合016(回溯法)
  3. webpack实战之手写一个loader和plugin
  4. [JavaWeb-HTTP]HTTP_请求消息_请求头请求体
  5. 洛谷 P1596 [USACO10OCT]Lake Counting S-dfs
  6. 对象的单数组表示(用单数组实现链表-不一样的链表实现)
  7. 玉柴spn码故障对照表_后处理的故障不总是尿素泵故障,也有可能是这些原因
  8. pythonimport是拷贝_02Python学习笔记之二.一【import、==和is、深浅拷贝】2019-08-17
  9. IP地址与MAC地址的区别
  10. P5221 Product(反演)