首页 > 其他分享 >YACS2023年1月乙组

YACS2023年1月乙组

时间:2023-02-02 23:34:11浏览次数:66  
标签:ac int ll cin 乙组 using now YACS2023

T1:无限延展

P3612 [USACO17JAN]Secret Cow Code S

代码实现
#include <bits/stdc++.h>

using namespace std;
using ll = long long;

int main() {
	string s; ll k;
	cin >> s >> k;
	
	int n = s.size();
	while (n < k) {
	    ll now = n;
	    while (now < k) now <<= 1;
	    now >>= 1;
	    k -= now+1;
	    if (k == 0) k = now;
	}
	
	cout << s[k-1] << '\n';
	
	return 0;
}

T2:树的最大和

P1122 最大子树和

代码实现
#include <bits/stdc++.h>
#define rep(i, n) for (int i = 0; i < (n); ++i)

using namespace std;
using ll = long long;

int main() {
	int n;
	cin >> n;
	
	vector<vector<int>> to(n);
	for (int i = 1; i < n; ++i) {
		int p;
		cin >> p;
		--p;
		to[p].push_back(i);
	}
	
	vector<int> a(n);
	rep(i, n) cin >> a[i];
	
	vector<ll> dp(n);
	auto dfs = [&](auto& f, int v, int p=-1) -> void {
		dp[v] = a[v];
		for (int u : to[v]) {
			f(f, u, v);
			dp[v] += max<ll>(0, dp[u]);
		}
	};
	dfs(dfs, 0);
	
	ll ans = numeric_limits<ll>::max() + 1;
	rep(i, n) ans = max(ans, dp[i]);
	
	cout << ans << '\n';
	
	return 0;
}

T3:降低均值

P2115 [USACO14MAR]Sabotage G

代码实现
#include <bits/stdc++.h>
#define rep(i, n) for (int i = 0; i < (n); ++i)

using namespace std;

const double eps = 1e-10;

int main() {
    int n;
    cin >> n;
    
    vector<int> a(n);
    rep(i, n) cin >> a[i];
    
    int tot = accumulate(a.begin(), a.end(), 0);
    
    double wa = 1, ac = 10000;
    while (abs(ac-wa) > eps) {
        double wj = (ac+wa)/2;
        
        auto ok = [&]{
            double t = tot-n*wj;
            double now = 0;
            for (int i = 1; i < n-1; ++i) {
                now += a[i]-wj;
                if (now >= t) return true;
                if (now < 0) now = 0;
            }
            return false;
        }();
        
        (ok ? ac : wa) = wj;
    } 
    
    printf("%.2f\n", ac);
    
    return 0;
}

标签:ac,int,ll,cin,乙组,using,now,YACS2023
From: https://www.cnblogs.com/Melville/p/17087734.html

相关文章

  • YACS2023年1月丙组
    T3:找零对于\(20\)块,优先找\(10+5\),其次是\(5+5+5\)代码实现#include<bits/stdc++.h>#definerep(i,n)for(inti=0;i<(n);++i)usingnamespacestd;......
  • YACS 2022年12月月赛 乙组 T1 拼接单词 题解
    一道结论题,代码相当的短。我们先来考虑会拼出重复的情况:那必定是第一个字符串里有一个$a$(其他的也行),第二个也有一个$a$。那么我们就可以选择拿第一个字符串$a$前面的......
  • YACS 2022年12月月赛 乙组 T2 八进制小数 题解
    纪念一下,两件事。$1.$打$YACS$一年了,时间过得好快啊。$2.$第一次$AK$乙组。高精板子。$8$进制转十进制,很简单。小数部分第一位的数字乘上$8^{-1}$,第二位就乘上......
  • YACS 2022年11月月赛 乙组 T3 菜单设计 题解
    题目链接上完编程课回来的深夜,更一篇吧。这一题一看数据范围$:18$,阶乘暴力打不了,就是状压。其实我还是比较喜欢状压的,不过这几个月怎么这么多状压?首先:设计状态不难发......
  • YACS 2022年11月月赛 乙组 T1 数对统计 题解
    好久没更了,闲话一句,我的初赛成绩只有$71.5$,$76$才能进$NOIP$,所以就更一篇吧首先先考虑暴力算法,枚举两个数,设这两个数为$x$和$y$,如果$f[x][y]=false$,那就标记为$t......
  • YACS2021年7月乙组
    T1:牛奶供应(三)站在提前生产的角度来思考,为了缩小总成本,如果某天足够便宜就多生产一些牛奶。但这样的想法会遇到一个困难,也就是现在生产牛奶到底要生产多少箱,它是由之后的若......
  • YACS2022年9月乙组
    T1:区间交集(二)这种统计有多少对满足题意,首先想下暴力\(O(n^2)\)复杂度正解:判断区间是否有交集,其实比较麻烦,怎么简单判断?如果已知左端点的大小顺序,那么判断是否有交集......
  • 2020年9月乙组 最大圆弧
    首先,如果将题目的“圆环”改成“数组”,相信大家都会做,就是如下intsum=0,maxn=0;//sum更新最大值for(inti=1;i<=n;i++){ scanf("%d",&a); if(sum<0)sum=0;//......