真阴间啊 , 不仅时长阴间, 题目也有点emmmmm
打的不顺利,没有按预想在15分钟内把AB题写出来 ((。・∀・)ノ゙害)
开局码了发A WA2 人傻了 开始质疑自己了 先搁着吧
然后又码了一个半成品B emmm 有bug 又鸽着了
然后C好像没啥想法 鸽着 看看D
如果没有翻译我估计D题我是写不出来的 QAQ 简直阅读理解

1427A题链接
给你一个数组 要我们重新排列以后 对于任意长度的前缀和不为0
那么考虑长度为n的前缀和 ,如果它为0 那么必然不可行 输出NO
否则根据前缀和的大小 考虑是从大到小输出 还是从小到大输出
非常简单 (然后我当时不知道在讨论啥玩意 WA2)

 #include<bits/stdc++.h>
#include<stdlib.h>
#include<algorithm>
#include<stdio.h>
#include<string.h>
#include<queue>
#include<time.h>
#include <cstdio>
#include <iostream>
#include <vector>
#define ll long long
#define int long long
#define inf 0x3f3f3f3f
#define mods 1000000007
#define modd 998244353
#define PI acos(-1)
#define fi first
#define se second
#define lowbit(x) (x&(-x))
#define mp make_pair
#define pb push_back
#define si size()
#define E exp(1.0)
#define fixed cout.setf(ios::fixed)
#define fixeds(x) setprecision(x)
#define IOS ios::sync_with_stdio(false);cin.tie(0)using namespace std;ll gcd(ll a,ll b){if(a<0)a=-a;if(b<0)b=-b;return b==0?a:gcd(b,a%b);}
template<typename T>void read(T &res){bool flag=false;char ch;while(!isdigit(ch=getchar()))(ch=='-')&&(flag=true);
for(res=ch-48;isdigit(ch=getchar());res=(res<<1)+(res<<3)+ch - 48);flag&&(res=-res);}
ll lcm(ll a,ll b){return a*b/gcd(a,b);}
ll qp(ll a,ll b,ll mod){ll ans=1;if(b==0){return ans%mod;}while(b){if(b%2==1){b--;ans=ans*a%mod;}a=a*a%mod;b=b/2;}return ans%mod;}//快速幂%
ll qpn(ll a,ll b, ll p){ll ans = 1;a%=p;while(b){if(b&1){ans = (ans*a)%p;--b;}a =(a*a)%p;b >>= 1;}return ans%p;}//逆元   (分子*qp(分母,mod-2,mod))%mod;const int ma=1;
ll a[200];
ll b[200];
signed main(){ll t;
read(t);
while(t--){ll n;
read(n);
ll la=0;
ll lb=0;
ll add=0;
ll f=0;
for(int i=1;i<=n;i++){read(a[i]);
add=add+a[i];//if(x>=0){}
if(add==0){printf("NO\n");continue;
}sort(a+1,a+1+n);if(add>0){printf("YES\n");for(int i=n;i>=1;i--){printf("%lld ",a[i]);}}else{printf("YES\n");for(int i=1;i<=n;i++){printf("%lld ",a[i]);}}
printf("\n");
}
}

1427B链接
给一个长度为n的字符串 包含L W代表输赢
输了没有积分, 单赢拿一分,连续赢(前一个是W 后一个也是W) 拿两分
给了我们操作数 K 可以更改 字符串 询问最终可以拿最多 多少分

观察一下WLW WLLW LLW WLL
不难不发 如果能填充W之间的缝隙 显然贡献值是最高的
那么我们要分类处理
先找到第一个W的pos 和最后一个W的pos 在这个区间里面找长度L的缝隙 存起来 排序 优先填充小的
如果处理完了以后还有多的K 可以使用 那么就处理1-- <pos1 以及 pos2+1 到n
思路就这样 码起来有点点麻烦

https://paste.ubuntu.com/p/v2m3FzCHFQ/      链接里面

1247C
感觉挺像寒假训练营那个宝可梦的问题
题目给了我们一个R长度的坐标系
自己初始位置为(1, 1)
现在有n个人 在不同时间出现在不同的地点 时间过了会消失
移动速度是1s 一个单位 问最多能遇到多少个人
(说到这一步就看自己有没有寒假好好补题了)

#include<bits/stdc++.h>
#include<stdlib.h>
#include<algorithm>
#include<stdio.h>
#include<string.h>
#include<queue>
#include<time.h>
#include <cstdio>
#include <iostream>
#include <vector>
#define ll long long
#define int long long
#define inf 0x3f3f3f3f
#define mods 1000000007
#define modd 998244353
#define PI acos(-1)
#define fi first
#define se second
#define lowbit(x) (x&(-x))
#define mp make_pair
#define pb push_back
#define si size()
#define E exp(1.0)
#define fixed cout.setf(ios::fixed)
#define fixeds(x) setprecision(x)
#define IOS ios::sync_with_stdio(false);cin.tie(0)
using namespace std;
ll gcd(ll a,ll b)
{if(a<0)a=-a;if(b<0)b=-b;return b==0?a:gcd(b,a%b);
}
template<typename T>void read(T &res)
{bool flag=false;char ch;while(!isdigit(ch=getchar()))(ch=='-')&&(flag=true);for(res=ch-48; isdigit(ch=getchar()); res=(res<<1)+(res<<3)+ch - 48);flag&&(res=-res);
}
ll lcm(ll a,ll b)
{return a*b/gcd(a,b);
}
ll qp(ll a,ll b,ll mod)
{ll ans=1;    //快速幂%if(b==0){return ans%mod;}while(b){if(b%2==1){b--;ans=ans*a%mod;}a=a*a%mod;b=b/2;}return ans%mod;
}
ll qpn(ll a,ll b, ll p)
{ll ans = 1;    //逆元   (分子*qp(分母,mod-2,mod))%mod;a%=p;while(b){if(b&1){ans = (ans*a)%p;--b;}a =(a*a)%p;b >>= 1;}return ans%p;
}
const int maxn=1e6+7;
int euler[maxn],prime[maxn],cntt;
void Euler(int n)//求n以内所有数的欧拉函数值
{memset(euler,0,sizeof(euler));euler[1]=0;cntt=0;for(int i=2; i<=n; i++){if(!euler[i]){euler[i]=i-1;prime[cntt++]=i;}for(int j=0; j<cntt&&prime[j]*i<=n; j++){if(i%prime[j])euler[prime[j]*i]=euler[i]*(prime[j]-1);else{euler[prime[j]*i]=euler[i]*prime[j];break;}}}
}struct pe{ll t;
ll x;
ll y;}sb[1000006];
const int op=1e6+7;
ll pre[op],dp[op];
ll fac[op];
ll dp2[op];
bool check(ll i,ll j){if(abs(sb[i].x-sb[j].x)+abs(sb[i].y-sb[j].y)<=(sb[i].t-sb[j].t)){return true;}
return false;
}
signed main()
{   fac[1]=1;ll n,r;read(r);read(n);for(int i=1;i<=n;i++){read(sb[i].t);read(sb[i].x);read(sb[i].y);}sb[0].t=0;sb[0].x=1;sb[0].y=1;for(int i=0;i<=n;i++){pre[i]=-inf;dp[i]=-inf;}dp[0]=0;pre[0]=0;ll need=0;for(int i=1;i<=n;i++){if(i>1000) dp[i]=pre[i-1001]+1;for(int j=max(need,i-1002);j<i;j++){if(check(i,j)){dp[i]=max(dp[i],dp[j]+1);}else{continue;}}pre[i]=max(pre[i-1],dp[i]);}ll ans=0;ll ma=0;for(int i=1;i<=n;i++) {ans=max(ans,dp[i]);}printf("%lld\n",ans);return 0;
}

1427D链接
给我们一个序列 我们可以把它划分为若干个块 从左往右
然后块D_k D_(k-1) ----- D1 逆排列 但是块里面的顺序不变
问操作多少次可以使得序列变得有序 1–n排列
输出操作次数以及 每次的划分块数 和划分每个块的大小
注意到n很小 而且题目也不要求极限化操作次数
那么直接暴力划分就好了, 最坏的情况下一次划分 只能使得一个数归位
52次而已 暴力足以
举个栗子 6 5 4 3 2 1 划分1 1 4 变为 4 3 2 1 5 6
划分1 1 4 变为 2 1 5 6 3 4
划分1 1 4 变为 5 6 3 4 1 2
划分 2 2 2 变为 1 2 3 4 5 6

#include<bits/stdc++.h>
#include<stdlib.h>
#include<algorithm>
#include<stdio.h>
#include<string.h>
#include<queue>
#include<time.h>
#include <cstdio>
#include <iostream>
#include <vector>
#define ll long long
#define int long long
#define inf 0x3f3f3f3f
#define mods 1000000007
#define modd 998244353
#define PI acos(-1)
#define fi first
#define se second
#define lowbit(x) (x&(-x))
#define mp make_pair
#define pb push_back
#define si size()
#define E exp(1.0)
#define fixed cout.setf(ios::fixed)
#define fixeds(x) setprecision(x)
#define IOS ios::sync_with_stdio(false);cin.tie(0)
using namespace std;
ll gcd(ll a,ll b)
{if(a<0)a=-a;if(b<0)b=-b;return b==0?a:gcd(b,a%b);
}
template<typename T>void read(T &res)
{bool flag=false;char ch;while(!isdigit(ch=getchar()))(ch=='-')&&(flag=true);for(res=ch-48; isdigit(ch=getchar()); res=(res<<1)+(res<<3)+ch - 48);flag&&(res=-res);
}
ll lcm(ll a,ll b)
{return a*b/gcd(a,b);
}
ll qp(ll a,ll b,ll mod)
{ll ans=1;    //快速幂%if(b==0){return ans%mod;}while(b){if(b%2==1){b--;ans=ans*a%mod;}a=a*a%mod;b=b/2;}return ans%mod;
}
ll qpn(ll a,ll b, ll p)
{ll ans = 1;    //逆元   (分子*qp(分母,mod-2,mod))%mod;a%=p;while(b){if(b&1){ans = (ans*a)%p;--b;}a =(a*a)%p;b >>= 1;}return ans%p;
}
vector<int> v[100009];
ll a[609];
ll b[609];
vector<int> ans[100009];
signed main()
{ll n;read(n);ll sum=0;ll rnm=0;for(int i=1; i<=n; i++){read(a[i]);if(a[i]>a[i-1]){rnm++;}}ll ti=0;while(true){ti++;ll cnt=1,p1,p;bool flag=0;// ll pos=0;for(int i=2; i<=n; i++){if(a[i-1]!=a[i]-1){flag=1;}else{continue;}}if(!flag)break;for(int i=1; i<=n; i++){if(a[i]!=i){p1=i;break;}else{continue;}}if(p1!=1){ans[ti].pb(p1-1);}else{sum++;}for(int i=p1+1; i<=n; i++){if(a[i-1]==a[i]-1){cnt++;continue;}if(a[i-1]!=a[i]-1){p=a[p1];p++;p--;p1=i;break;}}ans[ti].pb(cnt);cnt=1;for(int i=p1; i<=n; i++){if(a[i]==p-1){p1=i;ans[ti].pb(cnt);//pos++;break;}cnt++;}if(p1!=n)ans[ti].pb(n-p1);int pos=n,now=1;for(int i=ans[ti].size()-1; i>=0; i--){for(int j=pos-ans[ti][i]+1; j<=pos; j++){b[now++]=a[j];}pos=pos-ans[ti][i];}for(int i=1; i<=n; i++){a[i]=b[i];}}printf("%lld\n",ti-1);for(int i=1; i<ti; i++){printf("%lld ",ans[i].size());for(int j=0; j<ans[i].size(); j++){printf("%lld ",ans[i][j]);}printf("\n");}return 0;}

E题不会 但是应该可以补 qwq
开局预测-174 结束的时候上到2000分了 就很刺激

Codeforces Global Round 11 ABCD题解相关推荐

  1. Codeforces Global Round 15 ABCD

    A. Subsequence Permutation 题意: 给定一个字符串,选择任意数量的字符调整位置,使得调整位置之后整个序列是从小到大的,要求调整的位置数量最小 输入 4 3 lol 10 co ...

  2. Codeforces Global Round 9 A-D题解

    文章目录 A - Sign Flipping B - Neighbor Grid C - Element Extermination D - Replace by MEX A - Sign Flipp ...

  3. Codeforces Global Round 11——E随机+线性基待补

    A - Avoiding Zero 不难发现如果数组所有元素和为0一定不能满足条件,否则一定能满足. 假设所有元素和不为0尝试以下构造,如果正数和小于负数和的绝对值,那么逆序排列,否则顺序排列,这样一 ...

  4. Codeforces Global Round 13 A-E题解

    A 01序列,一个操作对某一位取反,一个操作问你当前第k大是多少 维护一个当前最后一个1所在排名 #include <cstdio> using namespace std; const ...

  5. Codeforces Global Round 11 C. The Hard Work of Paparazzi

    题目链接 思路:读完题看到r的范围就能发现一个小trick.时间相距超过2r的两个明星必然有一种方式可以同时拍到.由于时间严格递增,那么暴力转移dp最多只有2r个初态,直接暴力即可.时间超过2r的可以 ...

  6. Codeforces Global Round 1

    Codeforces Global Round 1 题解:The Editorial of the First Codeforces Global Round A:其实mod 2计算一下就行了 B:删 ...

  7. Codeforces Global Round 1 晕阙记

    Codeforces Global Round 1 晕阙记 我做这场比赛的时候晕得要死.做这三道题做太久了,rating涨不起来啊! A 如果愿意的话你可以看做是膜2意义下的运算,写快速幂等各种膜运算 ...

  8. Codeforces Global Round 3

    Codeforces Global Round 3 A. Another One Bites The Dust 有若干个a,有若干个b,有若干个ab.你现在要把这些串拼成一个串,使得任意两个相邻的位置 ...

  9. Codeforces Global Round 14 F. Phoenix and Earthquake 思维 + 并查集

    传送门 文章目录 题意: 思路: 题意: 给你nnn个点,mmm条边,限制xxx,每个点都有沥青aia_iai​,定义合并两个点即两点之间有边且au+av≥xa_u+a_v\ge xau​+av​≥x ...

最新文章

  1. C++ static
  2. OpenCV 相机校正过程中,calibrateCamera函数projectPoints函数的重投影误差的分析
  3. linux mysql 权限设置_Linux下mysql新建账号及权限设置
  4. 带你用深度学习虚拟机进行文本迁移学习(附代码)
  5. matlab算法时间复杂度,关于降低算法时间复杂度问题的探讨和总结
  6. 获取顶级常量、祖先链、私有方法
  7. 《论语》读后颜渊第十二主要大意
  8. 删除360浏览器新标签页内的热词导航
  9. 文献学习(part47)--A novel consensus learning approach to incomplete multi-view clustering
  10. ServletRequest startAsync()的有用性有限
  11. LeetCode刷题——无重复字符的最长子串
  12. 机器学习与分布式机器学习_这就是为什么任何人都可以学习机器学习的原因
  13. 力扣-5773(243周赛)插入后的最大值
  14. 计算机考研408每日一题 day162
  15. QTextEdit的使用
  16. GPS脚环计步、AI“鸡”脸识别,如何确保自己吃到了一只幸福健康的鸡
  17. 中兴微ZXIC方案MF782型4G随身WIFI开启ADB,开启锁频等功能
  18. 彻底搞懂阻抗控制、导纳控制、力位混合控制
  19. 丙类功率放大器效率高的原理是其通角小,其不失真的原因是:
  20. Scrapy抓取豆瓣电影

热门文章

  1. Rails permit params 接受Hash,Array
  2. 网易java开发实习日记
  3. 牛客网 石家庄铁道大学新生选拔赛
  4. Unity 接讯飞离线语音识别
  5. 图的广度优先搜索(BFS)和深度优先搜索(DFS)算法解析
  6. 精英845主板问题!
  7. 柯基数据通过Rainbond完成云原生改造,实现离线持续交付客户
  8. Agc012_E Camel and Oases
  9. 〖全域运营实战白宝书 - 高转化文案速成篇③〗- 高打开率标题型文案的10大黄金法则
  10. BLDC电压和运动方程