Atcoder ABC335 A-D题解

比赛链接:ABC335

Problem A:

签到题。我签签签签——

#include 
using namespace std;
int main(){
	string str;
	cin>>str;
	str[str.size()]='4';
	cout<

Problem B:

又双叒叕是签到题。于是我签签签签——

#include 
using namespace std;
int main(){
	int n;
	cin>>n;
	for(int x=0;x<=n;x++){
		for(int y=0;x+y<=n;y++){
			for(int z=0;x+y+z<=n;z++)
				cout<

Problem D:

注:先讲D是因为C>D(个人向)。

水题。就是打印螺旋矩阵。

#include 
using namespace std;
int grid[50][50];
int main(){
	int n;
	cin>>n;
    int r=0,c=0;
    int num=1;
    int tmp=n;
    grid[0][0]=num;
    for(int i=0;i<(n-1)/2;i++){
        for(;ci;c--)
            grid[r][c]=num++;
        for(r=tmp-1;r>i;r--)
            grid[r][c]=num++;
        tmp--;
        r++;
        num--;
    }
    for(int i=0;i

Problem C:

这题有一点点难度(也许是我太菜,我赛时TLE了,悲)。在网上康到了一种新奇思路,就是龙每动一下,就加一个头,砍掉一截尾巴。然后龙用deque维护。代码如下:

#include 
using namespace std;
deque> dragon;
int main(){
	int n,q;
    cin>>n>>q;
    for(int i=1;i<=n;i++)
		dragon.push_back({i,0});
    while(q--){
    	int op;
    	cin>>op;
    	if(op==1){
    		char c;
    		cin>>c;
    		int x=dragon.front().first;
			int y=dragon.front().second;
    		if(c=='R')
				x++;
    		if(c=='L')
				x--;
    		if(c=='U')
				y++;
    		if(c=='D')
				y--;
    		dragon.push_front({x,y});
    		dragon.pop_back();
		}
		else{
			int p;
			cin>>p;
			cout<

你问为什么只有A-D的题解?嘿,这还不简单,我只会A-D呗

友情提醒:本期所有的代码都有问题,所以请不要无脑Ctrl C+Ctrl V

以上就是本期的全部内容了,下期更新Atcoder ABC336 A-D题解。

你可能感兴趣的:(题解,其他)