Codeforces Round #603 (Div. 2)
A. Sweet Problem
题意:问你最多能吃几天的糖果
思路:暴力
- 存在a+b<c时一定只能吃a+b
- 其他情况看样例硬推出a+b+c/2(比赛的时候很迷)
代码:
#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll arr[100];
int main()
{
int t;cin >>t;
while(t--){
int a, b,c;cin >>a>>b>>c;
int sum = a+b+c;
int ma = max(a,max(b,c));
int mi = min(a,max(b,c));
if(ma>=sum-ma)cout<<sum-ma<<endl;
else cout<<sum/2<<endl;
}
return 0;
}
B. PIN Codes
题意:让所有的code通过改变最小位置使所有code都不同
思路:因为范围给的很小,所以可以直接暴力判断是否相同就可以了(三重for不超TAT)
代码:
#include<bits/stdc++.h>
#define ll long long
using namespace std;
bool gcd(ll a,ll b)
{
return b==0?a:gcd(b,a%b);
}
char cmp(char a, char b)
{
return a<b;
}
int main()
{
int n;
cin >>n;
while(n--)
{
int k;
cin >>k;
map<char,int>mp;
vector<int>v;
string s[1000];
for(int i=0;i<10;i++)v.push_back(0);
for(int i=0; i<k; i++)
{
cin >>s[i];
mp[s[i][3]]++;
v[s[i][3]-'0']=1;
}
int sum=0;
int num =0;
for(int i=0; i<k; i++)
{
sum =0;
for(int j=i+1; j<k; j++)
{
if(s[i]==s[j])
{
if(mp[s[j][3]]>1)
{
for(int i=0; i<10; i++)
{
if(v[i]==0)
{
sum =i,v[i] =1;
break;
}
}mp[s[j][3]]--;
}
//cout<<sum<<" "<<j<<endl;
s[j][3] = sum+'0';
num++;
}
}
}
cout<<num<<endl;
for(int i=0; i<k; i++)
cout<<s[i]<<endl;
}
return 0;
}
C. Everyone is a Winner!
题意:找到一个数所有的商;
思路:暴力
- 先剪枝到T的根号(因为左边得到的商,就是那边除这个商得到的另一个商,所以可以合在一起)
- 我是特判了一下0(因为0是要大于T的时候才能得到)
代码:
#include <vector>
#include<stdio.h>
#include<string.h>
#include <cstring>
#include <list>
#include <map>
#include <set>
#include <deque>
#include <stack>
#include <bitset>
#include <algorithm>
#include <functional>
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <cmath>
#include <set>
#include<cstring>
#define Max 0x3F3F3F
#define ll long long
#define MODD 1000000007
#define pii pair<int,int>
#include<stdio.h>
#include<queue>
//#include<bits/stdc++.h>
using namespace std;
bool gcd(ll a,ll b)
{
return b==0?a:gcd(b,a%b);
}
char cmp(char a, char b)
{
return a<b;
}
char s[1000];
int j;
void change_10_to_any(ll old,ll type)
{
j=0;
if(old)
{
change_10_to_any(old/type,type);
s[j++] = old%type > 9 ? old%type - 10+'A' : old%type+'0';
}
}
ll arr[1000000];char cc[1000000];
int main()
{
int n;cin >>n;
while(n--){
set<ll>s;
ll xx;cin >>xx;
for(ll i =1;i<=sqrt(xx);i++){
s.insert(xx/i);
s.insert(xx/(xx/i));
}
s.insert(0);
int f=1;
cout<<s.size()<<endl;
for(auto it=s.begin();it!=s.end();it++){
if(f)cout<<*it,f=0;
else cout<<" "<<*it;
}
cout<<endl;
}
return 0;
}
其他的之后再补,绝对不会咕咕咕