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;

}
posted @ 2020-03-22 10:46  dsrcis  阅读(126)  评论(0编辑  收藏  举报