首页 > 其他分享 >《看了受制了》第四十四天,5道题,合计274道题

《看了受制了》第四十四天,5道题,合计274道题

时间:2023-10-20 13:11:56浏览次数:32  
标签:道题 int res void 第四十四 st ++ 274 size

2023年10月20日

Acwing3652 最大连续子序列

题目理解

代码实现

const int N = 1e5 + 10;
int w[N], f[N];
void solve()
{
	int n;
	while(cin >> n)
	{
		int g, t = 0, l = 0, r = 0;
		memset(f, 0, sizeof f);
		for(int i = 1; i <= n; i++)
			cin >> w[i];
			
		int res = -INF;
		for(int i = 1; i <= n; i++)
		{
		    f[i] = max(f[i - 1] + w[i], w[i]);
		    if(f[i - 1] < 0) t = i - 1;
		    
		    if(f[i] > res) res = f[i], l = t, r = i - 1;
		}
        
        if(res < 0) cout << "0 0 0\n";
        else cout << res << " " << l << " " << r << endl;
	}

	return;
}

第二种方法

const int N = 1e5 + 10;
int w[N], f[N];
void solve()
{
	int n;
	while(cin >> n)
	{
		int g, l, r;
		memset(f, 0, sizeof f);
		for(int i = 1; i <= n; i++)
			cin >> w[i];
			
		int res = -INF;
		for(int i = n; i >= 1; i--)
		{
			if(w[i] >= f[i + 1] + w[i])
			{
				f[i] = w[i];
				g = i;
			}else
			    f[i] = f[i + 1] + w[i];
			
			if(res <= f[i])
			{
				l = i;
				res = f[i];
				r = g;
			}
		}
		
		if(res < 0) cout << "0 0 0\n";
	    else cout << res << " " << l - 1 << " " << r - 1 << endl;

	}

	return;
}

Acwing3715 交换次数

题目理解

可以在\(O(n^2)\)的时间解决,那么就直接冒泡来代表逆序对(这个题应该是顺序对)的数量

代码实现

const int N = 1010;
int a[N], cnt[N], b[N], res;
void solve()
{
	int n;
	cin >> n;

	for(int i = 1; i <= n; i++)
		cin >> a[i];

	for(int i = 1; i <= n; i++)
		for(int j = 1; j <= i - 1; j++)
			if(a[j] > a[i])
				cnt[a[i]]++;



	for(int i = 1; i <= n; i++) cout << cnt[i] << " ", res += cnt[i];
	cout << endl << res;
	return;
}

Acwing2074 倒计时

题目理解

用栈来存储即可。比较简单实现,也可以去直接写枚举。都是\(O(n)\)的复杂度

代码实现

const int INF = 0x3f3f3f3f;
int CNT = 1;

void clean(stack<int> &u)
{
    while(!u.empty()) u.pop();
}

void solve()
{

    int m, n;
    cin >> m >> n;

    stack<int> st;
    int k, res = 0;

    for(int i = 1; i <= m; i++)
    {
        cin >> k;
        if(k == n && (int)st.size() == 0)
            st.push(k);
        else if(st.size() != 0 && k != st.top() - 1)
        {
            clean(st);
            st.push(k);
        }
        else if(st.size() != 0 && k == st.top() - 1)
        {
            st.push(k);
            if((int)st.size() == n)
            {
                res++;
                clean(st);
            }
        }
    }

    cout << "Case #" << CNT << ": " << res << endl;
    CNT++;
    return;
}

Div.3 Round847 Polycarp and the Day of Pi

题目大意

问你给出的数字,有多少个数字是和\(Π\)相等的,最多不超30位。

题目理解

他已经给了你30位,直接复制做字符串匹配即可。

代码实现

string s = "314159265358979323846264338327";
void solve()
{
	string n;
	cin >> n;

	int res = 0;
	for(int i = 0, j = 0; i < n.size(); i++, j++)
		if(n[i] == s[j])
		  res++;
        else
		  break;

	cout << res << endl;
	return;
}

Div.3 Round847 B Taisia and Dice

题目大意

有\(n\)个骰子,然后会抛出,他们的和是\(S\)然后去掉一个最大值的骰子后,和是\(R\),问骰子的原情况可能是什么?

题目理解

我们先用\(s - r\)计算出最大值的限制。然后再去贪心一下:

  1. 先全都变成最大的骰子
  2. 然后凑骰子的数量,用1来凑,骰子的数量。
  3. 就是加一减一,让总和不变,骰子多1,凑够\(n\)个骰子即可

代码实现


void solve()
{	

	int n, s, r;
	cin >> n >> s >> r;

	int m = s - r;
	vector<int> res;
	for(; s >= m; s -= m)
		res.push_back(m);

	if (s) res.push_back(s);

	sort(res.begin(), res.end());
	for(int i = 0; (int)res.size() < n;)
	{
		if (res[i] == 1) {
		    ++i;
		    continue;
		}

		res[i]--;
		res.push_back(1);
	}


	for(int i = 0; i < (int)res.size(); i++)
		cout << res[i] << " ";

	cout << endl;
	return;
}

标签:道题,int,res,void,第四十四,st,++,274,size
From: https://www.cnblogs.com/wxzcch/p/17776834.html

相关文章

  • leetcode274 H指数 —— 排序后遍历/差分 c++
    给你一个整数数组 citations ,其中 citations[i] 表示研究者的第 i 篇论文被引用的次数。计算并返回该研究者的 h 指数。根据维基百科上 h指数的定义:h 代表“高引用次数”,一名科研人员的 h 指数 是指他(她)至少发表了 h 篇论文,并且每篇论文 至少 被引用 h 次。......
  • 《看了受制了》第四十二天,11道题,合计261道题
    2023年10月15日今天是补题大作战!AcwingRound125A数量题目理解语法题代码实现voidsolve(){intcnt=0;intn;cin>>n;for(inti=1;i<=n;i++)if(i%2==0&&i%3!=0)cnt++;cout<<cnt;return;......
  • 《看了受制了》第四十二天,3道题,合计250道题
    2023年10月13日Acwing1049大盗阿福题目理解代码实现#include<bits/stdc++.h>usingnamespacestd;constintN=1e5+10;intn;intf[N][2],w[N];voidsolve(){memset(f,0,sizeoff);cin>>n;for(inti=1;i<=n;i++)cin>&......
  • 《看了受制了》第四十天,16道题,合计240道题
    2023年10月11日大部分的DP背包模型在上一篇。回来后做了两个小小小小小的不能再小的题。Div.3Round867BKarinaandArray题目大意删去任意的值,最后让相邻的乘积最大。题目理解最小的相乘或最大的相乘代码实现voidsolve(){ intn; cin>>n; vector<ll>a(n); f......
  • 《看了受制了》第三十九天,14题,合计224道题
    2023年10月10日1.Acwing1015摘花生题目理解状态表示:f[i][j]表示,走到f[i][j]的方法的所有的集合。集合属性:最大值状态转移:f[i][j]+=max(f[i-1][j],f[i][j-1])(因为只能从上面和左面过来)代码实现//两种可能,从上面来和从左面来//集合表示是:走到i,j这个格子的集合......
  • 力扣-2744-最大字符串配对数目
    给你一个下标从0开始的数组words,数组中包含互不相同的字符串。如果字符串words[i]与字符串words[j]满足以下条件,我们称它们可以匹配:字符串words[i]等于words[j]的反转字符串。0<=i<j<words.length请你返回数组words中的最大匹配数目。注意,每个字符串最......
  • 操作系统之存储容量问题的解决(其实这道题并不难哈)
    例题展示例题解决在正式进行该题目的解决之前,我们需要先了解到16进制的运算法则:16进制在运算过程中,从右到左依次进行运算,不够则借位,大于16则进位;而这道题的解决方法:......
  • Java流程控制10道题_上机
    Java流程控制10道题计算出1-100之间所有不能被3整除的整数的和大于(或等于)2000的数字。packageday01;publicclassLab01{publicstaticvoidmain(String[]args){//计算出1-100之间所有不能被3整除的整数的和大于(或等于)2000的数字。intsum......
  • 《看了受制了》第三十四天,5道题,合计187道题
    2023年10月4日牛客国庆消消乐Day6CCombinationofPhysicsandMaths题目大意得到所有子矩阵的最大的可能。计算的方法是所有的和,再比上所选的值的最后一行的和。题目理解我们可以强行找到规律,比值大的加比值小的只会让比值减小,比值相同的加和比值不变。那么就可知道是单......
  • 《看了受制了》第三十三天,8道题,合计182道题
    2023年10月13日昨天出去玩了,没做题,真罪恶。哎Div.3Round883ARudolphandCuttheRope题目大意每个绳子有个钉子的高度和绳子的长度,糖果和每一个绳子的末尾相连,问我需要剪掉多少根绳子才能让糖果落地。题目理解其实就是统计a>b的个数即可代码实现voidsolve(){ ......