Codeforces Educational Codeforces Round 62(Rated for Div.2)ABCD

5515 ワード

A.Detective Book
転送ゲート:http://codeforces.com/contest/1140/problem/A
件名:
  本にはnページがあります.各ページにaiページがあるからこそ説明できる秘密です.毎日新しいページを読みます.今日まで読んだ秘密は全部解けました.何日間で読み終わりますか?
考え方:
  forサイクルを走って、最大のページ数cnt=iまで一日で終わります.
ACコード:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define P pair
#define ll long long
#define ull unsigned long long
#define lson id*2,l,mid
#define rson id*2+1,mid+1,r
#define ls id*2
#define rs (id*2+1)
#define Mod(a,b) a
 
B.Good String
転送ゲート:http://codeforces.com/contest/1140/problem/B
件名:
  一つの文字列は''''と'同理だけを含んでいます.文字列が一連の操作で1文字しか残せない場合、Good Stringと呼ばれ、与えられた文字列を少なくともいくつか削除してGood Stringになることができるかを問う.
考え方:
  左から一番目の'>'が出るところを探して、右から左に一番目の'を探してください.
ACコード:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define P pair
#define ll long long
#define ull unsigned long long
#define lson id*2,l,mid
#define rson id*2+1,mid+1,r
#define ls id*2
#define rs (id*2+1)
#define Mod(a,b) a> str;
		int len = str.length();
		int ans = n - 1;
		for(int i=0;i') {
				ans = min(ans, i);
				break;
			}
		}
		for (int i = len - 1; i >= 0;i--) {
			if (str[i] == '
 
C.PlayList
転送ゲート:http://codeforces.com/contest/1140/problem/C
件名:
  n首の歌には、各首都はt、bの2つの属性を含み、k首、pleasure=tのすべてと*の中の最小のbを選択する.pleasureの最大の数を聞いてください.
考え方:
 n首の歌をbから小さい順に並べて、k首の歌のtのとの最大の値を維持して、絶えず*bによってansを更新します.
ACコード:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define P pair
#define ll long long
#define ull unsigned long long
#define lson id*2,l,mid
#define rson id*2+1,mid+1,r
#define ls id*2
#define rs (id*2+1)
#define Mod(a,b) a b.b;
}

struct cmp1 {
	bool operator()(ll a,ll b){
		return a > b;
	}
};

int main()
{
	while (~scanf("%d%d", &n, &k)) {
		for (int i = 0; i < n; i++)
			scanf("%lld%lld", &a[i].t, &a[i].b);
		sort(a, a + n, cmp);
		ll ans = 0, tot = 0, minn = INF;
		priority_queue, cmp1> que;
		for (int i = 0; ik) {
				tot -= que.top();
				que.pop();
			}
			minn = min(minn, a[i].b);
			ans = max(ans, tot*minn);
		}
		printf("%lld
", ans); } return 0; }
 
D.Minimm Triangulation
転送ゲート:http://codeforces.com/contest/1140/problem/D
件名:
  正のnの辺の形をあげて、頂点の番号は反時計回りの方向を押します.
  正のnの辺の形をいくつかの三角形に分割して、各三角形の権力値は頂点の番号の積で、最小の権利値の和を求めます.
考え方:
  点1からどんどん分割すればいいです.
ACコード:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define P pair
#define ll long long
#define ull unsigned long long
#define lson id*2,l,mid
#define rson id*2+1,mid+1,r
#define ls id*2
#define rs (id*2+1)
#define Mod(a,b) a