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;
    
    }
    
  • 相关阅读:
    Qt学习笔记12:基本会话框4——总结
    Python游戏-实现键盘控制功能
    Unity c# 状态机的简单入门
    Unity3D windows平台视频录制录屏插件 UnityRecorder
    kubeadm安装Kubernetes13.1集群-三
    windows server安装zabbix-agent
    teamviewer被识别为商业用途
    Linux入侵检测工具
    k8s-StatefulSet控制器-十四
    k8s-存储卷2-configMap-Secret-十三
  • 原文地址:https://www.cnblogs.com/gaohaoy/p/12544432.html
Copyright © 2011-2022 走看看