Codeforces Round #621 (Div. 1 + Div. 2)(无比自闭的一夜)

菜到自闭自闭~~
欲哭无泪~
深夜一人伤悲~
掉了~
rank–
明天要多刷水题,体验AC快感…
真几把自闭

A.题意:不想说了…
一开始把n当成天数了,WWW!!!

W2的代码

#include<bits/stdc++.h>

using namespace std;
int a[105];

int main(){
	int t;
	cin>>t;
	while(t--){
		int n,d;
		cin>>n>>d;
		for(int i=0;i<n;i++){
			cin>>a[i];
		}
		if(n == 1){
			cout<<a[0]<<endl;
			continue;
		}
		int num = d;//天数 
		int k = 1;
			while(num>=k){//天数 
				if(a[k]!=0){//草堆不等于0,那么能移动 
				a[0] += 1;//得到1 
				num -= k;//耗费k天 
				a[k]--;
				}
				else{
					k++;
				}
				if(k==d-1)
				 break;
			}
		cout<<a[0]<<endl;
	} 
	return 0;
} 

AC

#include<iostream>
using namespace std;

int a[105];

int main(){
	int t;
	cin >> t;
	while(t--){
		int n,d;
		cin>>n>>d;
		
		for(int i = 1; i <= n; i++)
			cin >> a[i];
		for (int i = 2; i <= n; i++){
		
			if (d <= 0) break;
			
			if (a[i]*(i - 1)<= d){
				a[1]+= a[i];
				d -= a[i] * (i - 1);
			} 
			else{
				a[1] += d/(i - 1);
				break;
			}
		}
		
		cout<<a[1]<<endl;
	}
	return 0;
}

B题意:不想说了,A调了半个小时

#include <bits/stdc++.h>
#define maxn 100000+7
using namespace std;

typedef long long ll;
//const int  maxn 1e5+7;

ll a[maxn];

int main(){
	int t;
	cin >> t;
	while (t--) {
		ll n, x, k = -1;
		bool  flag = 0;
		cin>>n>>x;
		for (int i=1;i<=n;i++) {
			cin >> a[i];
			k = max(a[i], k);
			if (a[i] == x) flag = 1;
		}
		if(flag) {
			cout <<"1"<<endl;
			continue;
		}
		ll ans;
		if(x<k){
			ans = 2;
		} 
		else{
			ans = x / k;
			if(x % k) 
			ans++;
		}
		cout<<ans<<endl;
	}
	return 0;
}

C
我是菜鸡我是菜鸡
呜呜啊~~题都没读懂,完全是另一个题的
W4,竟然还能过去几个样例
曲解题意代码二款:

#include<bits/stdc++.h>
#define inf 0x3f3f3f3f
using namespace std;
typedef long long ll;
set<char> st;
map<char,int> sd;

ll jie[100];

void init()
{
	jie[0]=1;
	for(ll i=1;i<=100;i++)
		jie[i]=i*jie[i-1];
}

ll check(ll num){
	ll ans=1;
	ll flag = num;
	for(ll i =1;i<=(num/2);i++){//循环多少次 
		ans *= flag;
		flag--;
	}
	return ans;
}


int main(){
	init();
	string s;
	cin>>s;
	int l = s.length();
    for(int i=0;i<l;i++){
    	sd[s[i]]++;//记录每个字符出现的次数 
    	st.insert(s[i]);
	}
	if(st.size() == l){
		cout<<1<<endl;
		return 0;
	}
	ll sum = 1;
	for(auto i=sd.begin();i!=sd.end();i++){//单个字母
	   ll res = i->second;
	   //cout<<res<<" "<<endl;
	   sum = sum*(check(res)/jie[res/2]);
	
	}
	cout<<sum<<endl;
	return 0;
}

曲解题意代码一款:

#include<bits/stdc++.h>
#define inf 0x3f3f3f3f
using namespace std;
typedef long long ll;
set<char> st;
map<char,int> sd;


int main(){
	string s;
	cin>>s;
	int l = s.length();
    for(int i=0;i<l;i++){
    	sd[s[i]]++;//记录每个字符出现的次数 
    	st.insert(s[i]);
	}
	if(st.size() == l){
		cout<<1<<endl;
		return 0;
	}

	int maxx =-inf;
	for(auto i=sd.begin();i!=sd.end();i++){//单个字母 
		maxx = max(maxx,i->second);
	}
	int sum = 1;
	for(auto i=sd.begin();i!=sd.end();i++){//全部字母 
	   sum *= i->second;
	}
	cout<<max(sum,maxx)<<endl;

	return 0;
}

没AC~~

更别说后面的都没看了~~

发布了177 篇原创文章 · 获赞 6 · 访问量 6412

猜你喜欢

转载自blog.csdn.net/qq_45585519/article/details/104368077