A
签到题,考虑到数据范围很小直接枚举1,2,3分别取多少个就做完了
1 #define IO std::ios::sync_with_stdio(false); 2 #define bug(x) cout<<<" "< 4 #define itor ::iterator 5 using namespace std; 6 #define pb push_back 7 typedef long long ll; 8 typedef double db; 9 const int N=1e6+10;10 int T,n,m,kase;11 int a[10],vis[100];12 int main(){13 scanf("%d",&T);14 while(T--){15 scanf("%d%d",&kase,&n);16 for(int i=1;i<=3;i++)a[i]=0;17 for(int i=1;i<=10;i++){18 int x;19 scanf("%d",&x);20 a[x]++;21 }22 int flag=0;23 for(int i=0;i<=a[1];i++){24 for(int j=0;j<=a[2];j++){25 for(int k=0;k<=a[3];k++){26 int res=i+j*2+k*3;27 if(res==n){28 flag=1;29 break;30 }31 }32 }33 }34 printf("%d ",kase);35 if(flag)printf("YES\n");36 else printf("NO\n");37 }38 }
B
首先对于这种很有可能是找规律的题,我们可以不去想dp啊
遇事不对先打表!
1 #define IO std::ios::sync_with_stdio(false); 2 #define bug(x) cout<<<" "< 4 #define itor ::iterator 5 using namespace std; 6 #define pb push_back 7 typedef long long ll; 8 typedef double db; 9 const int N=1e6+10;10 int vis[100][2],k;11 int ans=0;12 int check(int x,int y){13 if(x<1||y<1||y>2)return 0;14 return 1;15 }16 int dx[10]={ 0,0,1,-1};17 int dy[10]={ 1,-1,0,0};18 void dfs(int x,int y,int h){19 if(h==k){20 ans++;21 return;22 }23 for(int i=0;i<4;i++){24 int x1=x+dx[i];25 int y1=y+dy[i];26 if(check(x1,y1)&&!vis[x1][y1]){27 vis[x1][y1]=1;28 dfs(x1,y1,h+1);29 vis[x1][y1]=0;30 }31 }32 }33 int main(){34 for(int i=1;i<=20;i++){35 memset(vis,0,sizeof(vis));36 ans=0;37 k=i;38 vis[1][1]=1;39 dfs(1,1,0);40 printf("i=%d: %d\n",i,ans);41 }42 }
dfs打表发现答案跟是前两项之和然后和奇偶性也有关,
然后这个题就很水了。。。
#define IO std::ios::sync_with_stdio(false);#define bug(x) cout<<<" "< #define itor ::iteratorusing namespace std;#define pb push_backtypedef long long ll;typedef double db;const int N=1e6+10;int T,k,n,mod=1e4+7;int a[10005];void init(){ a[1]=2,a[2]=3; for(int i=3;i<=1000;i++){ if(i%2){ a[i]=(a[i-1]+a[i-2]+1)%mod; } else a[i]=(a[i-1]+a[i-2])%mod; }}int main(){ init(); scanf("%d",&T); while(T--){ scanf("%d%d",&k,&n); printf("%d %d\n",k,a[n]); }}
E
有点恶心的题。。竟然没A出来
显然我们可以枚举正确时间,然后再拿时钟时间和误差时间去配对
配对我们可以排序然后一直扫一遍,注意输入输出的各种细节即可
#define IO std::ios::sync_with_stdio(false);#define bug(x) cout<<<" "< #define itor ::iteratorusing namespace std;#define pb push_backtypedef long long ll;typedef double db;const int N=1e3+10;int T,n,m,kase;int mod=720;int a[20],b[20],vis[20],d[20];char s[100];int main(){ scanf("%d",&T); while(T--){ scanf("%d%d",&kase,&n); for(int i=1;i<=n;i++){ int x,y; scanf("%d:%d",&x,&y); x%=12; x=x*60+y; a[i]=x; } for(int i=1;i<=n;i++){ scanf("%s",s); int len=strlen(s); int k=0; if(s[0]=='+')k++; int x=0,y=0,id; for(int j=1;;j++){ if(s[j]==':'){ id=j; break; } x=x*10+s[j]-48; } x%=12; for(int j=id+1;j 1)printf("%d\n",ans); else if(ans==0)printf("none\n"); else{ int x=t/60,y=t%60; if(x==0)printf("12:%02d\n",y); else printf("%d:%02d\n",x,y); } }}
G
这题不会写,看网友大佬题解看懂的
传送门: