zoukankan      html  css  js  c++  java
  • CF1217

    (color{red}{A}color{yellow}{C}color{blue}{r}color{green}{e}color{pink}{a}color{orange}{t}color{purple}{i}color{grey}{n}color{red}{g}color{brown}{a}color{golden}{C}color{yellow}{h}color{silver}{a}color{light blue}{r}color{pea green}{a}color{moon blue}{c}color{doe}{t}color{puce}{e}color{red}{r})

    代码

    #include<bits/stdc++.h>
    #define int long long
    using namespace std;
    signed main(){
    	int T ;
    	cin >> T ;
    	while(T--) {
    		int n , m , k ;
    		cin >> n >> m >> k ;
    		if (k == 0) {
    			if(n > m)
    				puts("1") ;
    			else 
    				puts("0") ;
    			continue;
    		}
    		if(m + k - n < 0 ) {
    			cout << k+1 << endl ;
    			continue;
    		}
    		int A = min(k+1,(k+1)-max(0ll,((m+k-n)/2+1))) ;
    		if ( A < 0 ) 
    			A = 0;
    		cout << A << endl ; 
    	}
    	return 0;
    } 
    

    (color{green}{B Zmei Gorynich})

    思路 :

    记录最大伤害值和最大真实伤害值,判断一次打死和最后一次全血打死的情况

    代码

    #include <bits/stdc++.h>
    #define int long long 
    using namespace std ;
    int T , n , m ;
    signed main () {
    	cin >> T ;
    	while(T --) {
    		cin >> n >> m ;
    		int attack = - 9999999999 ;
    		int rest = -9999999999 ;
    		for(int i = 1 ; i <= n ; i ++) {
    			int x  , y ;
    			cin >> x >> y ;
    			attack = max(x,attack) ;
    			rest = max(rest,x-y) ;
    		}
    		if(attack >= m) puts("1") ;
    		else if(rest <= 0) puts("-1") ;
    		else {
    			int ans = 0 ;
    			ans += (m-attack) / rest ;
    			if(ans*rest < m - attack) ans += 2 ;
    			else ans ++ ;	
    			cout << ans << endl ;
    		}
    		
    	}
    	return 0 ;
    }
    
    

    (color{blue}{C The Number Of Good Substrings})

    思路 :

    容易发现,一段区间中,第一个1之前的零都是没什么用的,所以,我们可以在读入的时候进行处理,每次读到一个一的时候,就处理这一小段区间
    并找出这个区间之前零的个数(区间第一个一之前的零可以充当白给小队来凑数),然后以这个一为首(准确的说是以这个一以及之前的零为首)
    到结尾枚举区间,如果区间长度+0的个数>=十进制数,那么就加一(因为前面白给的0可以加上也可以不加)

    代码

    #include <bits/stdc++.h>
    #define maxn 250000
    using namespace std ;
    int T;
    string s ;
    int main () {
    	cin >> T ;
    	while(T --) {
    		cin >> s ;
    		int ans = 0 ;
    		for(int i = 0 ; i < s.size() ; i ++) {
    			if(s[i] == '0') continue ;
    			int z = 0 ;
    			for(int j = i-1 ; j >= 0 ; j --) {
    				if(s[j] == '0') z ++ ;
    				else break ;
    			}
    			int val = 0 ;
    			for(int j = i ; j < s.size() ; j ++) {
    				val = val * 2 + (s[j]-'0') ;
    				if(j-i+1+z >= val && val >= j-i+1) {
    					ans ++ ;
    				}
    				if(val > s.size() ) break ;
    			}
    		}
    		cout << ans << endl ;
    	}
    	return 0 ;
    }
    

    (color{brown}{DColoring Edges})

    
    #include <bits/stdc++.h>
    #define maxn 5010
    using namespace std ;
    int n , m ;
    vector<int>v[maxn] ;
    vector<int>vis(5010);
    vector<pair<int,int> > T , A ;
    void dfs(int a ,int p) ;
    signed main () {
    	cin >> n >> m ;
    //	cout << n << " " << m ;
           for (int i = 0; i < m; i ++) {
           		int x , y ;
                	cin >> x >> y ;
                	A.push_back({x,y});
              	v[x].push_back(y);
            }
    
            for (int i = 1; i <= n; i++){
    //        	puts("*") ;
                if (vis[i] == 0)
    //            puts("*") ;
                    dfs(i,-1) ;
            }
    
    	if(T.size()==0) {
    		puts("1") ;
    		for(int i = 0 ; i < m ; i ++) {
    			cout << 1 << " " ;
    		}
    		return 0 ;
    	}
    	puts("2") ;
    	for(int i = 0 ; i < m ; i ++) {
    		if(find(T.begin(),T.end(),A[i])!=T.end()) {
    			cout << 2 << " " ;
    		}else {
    			cout << 1 << " "; 
    		}
    	}
    	return 0 ;
    }
    void dfs(int a, int p){
      vis[a] = 1;  
      for(int j=0;j<v[a].size();j++){
        if(vis[v[a][j]] == 1){
          T.push_back({a,v[a][j]});
        }
        if(vis[v[a][j]] == 0) dfs(v[a][j], a);
      }
      vis[a] = 2;  
    }
    
    
    
  • 相关阅读:
    win 程序开机自启动设置
    火柴:电脑效率工具
    全新思维导图 XMind ZEN v10.0.0 中文破解版
    Linux 上 10 个最好的 Markdown 编辑器
    iobit-unlocker --- 类似 Unlocker 工具,强制删除文件或文件夹
    EV录屏 --- 免费无水印,集视频录制与直播功能于一身的桌面录屏软件, 支持录屏涂鸦、实时按键显示、视频体积压缩等实用功能
    办公书籍推荐
    喝水计算器
    Linux find命令忽略目录的查找方法
    重装系统之前需要做的checklist
  • 原文地址:https://www.cnblogs.com/lyt020321/p/11477715.html
Copyright © 2011-2022 走看看