首页 > 其他分享 >AtCoder Beginner Contest 251

AtCoder Beginner Contest 251

时间:2023-03-02 19:11:24浏览次数:57  
标签:AtCoder 头牛 Beginner 树外 int Contest 251 喂养

AtCoder Beginner Contest 251

D

给定一个1e6范围内的数n,要你构造出一个数组,对于1~n中的任何一个数都能用数组中最多三个数的和加起来。
这题真的是很好的一道思维题,想了我两个小时都没想出来

代码

int n,m,c;
int a[N],cnt=0;
//我真shabi啊
//分三组就行了,1e6 ,那每两个10进制位为1组就ok了。
//n没用
void solve() 
{
	cin>>n;
	for(int num=1;num<=10000;num*=100)
	{
		for(int i=1;i<=99;i++) a[++cnt]=num*i;
	}
	cout<<cnt<<endl;
	for(int i=1;i<=cnt;i++) cout<<a[i]<<" ";
}

E

题意

n只牛,对于每头牛i,喂养一次的费用为cost[i],连带着下一头一起喂,也就是说,花费cost[i]可以喂养第i头牛和第i+1头牛。第n头牛的下一位是1.
问最少花多少钱才能让每头牛至少喂养一次。

思路

简单dp,令\(f[i][0]\)表示当前牛是由上一头牛的喂养连带的,\(f[i][1]\)表示喂养当前牛。
环怎么处理?我们可以假定两种情况,一种是第1头牛喂养是不用花钱的(即第n头牛一定要喂养),另一种是要花钱的。

代码

void solve() 
{
	cin>>n;
	for(int i=1;i<=n;i++) cin>>a[i];
	f[1][0]=a[n],f[1][1]=a[1];//第1头是连带的
	for(int i=2;i<=n;i++) 
	{
		f[i][0]=f[i-1][1];
		f[i][1]=min(f[i-1][0],f[i-1][1])+a[i];
	}
	int ans=min(f[n][0],f[n][1]);
	f[1][0]=0,f[1][1]=a[1];//不是连带的
	for(int i=2;i<=n;i++) 
	{
		f[i][0]=f[i-1][1];
		f[i][1]=min(f[i-1][0],f[i-1][1])+a[i];
	}
	ans=min(ans,f[n][1]);
	cout<<ans<<endl;
}

F

题意

在一个简单图中,找两棵树(n个结点)(以1为根节点),第一个棵树要满足 除这棵树外的边,它的两个端点在树中 的关系是一个是另一个的祖先。
第二棵树要满足 除这棵树外的边,它的两个端点在树中的关系并非一个是另一个的祖先。

思路

第一个显然是dfs,这样的话除这棵树外的边一定有一个点是在树内另一个在树外。
第二个就是bfs了,假设a和b之间有一条边,那它们肯定有一个共同的祖先,否则就不满足条件了。

代码

自己写。

G(计算几何)

没学,待补。

标签:AtCoder,头牛,Beginner,树外,int,Contest,251,喂养
From: https://www.cnblogs.com/LIang2003/p/17173038.html

相关文章

  • AtCoder Regular Contest 155
    期末考完复健,补一下一个月前打的ARC当时赛后9秒过D,太痛了,第一次体验这种只能说,幸好当时要打的时候感觉状态不行,就unrated了比赛的状况是:A不知道哪错了;C不会;D博弈DP原......
  • AtCoder Beginner Contest 291(Sponsored by TOYOTA SYSTEMS)(D,E,F)
    AtCoderBeginnerContest291(SponsoredbyTOYOTASYSTEMS)(D,E,F)DD又一次误解题意这个题的要求是相邻的两个数不同,而我的翻译上是整个数列的数都是不同的(ಥ﹏ಥ)大意是......
  • AtCoder Beginner Contest 275 A-F 题解
    比赛链接砳赫賏,看懂扣1(A-FindTakahashi模拟。#include<cstdio>#include<algorithm>usingnamespacestd;intn,mx,id=1;intmain(){ intx; scanf("%d......
  • Atcoder ARC084D Small Multiple
    \(O(k)/O(k)\)解法标签:建图最短路考虑对于一个数\(x\),考虑由它在末尾改变能产生哪些状态:\(x+1\),此时对应的数位和\(+1\)\(x\times10\),对应数位和不变那直接把......
  • [AtCoder Grand Contest 060][C. Large Heap]
    看了几篇题解都是从下往上(子树大小从小到大)推的,来整一个从上往下的。题目链接:C-LargeHeap题目大意:称一个大小为\(2^N-1\)的排列是好排列当且仅当其满足对任意\(1\l......
  • AtCoder Beginner Contest 280 A-F 题解
    比赛链接A-PawnonaGrid模拟。#include<cstdio>#include<algorithm>#include<cstring>usingnamespacestd;constintN=15;intn,m,ans;chars[N];i......
  • AtCoder Beginner Contest 279 A-E 题解
    比赛链接A-wwwvvvvvv直接模拟#include<cstdio>#include<cstring>constintN=105;intn,ans;chars[N];intmain(){ scanf("%s",s+1); for(inti=1......
  • AtCoder Beginner Contest 291 A-F 题解
    。。。比赛链接A-camelCase直接循环判断。#include<cstdio>#include<cstring>constintN=20;chars[N];intmain(){ scanf("%s",s+1); for(inti=1;......
  • Atcoder试题乱做 Part8
    我喜欢这样跟着你,随便你带我到哪里.\(\text{[ABC231H]MinimumColoring}\)\(\color{green}{\text{[EASY]}}\)显然的行列二分图模型,一个可以染色的格子对应一个权值为......
  • Atcoder ABC 291
    AtcoderABC291D题意n张牌,每张牌两面都有数字,可以翻面,问有多少种情况使得这n张牌中每相邻两张牌表面上的数互不相同思路线性dp,每次比较当前位和上一位是否相同即可......