首页 > 其他分享 >SUM-ACM——VJ天梯训练赛

SUM-ACM——VJ天梯训练赛

时间:2024-03-24 16:23:15浏览次数:23  
标签:代码 题目 cout int SUM 如下 -- 训练赛 VJ

这次比赛我暴露了很多问题,一些模拟还有贪心思路错误。
补题如下:
E - E
题解:一道模拟题,我的问题在于不知道怎么替换下一个,就从0开始遍历数组然后数组的值--,如果为零就continue下一个,这个问题在于无法遍历完所有的数,会少算。其实只需要把接完水的按顺序到下一个就可以了,这样还有一个问题在于有可能前面的数一直在接水接到最后,这样的话我们只需要把剩下没有接完的找它的最大值就可以了。
题目如下:

代码如下:

点击查看代码
#include <bits/stdc++.h>
using namespace std;
int v[100000];
int main ()
{
	ios::sync_with_stdio(false);
	int n,m;
	int t= 0;
	cin>>n>>m;
	for(int i=0;i<n;i++){
		cin>>v[i];
	}
	int q = m;
	while(q<=n)
	{
	for(int i=0;i<m;i++){
		v[i]--;
		if(!v[i])
		{
			v[i]=v[q++];//这里就可以按照顺序让下一个接水,这个是我的不懂之处,我只想着每一个人接水就加一但是忽略了前面没有接完,或者中间没有接完的情况,思路混乱。
		}
	}
		t++;
	}
	for(int i=1;i<m;i++){
		if(v[i]>v[0])
			v[0]=v[i];  //这里可以找出剩下没有接水完的里面的最大的接水数
	}
	cout<<t+v[0]; //求和
	
}

F - F
题解:由题目可知这个数必须为2的幂的形式,且不能为0,那么这个数不可能为奇数,奇数输出-1即可,然后分析题目的意思,这个数是由不同的正整数得到的也就是说明它的幂是不一样的数,那么我们只需要把这个数化成二进制的形式然后对应的位置乘2的数相加即可。
题目如下:

代码如下:

点击查看代码
#include <bits/stdc++.h>
using namespace std;
int main ()
{
	int n;
	vector <int> v;
	int p=1;
	cin>>n;
	int t=n;
	if(n%2!=0)
	{
		cout<<-1;
		return 0;
	}else
	{
		while(n>0)
	{
			if(n%2!=0)
			{
		v.push_back((n%2)*p);
		
			}
				p*=2;
		n/=2;
	}
	}
	if(v.size()==0)
	{
		cout<<-1;
		return 0;
	}
	int sum = 0;
	for(int i=v.size()-1;i>=0;i--){
		sum+=v[i];
	}
	if(sum!=t)
	{
		cout<<-1;
		return 0;
	}
	for(int i=v.size()-1;i>=0;i--){
		cout<<v[i]<<" ";
	}
}

**K - K** 题解:一道双端队列的题目,之前没有学习过,比赛的时候只能哈希暴力拿了10分,双端队列可以让最后的数和前面的数关联起来,这道题,前面的数和最后一个插入的数的差大于86400的话,最前面的数弹出,放入下一个元素,以此类推。 题目如下:

代码如下:

点击查看代码
#include<bits/stdc++.h>
using namespace std;
int n;
int v[100005];
int ans;
struct Node{
    int t;
    int x;
    Node(int a,int b){
        t=a,x=b;
    }
};
deque<Node>q;//双端队列
int main(){
    scanf("%d",&n);
    for(int i=1;i<=n;i++){
        int t,k,x;
        scanf("%d%d",&t,&k);
        for(int j=1;j<=k;j++){
            scanf("%d",&x);
            if(!v[x]) ans++;//新增国籍
            v[x]++;//该国籍人数增加
            q.push_back(Node(t,x));//入队
        }
        while(t-q.front().t>=86400){//离开区间
            v[q.front().x]--;//该国籍人数减少
            if(!v[q.front().x]) ans--;//这个国籍没人了,总数减少
            q.pop_front();//出队
        }
        printf("%d\n",ans);
    }
    return 0;
}

标签:代码,题目,cout,int,SUM,如下,--,训练赛,VJ
From: https://www.cnblogs.com/dontian/p/18083778

相关文章

  • LeetCode 834. Sum of Distances in Tree
    原题链接在这里:https://leetcode.com/problems/sum-of-distances-in-tree/description/题目:Thereisanundirectedconnectedtreewith n nodeslabeledfrom 0 to n-1 and n-1 edges.Youaregiventheinteger n andthearray edges where edges[i]=[a......
  • CF1628D1 Game on Sum (Easy Version) 题解
    题目传送门(EasyVersion)|题目传送门(HardVersion)前置知识博弈论解法CF1628D1GameonSum(EasyVersion)设\(x_{i}\)表示第\(i\)轮时Alice选择的数。设\(f_{i,j}\)表示已经进行了\(i\)轮,且使用了\(j\)次加法时的最大得分,状态转移方程为\(f_{i,j}=\ma......
  • Maximum Sum(Round 936)
    #include<bits/stdc++.h>#defineendl'\n'usingll=longlong;typedefunsignedlonglongull;usingnamespacestd;voidGordenGhost();constllmod=1e9+7;llmaxSum(vector<ll>a,intw){llsum=0;llb=0;for(inti......
  • 递归法求解最大连续子序列和MaxSubSum
    何为递归呢总结一句话就是:向基准情形不断推进核心就在于“递”和“归”递:不断推进归:向基准情形结合今天的例子进一步解释如下:分而治之的思想divideandconquer分三步:“分”“治”“合并”“分”:将子序列看作三种,左半部分右半部分跨越中间元素的子序列“治”......
  • P1466 [USACO2.2] 集合 Subset Sums
    题目传送门:P1466[USACO2.2]集合SubsetSums-洛谷|计算机科学教育新生态(luogu.com.cn)https://www.luogu.com.cn/problem/P1466//https://www.luogu.com.cn/problem/P1466//背包#include<bits/stdc++.h>usingnamespacestd;intval[40],f[40][1005];//f[i][......
  • CF1930D1 - Sum over all Substrings (Easy Version)
    对于每一个\(f(i,j)\),我们考虑如何计算。我们发现,\(\texttt{1010}\)式的字符串很有用,所以这启发我们如果遇到了一个模式\(p_i=\texttt{'1'}\),那么我们可以在\(i+1\)的位置放一个\(\texttt{'1'}\)。这样我们直接处理了\(i,i+1,i+2\)。容易证明这是最优的。#incl......
  • leetcode 路经总和 pathsum
    很熟悉的一道题,XX二面做过,面试官没让我当场造树,让我用数组模拟树来运行,依旧跑出来了。但是刚刚再做了一下,没思路,不会写......
  • System design summary
    systemdesignhttps://github.com/donnemartin/system-design-primerPerformance vs scalabilityscalability这里面的伸缩性是指指标的。当系统有较高的负载时,每个用户仍然能够有较好的响应时,我们说他系统伸缩性强。Performance就是指一个请求的响应越快,自然说性能越高......
  • LeetCode 1161. Maximum Level Sum of a Binary Tree
    原题链接在这里:https://leetcode.com/problems/maximum-level-sum-of-a-binary-tree/description/题目:Giventhe root ofabinarytree,thelevelofitsrootis 1,thelevelofitschildrenis 2,andsoon.Returnthe smallest level x suchthatthesumofa......
  • Atcoder ARC165D Xor Sum 5
    考虑到这个最终的答案是\(\oplus\),所以只需要考虑每种排列出现的次数的奇偶,如果为奇再计算贡献即可。考虑什么情况下出现次数为奇。令每个数出现的个数为\(c_{1\simn}\),方案数即为\(\dbinom{k}{c_1,c_2,\cdots,c_n}=\prod_{i=1}^n\dbinom{k-\sum\limits_{j=1}^{......