> 웹 프론트엔드 > HTML 튜토리얼 > Codeforces Round #253 DIV1 C 贪心_html/css_WEB-ITnose

Codeforces Round #253 DIV1 C 贪心_html/css_WEB-ITnose

WBOY
풀어 주다: 2016-06-24 12:00:57
원래의
1124명이 탐색했습니다.

http://codeforces.com/contest/442/problem/C

题意很easy,基本上肯定有坑坑洼洼的样子,看题目案例,从第三个跟第二个没有凹的案例来看的话,多写几个以及多画画过程稍微推一下就会发现,除了最大的两个数以外都可以得到,然后就是凹的情况了,凹的情况肯定是唯一的,把中间的数除去得到一个值,但是凹凸有结合该怎么办,猜一把先把凹的单独一个个给解决了,产生没有凹的序列再处理,然后刚好对于第一个案例进行测试,发现答案正确,于是就这么贪心的敲了一个

对于凹的情况 可以使用栈来处理,处理完对于没有凹的情况直接排序 除了最大的两个数以外其它 可以都取了  


#include<iostream>#include<cstdio>#include<list>#include<algorithm>#include<cstring>#include<string>#include<queue>#include<stack>#include<map>#include<vector>#include<cmath>#include<memory.h>#include<set>#define ll long long#define eps 1e-8const int inf = 0xfffffff;const ll INF = 1ll > G;//typedef pair<int> P;//vector<pair> > ::iterator iter;////map<ll>mp;//map<ll>::iterator p;int n;int num[1000000 + 5];stack<int>	s;ll ans; void init() {	memset(num,0,sizeof(num));	while(!s.empty())s.pop();	ans = 0ll;}bool input() {	while(scanf("%d",&n) == 1) {		for(int i=0;i<n scanf return false true cal bool flag="false;" s.push for i="1;i<n;i++)" if s.top>= s.top() && flag) {			s.pop();			ans += min(num[i],s.top());			if(num[i]  s.top() || num[i] = tmp)ans += min(s.top(),num[i]);				}			}			if(num[i]   <br>  <br>  <p></p> </n></int></ll></ll></pair></int></set></memory.h></cmath></vector></map></stack></queue></string></cstring></algorithm></list></cstdio></iostream>
로그인 후 복사
관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿