CodeForces 471C MUH and House of Cards

看题目的Hint 图形就知道题意了,对着图形,稍微观察一下就会发现,每一层需要的卡牌数目为 2 * n + (n - 1)个,然后大致就有个思路,暴力枚举,但是仅仅这样没法子枚举,这个公式 只代表其中一层,不可能对每一层都枚举吧,可以化简一下  公式就是 3 * n - 1,这样就会发现 每次差1就是3的倍数了,然后每一层都差1,如果有i层的话,那么其实就是差了i,这样就很容易想到了,假设共有卡牌 x张,其实 就是枚举 i  ,有多少个i 使得
 (x + i)%3 == 0,这样就简单了,但是还有个限制的,因为 搭建i层 至少需要的牌数要知道,布恩那个超过x张,这里又得多画画找找,后来发现 搭建i层 至少需要 (3 * i + 1)* i/2张卡牌,这样 就很容易确定枚举范围了,而且 答案不大,所以直接枚举答案没事

题目链接:戳这里

做完觉得有点取巧,万一答案很大不就完了,于是乎去看看别人怎么做的,发现了更好的方法,其实 每一层 差1 就是3的倍数,那么相当于,每一层减去2就是3的倍数,这样就不是 枚举 (x + i)%3 == 0了,可以往下 枚举   (x - 3 * (j - 1) - 2 * j)%3 == 0;这样就不用考虑上限了,减少了找公式的时间

ll n;

void init() {

}

bool input() {
	while(cin>>n) {

		return false;
	}
	return true;
}

void cal() {
	ll ans = 0ll;
	for(ll k = 1;;k++) {
		if(n < (3 * k + 1) * k / 2) break;
		if((n + k)%3 == 0)ans++;
	}
	cout<<ans<<endl;
}

void output() {

}

int main() {
	while(true) {
		init();
		if(input())return 0;
		cal();
		output();
	}
	return 0;
}
时间: 2024-12-05 17:48:26

CodeForces 471C MUH and House of Cards的相关文章

Codeforces Round #424 (Div. 2) E. Cards Sorting(线段树)

题目链接:Codeforces Round #424 (Div. 2) E. Cards Sorting 题意: 将n个数放进一个队列,每次检查队首,看看是不是队列中最小的数,如果是就扔掉,如果不是就放到队尾. 这样直到队列为空,为需要操作多少次. 题解: 考虑用两个指针模拟,最开始now指针指向第一个数,然后nxt指针指向下一个将要被删除的数. 然后我们要算出这里需要移动多少步,然后删掉这个数,一直重复操作,直到将全部的数删完. nxt指针可以用set来维护,now指针可以用并查集来维护. 计

CodeForces - 471D MUH and Cube Walls

CodeForces - 471D 记录差分,利用kmp对分别除去了第一个数的两个数组进行匹配 注意特判模式串长度为一的情况 1 #include <cstdio> 2 #include <cstring> 3 using namespace std; 4 5 const int maxn = 2e5 + 10; 6 int ans, n, m; 7 8 void find_substring(int pattern[], int text[]) { 9 vector<int

CQUOJ 10819 MUH and House of Cards

Polar bears Menshykov and Uslada from the zoo of St. Petersburg and elephant Horace from the zoo of Kiev decided to build a house of cards. For that they've already found a hefty deck of n playing cards. Let's describe the house they want to make: Th

codeforces 680A A. Bear and Five Cards(水题)

题目链接: A. Bear and Five Cards //#include <bits/stdc++.h> #include <vector> #include <iostream> #include <queue> #include <cmath> #include <map> #include <cstring> #include <algorithm> #include <cstdio>

Codeforces Round #460 D. Karen and Cards

Description Karen just got home from the supermarket, and is getting ready to go to sleep. After taking a shower and changing into her pajamas, she looked at her shelf and saw an album. Curious, she opened it and saw a trading card collection. She re

Codeforces Round #490 (Div. 3) F - Cards and Joy

F - Cards and Joy 思路:比较容易想到dp,直接dp感觉有点难,我们发现对于每一种数字要处理的情况都相同就是有 i 张牌 要给 j 个人分, 那么我们定义dp[ i ][ j ]表示 i 张牌给 j 个人分最大的价值可以得到dp方程如下: dp[ i ][ j ] = max(dp[ i - u ][ j - 1 ] + f[ u ] )   u <= k 暴力转移就好了. #include<bits/stdc++.h> #define LL long long #def

#269(div2) C. MUH and House of Cards

题意:给出N,问可以组装成不同的层. 思路:发现第一层的mod3=2,第二层的mod3=1,第三层的mod3=0,第四层的mod3=2......然后我们判断N是否足够建立该层最少的所需,第i层所需=3*n*(n-1)/2+2*n,for循环里的i也要开longlong ,不然超时,别问我为什么知道. 1 #include<bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 5 int main(){ 6 ll n;

CodeForces462B

Appleman and Card Game Time Limit:1000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u Submit Status Practice CodeForces 462B Description Appleman has n cards. Each card has an uppercase letter written on it. Toastman must choose k card

大神刷题表

9月27日 后缀数组:[wikioi3160]最长公共子串 dp:NOIP2001统计单词个数 后缀自动机:[spoj1812]Longest Common Substring II [wikioi3160]最长公共子串 [spoj7258]Lexicographical Substring Search 扫描线+set:[poj2932]Coneology 扫描线+set+树上删边游戏:[FJOI2013]圆形游戏 结论:[bzoj3706][FJ2014集训]反色刷 最小环:[poj1734