暑假集训cf50练之10

A水题,判断第一个,后面的全是0

#include<map>
#include<set>
#include<cmath>
#include<queue>
#include<stack>
#include<vector>
#include<cstdio>
#include<cassert>
#include<iomanip>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#define pi acos(-1.0)
#define ll long long
#define mod 1000000007
#define ls l,m,rt<<1
#define rs m+1,r,rt<<1|1
#pragma comment(linker, "/STACK:1024000000,1024000000")

using namespace std;

const double g=10.0,eps=1e-4;
const int N=1000+10,maxn=500+100,inf=0x3f3f3f;

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    ll a,b,n;
    cin>>a>>b>>n;
    for(ll j=0;j<=9;j++)
        if((a*10+j)%b==0)
        {
            a=a*10+j;
            cout<<a<<string(n-1,‘0‘)<<endl;
            return 0;
        }
    cout<<-1<<endl;
    return 0;
}
/*********************

*********************/

A

B有点坑,wa了五发,找连续日期,注意2月28天

#include<map>
#include<set>
#include<cmath>
#include<queue>
#include<stack>
#include<vector>
#include<cstdio>
#include<cassert>
#include<iomanip>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#define pi acos(-1.0)
#define ll long long
#define mod 1000000007
#define ls l,m,rt<<1
#define rs m+1,r,rt<<1|1
#pragma comment(linker, "/STACK:1024000000,1024000000")

using namespace std;

const double g=10.0,eps=1e-4;
const int N=1000+10,maxn=500+100,inf=0x3f3f3f;

int mon[12]={31,28,31,30,31,30,31,31,30,31,30,31};
vector<pair<string,int> >m;
void get(string s)
{
    bool f=0;
    for(int i=0;i<m.size();i++)
    {
        if(m[i].first==s)
        {
            m[i].second++;
            f=1;
            break;
        }
    }
    if(!f)m.push_back(make_pair(s,1));
}
inline bool isnum(char s)
{
    return ‘0‘<=s&&s<=‘9‘;
}
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    string s,p;
    cin>>s;
    for(int i=0;i<s.size()-9;i++)
    {
        if(isnum(s[i])&&isnum(s[i+1])&&s[i+2]==‘-‘&&isnum(s[i+3])&&
           isnum(s[i+4])&&s[i+5]==‘-‘&&s[i+6]==‘2‘&&s[i+7]==‘0‘&&s[i+8]==‘1‘&&‘3‘<=s[i+9]&&s[i+9]<=‘5‘)
        {
            int day=(s[i]-‘0‘)*10+s[i+1]-‘0‘;
            int p=(s[i+3]-‘0‘)*10+s[i+4]-‘0‘-1;
            if(p>=0&&p<12)
            {
                if(day>0&&day<=mon[p])
                {
                    get(s.substr(i,10));
                }
            }
        }
    }
    int ans=0;
    string anss;
    for(int i=0;i<m.size();i++)
    {
       // cout<<m[i].first<<" "<<m[i].second<<endl;
        if(m[i].second>ans)
        {
            ans=m[i].second;
            anss=m[i].first;
        }
    }
    cout<<anss<<endl;
    return 0;
}
/*********************

*********************/

B

c模拟,找最小的那一个开始模拟,注意可能有多个最小值,但是算出来只有一个全为正数

#include<map>
#include<set>
#include<cmath>
#include<queue>
#include<stack>
#include<vector>
#include<cstdio>
#include<cassert>
#include<iomanip>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#define pi acos(-1.0)
#define ll long long
#define mod 1000000007
#define ls l,m,rt<<1
#define rs m+1,r,rt<<1|1
#pragma comment(linker, "/STACK:1024000000,1024000000")

using namespace std;

const double g=10.0,eps=1e-4;
const int N=100000+10,maxn=500+100,inf=0x3f3f3f;

ll a[N],n,b[N];
void getans(int x,ll dis)
{
    for(int i=1;i<=n;i++)b[i]=a[i];
    ll te=b[x];
    b[x]+=(b[x]*n+dis);
    for(int i=1;i<=n;i++)
        b[i]-=te;
    while(dis--){
        x++;
        if(x>n)x=1;
        b[x]--;
    }
    for(int i=1;i<=n;i++)
        if(b[i]<0)
           return ;
    for(int i=1;i<=n;i++)
        cout<<b[i]<<" ";
    cout<<endl;
}
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    ll k,minn=1e10;
    cin>>n>>k;
    for(int i=1;i<=n;i++)
    {
        cin>>a[i];
        minn=min(minn,a[i]);
    }
    vector<int>v;
    for(int i=1;i<=n;i++)
    {
        if(a[i]==minn)
        {
            if(minn==0)
            {
                if(i+1<=n&&a[i+1]!=0)v.push_back(i);
                else if(i==n&&a[1]!=0)v.push_back(i);
            }
            else v.push_back(i);
        }
    }
  //  cout<<v.size()<<endl;
    for(int i=0;i<v.size();i++)
    {
        ll dis=(k+n-v[i])%n;
        getans(v[i],dis);
    }
    return 0;
}
/*********************
3 2
0 3 3
3 1
2 0 4
3 3
2 3 1
3 1
1 0 0
*********************/

C

D贪心,先排序,然后挨个匹配

#include<map>
#include<set>
#include<cmath>
#include<queue>
#include<stack>
#include<vector>
#include<cstdio>
#include<cassert>
#include<iomanip>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#define pi acos(-1.0)
#define ll long long
#define mod 1000000007
#define ls l,m,rt<<1
#define rs m+1,r,rt<<1|1
#pragma comment(linker, "/STACK:1024000000,1024000000")

using namespace std;

const double g=10.0,eps=1e-4;
const int N=100000+10,maxn=500+100,inf=0x3f3f3f;

pair<int,int>v[2][N];
int vv[2];
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    int n;
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        int c,s;
        cin>>c>>s;
        v[c][++vv[c]]=make_pair(s,i);
    }
    sort(v[0]+1,v[0]+1+vv[0]);
    sort(v[1]+1,v[1]+1+vv[1]);
    for(int i=1,j=1;i<=vv[0]&&j<=vv[1];)
    {
        int t=min(v[0][i].first,v[1][j].first);
        cout<<v[0][i].second<<" "<<v[1][j].second<<" "<<t<<endl;
        v[0][i].first-=t;
        v[1][j].first-=t;
        if(v[0][i].first)j++;
        else if(v[1][j].first)i++;
        else if(i<vv[0])i++;
        else j++;
    }
    return 0;
}
/*********************
2
0 0
1 0
5
1 11
0 9
1 4
0 4
0 2
*********************/

D

时间: 2024-10-11 15:52:30

暑假集训cf50练之10的相关文章

暑假集训cf50练之7

Codeforces Round #409 第一题很水但是wa了一发,因为没考虑K前面是K的情况 #include<map> #include<set> #include<cmath> #include<queue> #include<stack> #include<vector> #include<cstdio> #include<cassert> #include<iomanip> #inclu

暑假集训cf50练之12

这是一场爆0的比赛...... 第一题wa了20发,longlong改double再改unsigned long long还是wa,最后判断的时候改成除,边界设为1e19就过了 #include<map> #include<set> #include<cmath> #include<queue> #include<stack> #include<vector> #include<cstdio> #include<ca

暑假集训cf50练之19

Codeforces Round #388 (Div. 2) A水,总是忘记输出个数 #include<map> #include<set> #include<cmath> #include<queue> #include<stack> #include<vector> #include<cstdio> #include<cassert> #include<iomanip> #include<

暑假集训cf50练之18

Codeforces Round #426 (Div. 2) A,判断向哪边旋转的,枚举过的=  =,感觉我的太复杂了,应该有更简单的方法 #include<map> #include<set> #include<cmath> #include<queue> #include<stack> #include<vector> #include<cstdio> #include<cassert> #include&

暑假集训cf50练之15

CodeForces 402A 水题,模拟 #include<map> #include<set> #include<cmath> #include<queue> #include<stack> #include<vector> #include<cstdio> #include<cassert> #include<iomanip> #include<cstdlib> #include&

暑假集训cf50练之8

Codeforces Round #400 最近好像总是有点不想打,专题也刷不动,还是坚持这做了一场,虽然打到一半就没打了...(反正通常都只能做出两题) 感觉自己切水题越来越熟练了,然而难题还是不会做.. A题,水,用vector存下来就行了 #include<map> #include<set> #include<cmath> #include<queue> #include<stack> #include<vector> #in

暑假集训cf50练之3

Codeforces Round #349 (Div. 2) 第一题直接算就行了为了追求手速忘了输出yes导致wa了一发... 第二题技巧题,直接sort,然后把最大的和其他的相减就是构成一条直线,为了满足条件就+1 #include<map> #include<set> #include<cmath> #include<queue> #include<stack> #include<vector> #include<cstdi

暑假集训cf50练之14

Codeforces Round #425 (Div. 2) A超级水,三分钟1a #include<map> #include<set> #include<cmath> #include<queue> #include<stack> #include<vector> #include<cstdio> #include<cassert> #include<iomanip> #include<c

暑假集训7.11 字符串回文暴力

#include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long ll; typedef unsigned long long ull; #define MM(a,b) memset(a,b,sizeof(a)); const double eps = 1e-10; const int i