//好想做嘉然小姐的狗啊~ #pragma GCC optimize(3) #pragma GCC target("avx") #pragma GCC optimize("unroll-loops") #pragma GCC optimize("Ofast") #pragma GCC optimize(2) #include<bits/stdc++.h> #define IOS ios::sync_with_stdio(false) #define ll long long #define mp make_pair #define pa pair < int,int > #define fi first #define se second #define inf 1e18 #define mod 998244353 //#define int ll #define N 3005 #define B N*N*2 using namespace std; inline char gc(){static char buf[1<<20],*p1=buf,*p2=buf;return p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<20,stdin),p1==p2)?EOF:*p1++;} // #define gc getchar inline ll read(){char c=gc();ll su=0,f=1;for (;c<'0'||c>'9';c=gc()) if (c=='-') f=-1;for (;c>='0'&&c<='9';c=gc()) su=su*10+c-'0';return su*f;} inline void write(ll x){if (x<0){putchar('-');write(-x);return;}if (x>=10) write(x/10);putchar(x%10+'0');} inline void writesp(ll x){write(x),putchar(' ');} inline void writeln(ll x){write(x);putchar('\n');} int id[N][N],a[N][N],cnt; int n,m; int eg; int sm[N<<1][27]; int inq[N<<1]; unsigned long long v[N<<1],Val[N<<1]; int ans; queue<int>q; int tot; mt19937_64 rnd(time(0)); inline int chk(int x) { for (int i=0;i<26;i++) if (sm[x][26]==sm[x][i]) return 1; return 0; } void What_will_Diana_eat_today() { cin>>n>>m; for (int i=1;i<=n;i++) { for (int j=1;j<=m;j++) { char ch; cin>>ch; a[i][j]=ch-'A'; sm[i][26]++; sm[n+j][26]++; sm[i][a[i][j]]++; sm[n+j][a[i][j]]++; } } for (int i=1;i<=n+m;i++) if (chk(i)) inq[i]=1,q.push(i); vector<pa>ans; while (!q.empty()) { int u=q.front(); q.pop(); for (int i=0;i<26;i++) if (sm[u][i]) ans.push_back(mp(u,i)); for (int i=0;i<26;i++) sm[u][i]=0;sm[u][26]=0; if (u<=n) { for (int j=1;j<=m;j++) { if (!inq[n+j]) { sm[n+j][a[u][j]]--; sm[n+j][26]--; if (chk(n+j)) inq[n+j]=1,q.push(n+j); } } } else { for (int j=1;j<=n;j++) { if (!inq[j]) { sm[j][a[j][u-n]]--; sm[j][26]--; if (chk(j)) inq[j]=1,q.push(j); } } } } reverse(ans.begin(),ans.end()); cout<<ans.size()<<'\n'; for (auto [x,y]:ans) { if (x<=n) { cout<<"R "<<x<<" "<<char('A'+y)<<'\n'; } else cout<<"K "<<x-n<<" "<<char('A'+y)<<'\n'; } } signed main() { IOS;cin.tie(0); int T=1; while (T--) { What_will_Diana_eat_today(); } } /* */
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 | //好想做嘉然小姐的狗啊~ #pragma GCC optimize(3) #pragma GCC target("avx") #pragma GCC optimize("unroll-loops") #pragma GCC optimize("Ofast") #pragma GCC optimize(2) #include<bits/stdc++.h> #define IOS ios::sync_with_stdio(false) #define ll long long #define mp make_pair #define pa pair < int,int > #define fi first #define se second #define inf 1e18 #define mod 998244353 //#define int ll #define N 3005 #define B N*N*2 using namespace std; inline char gc(){static char buf[1<<20],*p1=buf,*p2=buf;return p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<20,stdin),p1==p2)?EOF:*p1++;} // #define gc getchar inline ll read(){char c=gc();ll su=0,f=1;for (;c<'0'||c>'9';c=gc()) if (c=='-') f=-1;for (;c>='0'&&c<='9';c=gc()) su=su*10+c-'0';return su*f;} inline void write(ll x){if (x<0){putchar('-');write(-x);return;}if (x>=10) write(x/10);putchar(x%10+'0');} inline void writesp(ll x){write(x),putchar(' ');} inline void writeln(ll x){write(x);putchar('\n');} int id[N][N],a[N][N],cnt; int n,m; int eg; int sm[N<<1][27]; int inq[N<<1]; unsigned long long v[N<<1],Val[N<<1]; int ans; queue<int>q; int tot; mt19937_64 rnd(time(0)); inline int chk(int x) { for (int i=0;i<26;i++) if (sm[x][26]==sm[x][i]) return 1; return 0; } void What_will_Diana_eat_today() { cin>>n>>m; for (int i=1;i<=n;i++) { for (int j=1;j<=m;j++) { char ch; cin>>ch; a[i][j]=ch-'A'; sm[i][26]++; sm[n+j][26]++; sm[i][a[i][j]]++; sm[n+j][a[i][j]]++; } } for (int i=1;i<=n+m;i++) if (chk(i)) inq[i]=1,q.push(i); vector<pa>ans; while (!q.empty()) { int u=q.front(); q.pop(); for (int i=0;i<26;i++) if (sm[u][i]) ans.push_back(mp(u,i)); for (int i=0;i<26;i++) sm[u][i]=0;sm[u][26]=0; if (u<=n) { for (int j=1;j<=m;j++) { if (!inq[n+j]) { sm[n+j][a[u][j]]--; sm[n+j][26]--; if (chk(n+j)) inq[n+j]=1,q.push(n+j); } } } else { for (int j=1;j<=n;j++) { if (!inq[j]) { sm[j][a[j][u-n]]--; sm[j][26]--; if (chk(j)) inq[j]=1,q.push(j); } } } } reverse(ans.begin(),ans.end()); cout<<ans.size()<<'\n'; for (auto [x,y]:ans) { if (x<=n) { cout<<"R "<<x<<" "<<char('A'+y)<<'\n'; } else cout<<"K "<<x-n<<" "<<char('A'+y)<<'\n'; } } signed main() { IOS;cin.tie(0); int T=1; while (T--) { What_will_Diana_eat_today(); } } /* */ |