zoukankan      html  css  js  c++  java
  • 3.22

    原题链接

    题外话

    今天的题,极大地打击了我,一开始的思路被自己hack之后,就完全没思路了
    TAT

    题意

    n个人,每个人有一个有颜色的帽子~有可能是绿色(滑稽)~,然后他们知道有多少人和自己帽子颜色不同,设为ai(他们知道的有可能不对),询问如果每个ai都能满足输出Possible(有解就行)否则就是Impossible

    思路

    网上的思路都是倒着想,就是n-ai,的想法, 然后通过看ai 和 n-ai的关系来判断

    • 同一个ai的个数==n-ai,那么是符合的
    • 同一个ai的个数<n-ai, 一定不符合
    • 同一个ai的个数>n-ai
      • 我们通过 2 2 2 2,这个例子发现, 如果同一个ai的个数是(n-a[i])的倍数也是可以满足的所以
        • 同一个ai的个数%(n-a【i】)==0 ,可以
        • 否则不行

    代码

    ///*
    //正在播放《フリージア》
    //1:21  ━━━━━━●─────   5:35
    //   ?   ?   ??   ?   ?
    //```````'`...```````''`````````````'````````````````'`.`''
    //```````''..`';;'```''```'''''''''''''`````````````````'':
    //.````''''':;;!!:````'````'''''''''''``````````````````'':
    //``''''''':;;;;;'```'``````''```````````____________```'':
    //`````````:;;!;'```````````'```````'```|   所以说   |'``'':
    //```````'|$&$%:````````````'```````````|不要停下来啊|''''':
    //````'''!$&&&|'```````````'''::''::''''/ (指AC)  |':'':::
    //````'':|&&&$!'`````'''''''::.....`;!;'/_________|''``'::
    //  ....'|&&@$!'........```:!;'....`:;:```````````````````'
    //..````;$&&&$!:''``````'':|%%!::;|%$$!::::::::''::::::::::
    //``````!&&@&&|:'````````':|$$$$$$$$$|:':::::::::::::::::::
    //`````:%&@@@@@@@@&&&@@@@&&&&@@@@@@@&&&|::::::::':::::::::;
    //`````.```':|$@@@@@@@@@@@@@@@@@@@@@@@@###@@&&$|;:::'::::::
    //````````````';|$&@@@@@@@@@###@@@@@@########@@@@$!''''::::
    //`````````..````:|%$@@@@@#########@#########@@@@&!''''::::
    //`````````````````:|&########################@@@$;::::::::
    //``````````````````:!$@########################@%;:::'::::
    //``````````..``````':|&#######################@@&!''''''::
    //''''::'''`.`''''''':|@#######################@@&|:'`.`';!
    //:::::::::``'''''';%@######################@@##@@&!::'';;;
    //::;::::::`.''''';%@@@@####################$%@##@@%;:'':;!
    //:;;;;::::``':;%@@@#########################&%&##@@|:'';;!
    //;;!;;;;;;'`::;%@#############################@@##@$!'';!!
    //;;;;;;;;:``':::::;|$@############################@$!'`;!!
    //::;;;;;;:'`'::::::;!$@#######################&&@$$$;``:;;
    //`````````..````````'|@#####################$;!$$$&@@|''':
    //'''''''''''''':'''''|@#########@&@##########@@####@@&%|!!
    //''''''''':'''::'':''!&########&!|&@##########&&####&%|!||
    //:::::'''::::::::::::!&########|:;|$@#########@&###&%||||!
    //:::::::'''''':::::::!&#######@!:;!!$@########@$&##@%||||!
    //
    //                    だからよ...止まるじゃねえぞ
    // */
    
    
    
    
    #include <vector>
    #include <algorithm>
    #include <string>
    #include<cstring>
    #include <iostream>
    #include <set>
    #include <map>
    #include <stack>
    #include <queue>
    #include <unordered_map>
    #include <bitset>
    #include <cassert>
    #include <chrono>
    #include <random>
    #include <iomanip>
    #include <unordered_set>
    #include <ctime>
    #include <chrono>
    using namespace std;
    // #define  ll long long
    const int N =1e6+10;
    #define PII pair<int , int > 
    #define all(x) (x).begin(),(x).end()
    #define rall(x) (x).rbegin(),(x).rend()
    #define pb push_back
    #define sz(x) (int)(x).size()
    typedef long long ll;
    typedef long double ld;
    mt19937 rnd(chrono::high_resolution_clock::now().time_since_epoch().count());
    int n , m ,t ;
    
    #define __i __int128
    //ll mod = 1e9+7;
    
    string manacher(string s){
    	if(s.size()<2)return s;
    	string t ;t+='$';
    	for(int i=0;i<s.size();i++)
    		t +='#'+s[i];
    	t+='@';
    	int num = t.size();
    	int p[num];
    	int id =0 , mx= 0;
    	int maxl = -1;
    	int index =0;
    	for(int j=1 ;j<num-1;j++){
    		p[j] = mx>j?min(p[2*id-j],mx - j):1;
    		while(t[j+p[j]]==t[j-p[j]])p[j]++;
    		if(mx<p[j]+j){
    			mx = p[j]+j;
    			id = j;
    		}
    		if(maxl < p[j]+ 1){
    			maxl = p[j]-1 ;
    			index = j;
    		}
    	}
    	int start = (index - maxl)/2;
    	//cout <<start<<endl;
    	return s.substr(start ,start+maxl);
    	
    }
    int ar[100010];int br[100010];
    vector<int >v[100010];
    int main(){
        ios::sync_with_stdio(0);
        cin.tie(0), cout.tie(0);
    	cin>>n;int cnt =0 ;int sum =0;
    	
    	for(int i=0 ;i<n;i++){
    		 cin >>ar[i];
    		 v[n-ar[i]].push_back(i);
    }	
    int num = 1 ;
    	for(int i=1;i<=n;i++){
    		if(v[i].size()%i  )return cout<<"Impossible"<<endl,0 ;
    		
    		for(int j = 0;j<v[i].size();j++){
    			br[v[i][j]] = num ;
    			if((j+1)%i==0)num ++ ;
    		}
    	}
    cout<<"Possible"<<endl;
    for(int i=0;i<n;i++)cout<<br[i]<<" ";cout<<endl;
    	
        return 0;
    
    }
    
  • 相关阅读:
    boost::asio在VS2008下的编译错误
    Java集合框架——接口
    ACM POJ 3981 字符串替换(简单题)
    ACM HDU 1042 N!(高精度计算阶乘)
    OneTwoThree (Uva)
    ACM POJ 3979 分数加减法(水题)
    ACM HDU 4004 The Frog's Games(2011ACM大连赛区第四题)
    Hexadecimal View (2011ACM亚洲大连赛区现场赛D题)
    ACM HDU 4002 Find the maximum(2011年大连赛区网络赛第二题)
    ACM HDU 4001 To Miss Our Children Time (2011ACM大连赛区网络赛)
  • 原文地址:https://www.cnblogs.com/gaohaoy/p/12544432.html
Copyright © 2011-2022 走看看