• Codeforces Round #617 (Div. 3) A~D



    链接

    #include<bits/stdc++.h>
    
    using namespace std;
    typedef long long ll;
    
    const int N = 1e5+10;
    
    int a[N] = {0};
    
    int main(int argc, char const *argv[])
    {
    	int T;
    	ios::sync_with_stdio(false);
    	cin>>T;
    	while(T--)
    	{
    		int n,k;
    		cin>>n;
    		int num=0;
    		int flag = 0;
    		int temp = 0;
    		for (int i = 0; i < n; ++i)
    		{
    			cin>>a[i];
    			if (a[i]&1)
    			{
    				num++;
    			}
    			if (i==0)
    			{
    				temp=a[i];
    			}
    
    		}
    		if (num<n&&num>=1||num==n&&n&1)
    		{
    				cout<<"YES"<<endl;
    		}
    		else
    				cout<<"NO"<<endl;
    	}
    	return 0;
    }
    


    链接

    每次不花个位数上的钱就可以
    
    #include<bits/stdc++.h>
    
    using namespace std;
    typedef long long ll;
    
    
    
    int main(int argc, char const *argv[])
    {
    	int T;
    	ios::sync_with_stdio(false);
    	cin>>T;
    	while(T--)
    	{
    		int n;
    		cin>>n;
    		ll ans = 0;
    		int temp = n;
    		int k = 1;
    		int t = 1;
    		while(n>=10)
    		{
    			ans += (n/10)*10; //花更多
    			n = n-(n/10)*10+n/10;
    
    		}
    		ans += n;
    		cout<<ans<<endl;
    	}
    	return 0;
    }
    


    链接

    消除一段而不影响终点,相当于删除的这一段走的其实是一个圈
    建立map映射点和这段序列的下标即可
    
    #include<bits/stdc++.h>
    
    using namespace std;
    
    const int N = 2e5+10;
    
    char a[N];
    
    map<pair<int,int>,int> mp;
     
    
    int main(int argc, char const *argv[])
    {
    	int T;
    	cin>>T;
    	while(T--)
    	{
    		int n = 0;
    		cin>>n;
    		cin>>a;
    		int ansl=0,ansr=0;
    		int t=0,m=1e9+10;
    		mp.clear();
    		pair<int,int> temp;
    		//mp[temp]=1;
    		for (int i = 0; i < n; ++i)
    		{
    			if (a[i]=='L')
    			{
    				temp.first -= 1;
    			}
    			if (a[i]=='R')
    			{
    				temp.first = temp.first+1;
    			}
    			if (a[i]=='U')
    			{
    				temp.second = temp.second+1;
    			}
    			if (a[i]=='D')
    			{
    				temp.second =temp.second- 1;
    			}
    			//cout<<temp.first<<" "<<temp.second<<endl;
    			if (mp[temp]>0&&i+1-mp[temp]<m||temp==make_pair(0,0)&&i+1-mp[temp]<m)
    			{
    				ansl = mp[temp]+1;
    				ansr = i+1;
    				m = i+1-mp[temp];
    			}
    			mp[temp]=i+1;
    
    		}
    		if (m<1e9+10)
    		{
    			cout<<ansl<<" "<<ansr<<endl;
    		}
    		else
    			cout<<"-1"<<endl;
    	}
    	return 0;
    }
    
    


    链接

    预处理所有妖怪的生命值,算出所需要的跳过的次数,排序后遍历即可
    
    #include<bits/stdc++.h>
    
    using namespace std;
    typedef long long ll;
    
    const int N = 2e5+10;
    
    int hp[N] = {0};
    vector<int > v;
    int main(int argc, char const *argv[])
    {
    	
    	ios::sync_with_stdio(false);
    	int n,a,b,k;
    	ll ans = 0;
    	cin>>n>>a>>b>>k;
    	for (int i = 0; i < n; ++i)
    	{
    		cin>>hp[i];
    	}
    	for (int i = 0; i < n; ++i)
    	{
    		if (hp[i]%(a+b)>0&&hp[i]%(a+b)<=a)
    		{
    			ans++;
    		}
    		else if(hp[i]%(a+b)==0)
    		{
    			int gap = b;
    			if (gap%a==0)
    			{
    				v.push_back(gap/a);
    			}
    			else 
    				v.push_back(b/a+1);
    
    		}
    		else 
    		{
    			int temp = (hp[i]%(a+b)-a);
    			if (temp%a==0)
    			{
    				v.push_back(temp/a);
    			}
    			else
    				v.push_back(temp/a+1);
    		}
    	}
    	sort(v.begin(),v.end());
    	for (int i = 0; i < v.size(); ++i)
    	{
    		k-=v[i];
    		if (k>=0)
    		{
    			ans++;
    		}
    		else
    			break;
    	}
    	cout<<ans<<endl;
    	return 0;
    
    }
    
  • 相关阅读:
    两个python程序搞定NCBI数据搜索并将结果保存到excel里面
    在notepad++上如何配置Python C 以及 java
    初识pandas
    关于搜索全部文件和修改文件名的方法os.walk() 和os.listdir
    C算法--指针与函数参数
    C算法--指针与数组
    C算法--指针1
    C算法--函数
    C算法--string.h头文件
    C算法--字符数组
  • 原文地址:https://www.cnblogs.com/Crossea/p/12287446.html
Copyright © 2020-2023  润新知