仿站小工具怎么用,上海做网站收费,百度企业官网认证,好看的html页面模板今天先补了上一场的Codeforces Global Round 11三道题#xff0c;做的心神恍惚#xff0c;然后17点报名没敢提交#xff0c;先写了4个题剩下的改天补一补 我是真的服信号#xff0c;卷积卷si我了
A - Number of Apartments
枚举3和5的个数#xff0c;直接算出来7的个数即…今天先补了上一场的Codeforces Global Round 11三道题做的心神恍惚然后17点报名没敢提交先写了4个题剩下的改天补一补 我是真的服信号卷积卷si我了
A - Number of Apartments
枚举3和5的个数直接算出来7的个数即可
#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0)
#pragma GCC optimize(2)
#includeset
#includemap
#includecmath
#includequeue
#includestring
#includevector
#includecstdio
#includecstring
#includeiostream
#includealgorithm
#includeunordered_map
using namespace std;
typedef long long ll;
typedef pairint,int pii;
const int N100010;
int main()
{IO;int T1;cinT;while(T--){int n;cinn;bool ok0;for(int i0;in;i){if(ok) break;for(int j0;jn;j){int kn-3*i-5*j;if(k0||k%7) continue;couti j k/7\n;ok1;break;}}if(!ok) cout-1\n; }return 0;}B - Barrels
很明显需要把第2~k1大的全部导入最大的容器中然后求个和即是答案 #define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0)
#pragma GCC optimize(2)
#includeset
#includemap
#includecmath
#includequeue
#includestring
#includevector
#includecstdio
#includecstring
#includeiostream
#includealgorithm
#includeunordered_map
using namespace std;
typedef long long ll;
typedef pairint,int pii;
const int N200010;
int n,k;
int a[N];
int main()
{IO;int T1;cinT;while(T--){cinnk;for(int i1;in;i) cina[i];sort(a1,a1n);reverse(a1,a1n);ll res0;for(int i1;ik;i) resa[i1];resa[1];coutres\n;}return 0;}C - Numbers on Whiteboard
贪心1一定最后再用然后依次用两个最大的即可。 总的来说就是每次用两个最大的。 #define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0)
#pragma GCC optimize(2)
#includeset
#includemap
#includecmath
#includequeue
#includestring
#includevector
#includecstdio
#includecstring
#includeiostream
#includealgorithm
#includeunordered_map
using namespace std;
typedef long long ll;
typedef pairint,int pii;
const int N200010;
int n,k;
int a[N];
int main()
{IO;int T1;cinT;while(T--){cinn;vectorpii ans;int nown;for(int i1;in;i){ans.push_back({n-i,now});now(n-inow1)/2;}coutnow\n;for(auto t:ans) coutt.first t.second\n;cout\n;}return 0;}D - String Deletion
首先扫一遍序列把相同的分段用一个vector存下来不难发现我如果当前的一段个数大于1我们只需要两次操作都在这一段即可否则只需要在后面的段中选择一个个数大于1的用操作1即可简单模拟。
#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0)
#pragma GCC optimize(2)
#includeset
#includemap
#includecmath
#includequeue
#includestring
#includevector
#includecstdio
#includecstring
#includeiostream
#includealgorithm
#includeunordered_map
using namespace std;
typedef long long ll;
typedef pairint,int pii;
const int N200010;
int n,k;
char s[N];
int main()
{IO;int T1;cinT;while(T--){cinn;cins1;vectorint now;for(int i1;in;i){int ji1;while(jns[i]s[j]) j;now.push_back(j-i);ij-1;}int res0;for(int i0,j0;inow.size();i){if(now[i]2){res;continue;}bool ok0;jmax(j,i1);for(;jnow.size();j){if(now[j]2) {now[j]--;ok1;break;}}if(!ok) i;res;}coutres\n;}return 0;
}E - String Reversal
不难贪心出结论即每次选择离自己最近的字母交换
首先可以记下每个字母出现的位置用26个vector即可用树状数组快速求出每次移动需要的代价然后就不难得出答案了。 #define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0)
#pragma GCC optimize(2)
#includeset
#includemap
#includecmath
#includequeue
#includestring
#includevector
#includecstdio
#includecstring
#includeiostream
#includealgorithm
#includeunordered_map
using namespace std;
typedef long long ll;
typedef pairint,int pii;
const int N200010;
char s[N],p[N];
int n;
queueint mp[27];
int tree[N];
int lowbit(int x)
{return x-x;
}
void update(int k,int x)
{for(;kn;klowbit(k)) tree[k]x;
}
int query(int k)
{int res0;for(;k;k-lowbit(k)) restree[k];return res;
}
int main()
{IO;int T1;//cinT;while(T--){cinn;cins1;for(int i1;in;i){mp[s[i]-a].push(i);update(i,1);}ll res0;for(int in;i;i--)//逆序字符{int posmp[s[i]-a].front();mp[s[i]-a].pop();resquery(pos)-1;update(pos,-1);}coutres\n;}return 0;}我是刚刚做完信号的一题来写的题解现在心态非常爆炸。。。 题解质量不想说了真的laji
剩下的题明天补一下吧明天信号又要自己看书了老师讲的根本听不懂啊啊啊 要加哟哦~~